<?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>150792</bug_id>
          
          <creation_ts>2015-11-01 23:04:28 -0800</creation_ts>
          <short_desc>[ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature</short_desc>
          <delta_ts>2015-12-02 02:39:25 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151500</dependson>
    
    <dependson>151734</dependson>
          <blocked>150290</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138475</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-01 23:04:28 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140195</commentid>
    <comment_count>1</comment_count>
      <attachid>265004</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-07 11:32:03 -0800</bug_when>
    <thetext>Created attachment 265004
Patch

WIP: Just add necessary stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140254</commentid>
    <comment_count>2</comment_count>
      <attachid>265015</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-08 04:23:26 -0800</bug_when>
    <thetext>Created attachment 265015
Patch

WIP: part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140259</commentid>
    <comment_count>3</comment_count>
      <attachid>265017</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-08 07:13:46 -0800</bug_when>
    <thetext>Created attachment 265017
Patch

WIP: part 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140262</commentid>
    <comment_count>4</comment_count>
      <attachid>265018</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-08 07:58:26 -0800</bug_when>
    <thetext>Created attachment 265018
Patch

WIP: part 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140269</commentid>
    <comment_count>5</comment_count>
      <attachid>265020</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-08 10:43:37 -0800</bug_when>
    <thetext>Created attachment 265020
Patch

WIP: part 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140414</commentid>
    <comment_count>6</comment_count>
      <attachid>265069</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-09 10:22:27 -0800</bug_when>
    <thetext>Created attachment 265069
Patch

WIP: part 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141158</commentid>
    <comment_count>7</comment_count>
      <attachid>265306</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-11 10:48:18 -0800</bug_when>
    <thetext>Created attachment 265306
Patch

WIP: part 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141175</commentid>
    <comment_count>8</comment_count>
      <attachid>265310</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-11 11:22:27 -0800</bug_when>
    <thetext>Created attachment 265310
Patch

WIP: part 8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141177</commentid>
    <comment_count>9</comment_count>
      <attachid>265310</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-11 11:33:01 -0800</bug_when>
    <thetext>Comment on attachment 265310
Patch

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

For MTG discussion, I left some notes :) This patch is still highly development phase.

&gt; Source/JavaScriptCore/runtime/GeneratorState.h:33
&gt; +class GeneratorState : public JSCell {

This should store the current Frame.
I&apos;m still considering which is the best; storing Frame into a generator object directly OR allocating this separately like this.
As a first step, I&apos;m now implementing naive approach. But later, I&apos;ll figure out which design is better, may change the patch and submit it for reviews.

&gt; Source/JavaScriptCore/runtime/GeneratorState.h:50
&gt; +        return bitwise_cast&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(bitwise_cast&lt;char*&gt;(this) + offsetOfVariables());

I&apos;m now planning to store registers as WriteBarrierBase&lt;Unknown&gt;.
So when doing this in FTL / DFG, we need to unbox. Value recovery information would help it.
Storing this as JSValue makes two things easy. (1) when storing, we correctly activate write barriers. (2) visitChildren easily marks all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141895</commentid>
    <comment_count>10</comment_count>
      <attachid>265486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-13 11:46:04 -0800</bug_when>
    <thetext>Created attachment 265486
Patch

WIP: part 9. super naive prototype. there are many bugs, missing parts and inefficient parts. but small example works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141909</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-13 12:44:56 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created attachment 265486 [details]
&gt; Patch
&gt; 
&gt; WIP: part 9. super naive prototype. there are many bugs, missing parts and
&gt; inefficient parts. but small example works.

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142046</commentid>
    <comment_count>12</comment_count>
      <attachid>265539</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-14 04:02:13 -0800</bug_when>
    <thetext>Created attachment 265539
Patch

WIP: part 10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142056</commentid>
    <comment_count>13</comment_count>
      <attachid>265545</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-14 11:05:30 -0800</bug_when>
    <thetext>Created attachment 265545
Patch

WIP: part 11, return/throw support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142106</commentid>
    <comment_count>14</comment_count>
      <attachid>265558</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-14 23:17:09 -0800</bug_when>
    <thetext>Created attachment 265558
Patch

WIP: part 12, test enable part 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142220</commentid>
    <comment_count>15</comment_count>
      <attachid>265583</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-16 04:47:34 -0800</bug_when>
    <thetext>Created attachment 265583
Patch

WIP: part 13, almost all compat-table tests are passed. still several edge cases are not covered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142556</commentid>
    <comment_count>16</comment_count>
      <attachid>265681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-17 10:47:13 -0800</bug_when>
    <thetext>Created attachment 265681
Patch

WIP: part 14. Add new_generator_func etc. bytecodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142582</commentid>
    <comment_count>17</comment_count>
      <attachid>265686</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-17 11:43:06 -0800</bug_when>
    <thetext>Created attachment 265686
Patch

WIP: part 15. Support throw/return before first calls. Add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143415</commentid>
    <comment_count>18</comment_count>
      <attachid>265895</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-19 13:40:59 -0800</bug_when>
    <thetext>Created attachment 265895
Patch

WIP: part 16. Except for correct &apos;super&apos; reference, all the functionality is implemented. Code cleanup, some optimization is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143644</commentid>
    <comment_count>19</comment_count>
      <attachid>265954</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-20 07:45:12 -0800</bug_when>
    <thetext>Created attachment 265954
Patch

WIP: part 17. Correctly handle incorrect js values in stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144032</commentid>
    <comment_count>20</comment_count>
      <attachid>266054</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 05:23:12 -0800</bug_when>
    <thetext>Created attachment 266054
Patch

WIP: part 18. Correctly handle eval(&apos;this&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144049</commentid>
    <comment_count>21</comment_count>
      <attachid>266056</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 10:36:20 -0800</bug_when>
    <thetext>Created attachment 266056
Patch

WIP: part 19. Done, let&apos;s tweak OSX and Windows project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144050</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 10:37:47 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Created attachment 265486 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; WIP: part 9. super naive prototype. there are many bugs, missing parts and
&gt; &gt; inefficient parts. but small example works.
&gt; 
&gt; 👍

:D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144066</commentid>
    <comment_count>23</comment_count>
      <attachid>266059</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 11:32:35 -0800</bug_when>
    <thetext>Created attachment 266059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144067</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 11:34:07 -0800</bug_when>
    <thetext>Attachment 266059 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:23:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:25:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:26:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:27:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:29:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:30:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:32:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:33:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:34:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:36:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:37:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:38:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:39:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:40:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:43:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:44:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:46:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:47:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:48:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:50:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:52:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:54:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:55:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:56:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:58:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:59:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:60:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:61:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:62:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:63:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:64:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:65:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:66:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:68:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:69:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:70:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:71:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:72:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:74:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:75:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 47 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144068</commentid>
    <comment_count>25</comment_count>
      <attachid>266060</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 11:40:08 -0800</bug_when>
    <thetext>Created attachment 266060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144069</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 11:43:16 -0800</bug_when>
    <thetext>Attachment 266060 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:23:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:25:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:26:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:27:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:29:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:30:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:32:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:33:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:34:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:36:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:37:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:38:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:39:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:40:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:43:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:44:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:46:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:47:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:48:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:50:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:52:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:54:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:55:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:56:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:58:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:59:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:60:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:61:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:62:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:63:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:64:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:65:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:66:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:68:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:69:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:70:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:71:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:72:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:74:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:75:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 46 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144076</commentid>
    <comment_count>27</comment_count>
      <attachid>266060</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:44:16 -0800</bug_when>
    <thetext>Comment on attachment 266060
Patch

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

New failing tests:
js/dom/reserved-words-as-property.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144077</commentid>
    <comment_count>28</comment_count>
      <attachid>266063</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:44:20 -0800</bug_when>
    <thetext>Created attachment 266063
Archive of layout-test-results from ews103 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews103  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144078</commentid>
    <comment_count>29</comment_count>
      <attachid>266060</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:46:05 -0800</bug_when>
    <thetext>Comment on attachment 266060
Patch

Attachment 266060 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/464494

New failing tests:
js/dom/reserved-words-as-property.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144079</commentid>
    <comment_count>30</comment_count>
      <attachid>266064</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:46:09 -0800</bug_when>
    <thetext>Created attachment 266064
Archive of layout-test-results from ews114 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144080</commentid>
    <comment_count>31</comment_count>
      <attachid>266060</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:48:40 -0800</bug_when>
    <thetext>Comment on attachment 266060
Patch

Attachment 266060 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/464500

New failing tests:
js/dom/reserved-words-as-property.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144081</commentid>
    <comment_count>32</comment_count>
      <attachid>266065</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-11-22 12:48:43 -0800</bug_when>
    <thetext>Created attachment 266065
Archive of layout-test-results from ews105 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews105  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144083</commentid>
    <comment_count>33</comment_count>
      <attachid>266066</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 13:16:26 -0800</bug_when>
    <thetext>Created attachment 266066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144084</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 13:18:43 -0800</bug_when>
    <thetext>Attachment 266066 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144113</commentid>
    <comment_count>35</comment_count>
      <attachid>266066</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 18:18:39 -0800</bug_when>
    <thetext>Comment on attachment 266066
Patch

I&apos;ll move more ops to Generator.prototype side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144118</commentid>
    <comment_count>36</comment_count>
      <attachid>266076</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 21:47:03 -0800</bug_when>
    <thetext>Created attachment 266076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144119</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 21:48:53 -0800</bug_when>
    <thetext>Attachment 266076 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144120</commentid>
    <comment_count>38</comment_count>
      <attachid>266077</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 22:15:40 -0800</bug_when>
    <thetext>Created attachment 266077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144121</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 22:18:31 -0800</bug_when>
    <thetext>Attachment 266077 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144122</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 22:23:27 -0800</bug_when>
    <thetext>Ready for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144124</commentid>
    <comment_count>41</comment_count>
      <attachid>266078</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-22 22:43:15 -0800</bug_when>
    <thetext>Created attachment 266078
Patch

minor style tweak</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144125</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-22 22:46:00 -0800</bug_when>
    <thetext>Attachment 266078 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144130</commentid>
    <comment_count>43</comment_count>
      <attachid>266078</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-23 00:32:19 -0800</bug_when>
    <thetext>Comment on attachment 266078
Patch

More tweak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144131</commentid>
    <comment_count>44</comment_count>
      <attachid>266080</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-23 00:36:47 -0800</bug_when>
    <thetext>Created attachment 266080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144134</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-23 00:39:40 -0800</bug_when>
    <thetext>Attachment 266080 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 104 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144148</commentid>
    <comment_count>46</comment_count>
      <attachid>266083</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-23 02:53:22 -0800</bug_when>
    <thetext>Created attachment 266083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144149</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-23 02:55:58 -0800</bug_when>
    <thetext>Attachment 266083 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 105 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144260</commentid>
    <comment_count>48</comment_count>
      <attachid>266083</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-23 19:15:18 -0800</bug_when>
    <thetext>Comment on attachment 266083
Patch

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

LGTM so far.
I still have a lot of the interesting code to review closely.
Just posting a few comments, mostly stylistic, and then I&apos;ll post more comments as I review the patch further.

&gt; Source/JavaScriptCore/ChangeLog:45
&gt; +                    sentValue = @generatorValue;

is sentValue what is passed into next?
i.e, next(@generatorValue)?

&gt; Source/JavaScriptCore/builtins/Generator.prototype.js:26
&gt; +function next(sentValue)

All three of these functions are identical except for a difference in GeneratorResumeMode.
Is it worth creating a common implementation? Is that even doable? Would it be too slow?
Maybe we want different functions for optimization reasons.
What do you think?

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:243
&gt; +            functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset());

This seems like it might be wrong in certain situations for the same reasons you&apos;ve stated
for needing the isLiveCell function. I&apos;m not sure if it&apos;s a problem if this is exact or if it can
be a conservative estimate.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:661
&gt; +    int32_t addLiveCalleeRegistersAtYield(FastBitVector vector) { createRareDataIfNecessary(); m_rareData-&gt;m_liveCalleeRegistersAtYield.append(vector); return m_rareData-&gt;m_liveCalleeRegistersAtYield.size() - 1; }

style: lets make this function have  in-between newlines.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:662
&gt; +    const FastBitVector&amp; liveCalleeRegistersAtYield(int index) { RELEASE_ASSERT(m_rareData); return m_rareData-&gt;m_liveCalleeRegistersAtYield[index]; }

I wonder if a better name for liveCalleeRegistersXXX would be &quot;liveCalleeLocalsXXX&quot; or &quot;liveCalleeTempsXXX&quot;
Whenever I think about the phrase Callee Registers I think about machine registers, not VirtualRegisters.
I&apos;m not sure what the precedent for this is inside JSC. What do you think? I know we call it numCalleeRegisters() above, so this name is consistent with that name.
FWIW, I think that name is also kind of weird, and would sound better as numCalleeLocals or numCalleeTemps or something similar.

&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:34
&gt; +// FIXME: These flags, ParserModes and propagation to XXXCodeBlocks should be reorganized.

👍

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:254
&gt; +    int32_t addLiveCalleeRegistersAtYield(FastBitVector vector) { createRareDataIfNecessary(); m_rareData-&gt;m_liveCalleeRegistersAtYield.append(vector); return m_rareData-&gt;m_liveCalleeRegistersAtYield.size() - 1; }

style: this probably doesn&apos;t matter much but you can make this &quot;unsigned&quot; and instead of using Instruction.operand you can use Instruction.unsignedValue

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:521
&gt; +        // FIXME: Emit to_this only when Generator uses it.

It&apos;s worth having a bug # here.

&gt; Source/JavaScriptCore/parser/Parser.cpp:329
&gt; +

nit: new whitespace

&gt; Source/JavaScriptCore/parser/Parser.cpp:492
&gt; +    info.parameterCount = 4; // generator, state, value, type

type =&gt; resume mode

&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:98
&gt; +        program = makeString(&quot;{function &quot;, (isGenerator) ? &quot;*&quot; : &quot;&quot;, functionName.string(), &quot;() {\n\n}}&quot;);

style: I don&apos;t think you need parens around isGenerator.

&gt; Source/JavaScriptCore/runtime/GeneratorFrame.h:65
&gt; +    static ptrdiff_t offsetOfRegister(size_t index)

This is unused.

&gt; Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp:56
&gt; +    return JSValue::encode(constructFunction(exec, asInternalFunction(exec-&gt;callee())-&gt;globalObject(), args, /* isGenerator */ true));

style: I think we should use an enum class for isGenerator instead of a boolean.
That would solve having to add the comment: &quot;/* isGenerator */&quot;

&gt; Source/JavaScriptCore/runtime/GeneratorThis.h:54
&gt; +// The following flag manages this state. When GeneratorFunction is called as a constructor, it returnes a Generator that function has GeneratorThis::Empty flag.

typo: &quot;returnes&quot; =&gt; &quot;returns&quot;

&gt; Source/JavaScriptCore/runtime/GeneratorThis.h:56
&gt; +enum class GeneratorThis : unsigned {

Style: I think a better name for this would be GeneratorThisMode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144318</commentid>
    <comment_count>49</comment_count>
      <attachid>266083</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 02:02:35 -0800</bug_when>
    <thetext>Comment on attachment 266083
Patch

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

Thank you for your great comments! I&apos;ve reconsidered my design. I&apos;ll upload the revised patch, that leverages BytecodeLivenessAnalysis and it becomes much much cleaner :)

&gt;&gt; Source/JavaScriptCore/ChangeLog:45
&gt;&gt; +                    sentValue = @generatorValue;
&gt; 
&gt; is sentValue what is passed into next?
&gt; i.e, next(@generatorValue)?

Yup. I&apos;ve noted it :)

&gt;&gt; Source/JavaScriptCore/builtins/Generator.prototype.js:26
&gt;&gt; +function next(sentValue)
&gt; 
&gt; All three of these functions are identical except for a difference in GeneratorResumeMode.
&gt; Is it worth creating a common implementation? Is that even doable? Would it be too slow?
&gt; Maybe we want different functions for optimization reasons.
&gt; What do you think?

They are slightly different (for example, in throw, when seeing Completed state, it throws.), but not so much different.
So, to check the difference, I&apos;ve created the merged function. The result seems not so large and I believe it&apos;s ok for performance.
I&apos;ll update this patch with it :)

Only one concern is, of cource, the merged function is larger than this original `next`. Compared to `throw` and `return`, `next` should be so frequently called.
Making `next` small is good for DFG&apos;s inlining decision. (But seeing the result, I think it&apos;s not so large).
So I&apos;ll upload the revised one and I would like to hear your opinion.

&gt; Source/JavaScriptCore/builtins/Generator.prototype.js:58
&gt; +    return { done, value };

This is intentional. Only one object allocation site makes object allocation sinking easier.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:661
&gt;&gt; +    int32_t addLiveCalleeRegistersAtYield(FastBitVector vector) { createRareDataIfNecessary(); m_rareData-&gt;m_liveCalleeRegistersAtYield.append(vector); return m_rareData-&gt;m_liveCalleeRegistersAtYield.size() - 1; }
&gt; 
&gt; style: lets make this function have  in-between newlines.

Inserted :)

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:662
&gt;&gt; +    const FastBitVector&amp; liveCalleeRegistersAtYield(int index) { RELEASE_ASSERT(m_rareData); return m_rareData-&gt;m_liveCalleeRegistersAtYield[index]; }
&gt; 
&gt; I wonder if a better name for liveCalleeRegistersXXX would be &quot;liveCalleeLocalsXXX&quot; or &quot;liveCalleeTempsXXX&quot;
&gt; Whenever I think about the phrase Callee Registers I think about machine registers, not VirtualRegisters.
&gt; I&apos;m not sure what the precedent for this is inside JSC. What do you think? I know we call it numCalleeRegisters() above, so this name is consistent with that name.
&gt; FWIW, I think that name is also kind of weird, and would sound better as numCalleeLocals or numCalleeTemps or something similar.

Locals looks significantly nice.
&quot;callee registers&quot; is confusing to me too :). I&apos;ve replaced this to `CalleeLocals` and `numCalleeRegisters` to `numCalleeLocals`.

&gt;&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:34
&gt;&gt; +// FIXME: These flags, ParserModes and propagation to XXXCodeBlocks should be reorganized.
&gt; 
&gt; 👍

Yeah!

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:254
&gt;&gt; +    int32_t addLiveCalleeRegistersAtYield(FastBitVector vector) { createRareDataIfNecessary(); m_rareData-&gt;m_liveCalleeRegistersAtYield.append(vector); return m_rareData-&gt;m_liveCalleeRegistersAtYield.size() - 1; }
&gt; 
&gt; style: this probably doesn&apos;t matter much but you can make this &quot;unsigned&quot; and instead of using Instruction.operand you can use Instruction.unsignedValue

That&apos;s nice. Changed.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:521
&gt;&gt; +        // FIXME: Emit to_this only when Generator uses it.
&gt; 
&gt; It&apos;s worth having a bug # here.

Nice. I&apos;ve created the bug and pasted it here.
https://bugs.webkit.org/show_bug.cgi?id=151586

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:329
&gt;&gt; +
&gt; 
&gt; nit: new whitespace

Removed :)

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:492
&gt;&gt; +    info.parameterCount = 4; // generator, state, value, type
&gt; 
&gt; type =&gt; resume mode

Fixed :)

&gt;&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:98
&gt;&gt; +        program = makeString(&quot;{function &quot;, (isGenerator) ? &quot;*&quot; : &quot;&quot;, functionName.string(), &quot;() {\n\n}}&quot;);
&gt; 
&gt; style: I don&apos;t think you need parens around isGenerator.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/GeneratorFrame.h:65
&gt;&gt; +    static ptrdiff_t offsetOfRegister(size_t index)
&gt; 
&gt; This is unused.

Dropped.

&gt;&gt; Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp:56
&gt;&gt; +    return JSValue::encode(constructFunction(exec, asInternalFunction(exec-&gt;callee())-&gt;globalObject(), args, /* isGenerator */ true));
&gt; 
&gt; style: I think we should use an enum class for isGenerator instead of a boolean.
&gt; That would solve having to add the comment: &quot;/* isGenerator */&quot;

Added `FunctionConstructionMode` and use it :)

&gt;&gt; Source/JavaScriptCore/runtime/GeneratorThis.h:54
&gt;&gt; +// The following flag manages this state. When GeneratorFunction is called as a constructor, it returnes a Generator that function has GeneratorThis::Empty flag.
&gt; 
&gt; typo: &quot;returnes&quot; =&gt; &quot;returns&quot;

Nice! Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/GeneratorThis.h:56
&gt;&gt; +enum class GeneratorThis : unsigned {
&gt; 
&gt; Style: I think a better name for this would be GeneratorThisMode

Renamed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144319</commentid>
    <comment_count>50</comment_count>
      <attachid>266127</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 02:16:01 -0800</bug_when>
    <thetext>Created attachment 266127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144320</commentid>
    <comment_count>51</comment_count>
      <attachid>266128</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 02:17:58 -0800</bug_when>
    <thetext>Created attachment 266128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144321</commentid>
    <comment_count>52</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 02:19:29 -0800</bug_when>
    <thetext>https://goo.gl/photos/CnTvLR1Z7wtd7JiDA figure to explain how save / resume works with use-def analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144334</commentid>
    <comment_count>53</comment_count>
      <attachid>266134</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 06:07:06 -0800</bug_when>
    <thetext>Created attachment 266134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144335</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-24 06:09:51 -0800</bug_when>
    <thetext>Attachment 266134 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1777:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 117 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144336</commentid>
    <comment_count>55</comment_count>
      <attachid>266135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 06:10:44 -0800</bug_when>
    <thetext>Created attachment 266135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144337</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-24 06:13:06 -0800</bug_when>
    <thetext>Attachment 266135 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1777:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 117 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144339</commentid>
    <comment_count>57</comment_count>
      <attachid>266083</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-24 06:33:22 -0800</bug_when>
    <thetext>Comment on attachment 266083
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:243
&gt;&gt; +            functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset());
&gt; 
&gt; This seems like it might be wrong in certain situations for the same reasons you&apos;ve stated
&gt; for needing the isLiveCell function. I&apos;m not sure if it&apos;s a problem if this is exact or if it can
&gt; be a conservative estimate.

Nice catch. That&apos;s a problem.
I&apos;ve changed the design slightlhy. op_save only uses a first generator and defines nothing.
And op_resume defines all the used variables at the head of the successor basic block.
I added the virtual jump edge from op_save to the point that is called the merge point.
And op_resume is also has the flow to this merge point.

            (global generator switch) -&gt; (initial sequence) -&gt; (op_save) ----+-&gt; (merge point) -&gt; (next sequence)*
                   |                                              |          |
                   |                                              v          |
                   |                                           (op_ret)      |
                   |                                                         |
                   +-------------------------------------------&gt;(op_resume)--+

By constructing such a graph,

1. Since we have a flow from (op_save) to (merge point), at merge point, we can *use* locals that are defined before (op_save)
2. op_save should claim that it does not define anything.
3. at op_resume, we see *use*d locals at merge point and define all of them.

We can do the above things in use-def analysis because use-def analysis is backward analysis.
And after analyzing use-def chains, in op_save / op_resume we only save / resume live registers at the head of merge point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144412</commentid>
    <comment_count>58</comment_count>
      <attachid>266152</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-25 05:27:19 -0800</bug_when>
    <thetext>Created attachment 266152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144413</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-25 05:29:05 -0800</bug_when>
    <thetext>Attachment 266152 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1783:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 117 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144426</commentid>
    <comment_count>60</comment_count>
      <attachid>266161</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-25 07:29:32 -0800</bug_when>
    <thetext>Created attachment 266161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144427</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-25 07:32:37 -0800</bug_when>
    <thetext>Attachment 266161 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1783:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 117 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144478</commentid>
    <comment_count>62</comment_count>
      <attachid>266161</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-26 01:54:31 -0800</bug_when>
    <thetext>Comment on attachment 266161
Patch

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

Added comment for ease of review.

&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:62
&gt; +    case op_save:

op_save has a virtual jump to a merge point. (the virtual jump means, that is a jump edge, but it is not used actually. It is used to construct CFG, and this flow will be leveraged for DFG analysis.)

Since op_save has a virtual jump to a merge point, there is a edge from op_save to the merge point.
And the merge point can use registers that are defined predecessor basic blocks that is dominated by this op_save!

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:253
&gt; +        return;

op_save *use*s

1. generator register to save registers to its GeneratorFrame member.
2. registers that are used at the merge point. Since use-def is backward analysis, when analyzing op_save, its information is already analyzed.

And op_save *def*ines

1. Nothing

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:421
&gt; +        return;

op_resume *use*s

1. generator register to resume registers from GeneratorFrame

And op_resume *def*ines

2. registers that are used at the merge point.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1550
&gt; +        }

And added liveness information to bytecode dump. When you see bytecode with `-d`, you can see which registers will be saved / resumed at that op_save / op_resume.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2275
&gt; +    }

This is important part. We perform BytecodeLivenessAnalysis to find which register is live at a given merge point.
This information will be used to save / resume registers.

And interestinglly, in typical cases, the number of live registers is very small.
We will emit asm directly for this save / resume operation in DFG/FTL! This enables significantly fast generator operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144479</commentid>
    <comment_count>63</comment_count>
      <attachid>266161</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-26 01:55:38 -0800</bug_when>
    <thetext>Comment on attachment 266161
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:62
&gt;&gt; +    case op_save:
&gt; 
&gt; op_save has a virtual jump to a merge point. (the virtual jump means, that is a jump edge, but it is not used actually. It is used to construct CFG, and this flow will be leveraged for DFG analysis.)
&gt; 
&gt; Since op_save has a virtual jump to a merge point, there is a edge from op_save to the merge point.
&gt; And the merge point can use registers that are defined predecessor basic blocks that is dominated by this op_save!

s/dominated/that will reach to the merge point through this op_save/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144674</commentid>
    <comment_count>64</comment_count>
      <attachid>266161</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-28 18:54:39 -0800</bug_when>
    <thetext>Comment on attachment 266161
Patch

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

LGTM, just a few comments. I have some more comments I&apos;ll write tomorrow but I&apos;m about to board a flight.

&gt; Source/JavaScriptCore/ChangeLog:79
&gt; +        Registers reside in C stack. So if we don&apos;t perform it, we need to determine whether a given value is *live* and *correct* JSCell or not

I&apos;m not sure if this last sentence is necessary and it&apos;s a bit confusing to me. I think the above sentence saying that we run BytecodeLiveness is enough to get this idea across
that we need to know which registers to save and restore.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2247
&gt; +            mergePointBytecodeOffsets.resize(liveCalleeLocalsIndex + 1);

Nit: Even though this number will always get larger because of how we parse/generate bytecode, we really should only resize when we&apos;re resizing to a larger number than the current size.
It might be worth making that explicit either through an assert/if statement/max function call.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4128
&gt; +    RegisterID* completedState = emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(state)));

style: cast not needed

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3006
&gt; +        generator.emitProfileType(generator.generatorRegister(), ProfileTypeBytecodeFunctionReturnStatement); // Do not emit expression info for this profile because it&apos;s not in the user&apos;s source code.

I don&apos;t think this is needed.

&gt; Source/JavaScriptCore/tests/es6.yaml:841
&gt;  - path: es6/generators_yield_star_instances_of_iterables.js

Can we also add some of our own &quot;yeild*&quot; tests with different variations?

&gt; Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js:1
&gt; +function unreachable()

I think it&apos;s worth having more return(X) and throw(X) tests.

&gt; Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js:12
&gt; +g.return(&quot;Hello&quot;);

We should have tests for the return value here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144687</commentid>
    <comment_count>65</comment_count>
      <attachid>266224</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-11-29 10:22:09 -0800</bug_when>
    <thetext>Created attachment 266224
Patch

Update yield*, added tests, but still return/throw tests are not added yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144689</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-29 10:25:12 -0800</bug_when>
    <thetext>Attachment 266224 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1783:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 118 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145187</commentid>
    <comment_count>67</comment_count>
      <attachid>266343</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 01:20:33 -0800</bug_when>
    <thetext>Created attachment 266343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145188</commentid>
    <comment_count>68</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 01:24:05 -0800</bug_when>
    <thetext>Attachment 266343 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1792:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145195</commentid>
    <comment_count>69</comment_count>
      <attachid>266346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 01:33:36 -0800</bug_when>
    <thetext>Created attachment 266346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145196</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 01:35:25 -0800</bug_when>
    <thetext>Attachment 266346 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1792:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145241</commentid>
    <comment_count>71</comment_count>
      <attachid>266346</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-01 09:20:28 -0800</bug_when>
    <thetext>Comment on attachment 266346
Patch

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

r=me with a couple comments

&gt; Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp:57
&gt; +    case op_save:

Maybe a small comment is worth it here just to say that this is purely
for calculating liveness.

&gt; Source/JavaScriptCore/parser/ParserModes.h:50
&gt; +    GeneratorFunctionMode,

GeneratorMode and GeneratorFunctionMode confuse me a bit as names. 
I wonder if we can name them better to be more indicative of what they do
Maybe GeneratorBodyMode instead of GeneratorMode. Maybe GeneratorWrapperFunctionMode
instead of GeneratorFunctionMode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145376</commentid>
    <comment_count>72</comment_count>
      <attachid>266161</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 13:53:11 -0800</bug_when>
    <thetext>Comment on attachment 266161
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:79
&gt;&gt; +        Registers reside in C stack. So if we don&apos;t perform it, we need to determine whether a given value is *live* and *correct* JSCell or not
&gt; 
&gt; I&apos;m not sure if this last sentence is necessary and it&apos;s a bit confusing to me. I think the above sentence saying that we run BytecodeLiveness is enough to get this idea across
&gt; that we need to know which registers to save and restore.

Yes. Running BytecodeLiveness is enough. Dropped this sequence.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2247
&gt;&gt; +            mergePointBytecodeOffsets.resize(liveCalleeLocalsIndex + 1);
&gt; 
&gt; Nit: Even though this number will always get larger because of how we parse/generate bytecode, we really should only resize when we&apos;re resizing to a larger number than the current size.
&gt; It might be worth making that explicit either through an assert/if statement/max function call.

OK, I&apos;ve added one if statement that avoid `resize` when vector size is enough for a given index.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4128
&gt;&gt; +    RegisterID* completedState = emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(state)));
&gt; 
&gt; style: cast not needed

Nice! Dropped.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3006
&gt;&gt; +        generator.emitProfileType(generator.generatorRegister(), ProfileTypeBytecodeFunctionReturnStatement); // Do not emit expression info for this profile because it&apos;s not in the user&apos;s source code.
&gt; 
&gt; I don&apos;t think this is needed.

OK, dropped.

&gt;&gt; Source/JavaScriptCore/tests/es6.yaml:841
&gt;&gt;  - path: es6/generators_yield_star_instances_of_iterables.js
&gt; 
&gt; Can we also add some of our own &quot;yeild*&quot; tests with different variations?

Added :)

&gt;&gt; Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js:1
&gt;&gt; +function unreachable()
&gt; 
&gt; I think it&apos;s worth having more return(X) and throw(X) tests.

Added :)

&gt;&gt; Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js:12
&gt;&gt; +g.return(&quot;Hello&quot;);
&gt; 
&gt; We should have tests for the return value here.

Added :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145385</commentid>
    <comment_count>73</comment_count>
      <attachid>266346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 13:59:56 -0800</bug_when>
    <thetext>Comment on attachment 266346
Patch

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

Thanks for your great review!

&gt;&gt; Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp:57
&gt;&gt; +    case op_save:
&gt; 
&gt; Maybe a small comment is worth it here just to say that this is purely
&gt; for calculating liveness.

Sounds nice. Added a small comment.

&gt;&gt; Source/JavaScriptCore/parser/ParserModes.h:50
&gt;&gt; +    GeneratorFunctionMode,
&gt; 
&gt; GeneratorMode and GeneratorFunctionMode confuse me a bit as names. 
&gt; I wonder if we can name them better to be more indicative of what they do
&gt; Maybe GeneratorBodyMode instead of GeneratorMode. Maybe GeneratorWrapperFunctionMode
&gt; instead of GeneratorFunctionMode?

Your suggestion looks nice. More descriptive name is nice for readability :D Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145396</commentid>
    <comment_count>74</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 14:23:36 -0800</bug_when>
    <thetext>Committed r192914: &lt;http://trac.webkit.org/changeset/192914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145480</commentid>
    <comment_count>75</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 17:33:22 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 151734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145485</commentid>
    <comment_count>76</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-12-01 17:37:58 -0800</bug_when>
    <thetext>64-bit JSC test failures:
&lt;https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/843&gt;

32-bit JSC test failures:
&lt;https://build.webkit.org/builders/Apple%20Yosemite%2032-bit%20JSC%20%28BuildAndTest%29/builds/7137&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145495</commentid>
    <comment_count>77</comment_count>
      <attachid>266421</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 18:40:31 -0800</bug_when>
    <thetext>Created attachment 266421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145499</commentid>
    <comment_count>78</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 18:43:09 -0800</bug_when>
    <thetext>Attachment 266421 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1792:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:213:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145500</commentid>
    <comment_count>79</comment_count>
      <attachid>266421</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 18:49:06 -0800</bug_when>
    <thetext>Comment on attachment 266421
Patch

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

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:-229
&gt; -#endif

Drop this. Now create_this can be used for non constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145501</commentid>
    <comment_count>80</comment_count>
      <attachid>266421</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-01 18:55:13 -0800</bug_when>
    <thetext>Comment on attachment 266421
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145502</commentid>
    <comment_count>81</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-01 19:16:49 -0800</bug_when>
    <thetext>Committed r192937: &lt;http://trac.webkit.org/changeset/192937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145538</commentid>
    <comment_count>82</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-02 02:27:18 -0800</bug_when>
    <thetext>oops, Windows build&apos;s ENABLE_ES6_GENERATORS is not enabled.
I&apos;ll land the follow up patch that enables ENABLE_ES6_GENERATORS. (Maybe, CMake)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145540</commentid>
    <comment_count>83</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-02 02:38:21 -0800</bug_when>
    <thetext>Hmm, OptionsWin.cmake is correctly updated...
I&apos;ve just requested Win force rebuild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145541</commentid>
    <comment_count>84</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-02 02:39:25 -0800</bug_when>
    <thetext>OK, it seems that ENABLE_ES6_MODULES is enabled.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265004</attachid>
            <date>2015-11-07 11:32:03 -0800</date>
            <delta_ts>2015-11-08 04:23:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151108043201.patch</filename>
            <type>text/plain</type>
            <size>43537</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NWRjZDQ3MmVhYTk1ZGM1NzQyZWJiN2Y0NmI0NmI1Y2QzMDdiZjNhLi5jODVmYTc4NzQ2NDVmYTc2
NDE5ZDUyYmU4NDkzN2EyM2UyZDhkZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxNS0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChu
ZXh0KToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6SlNHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmF0b3I6OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkpTR2VuZXJhdG9yOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVy
YXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjph
bGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKToKKwogMjAxNS0xMS0wNiAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb250cm9sIEZsb3cgUHJvZmlsZXIgc2hvdWxkIGtlZXAgZXhlY3V0aW9uIGNv
dW50cyBvZiBiYXNpYyBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4YjZhNTAwMmZlYTAwMjQ1ZWMxZTdhZDk1ZDg3MWUwMDMxYmNmMzNlLi43OWI2NjZjZTM0Njgw
OGEwNWM5MmQ4NmM4YTliYWEyN2JhMzlmODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC01NjAsNiArNTYwLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09V
UkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUv
SWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTU5OSw2ICs2
MDIsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9K
U0RhdGVNYXRoLmNwcAogICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBy
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvci5jcHAKKyAgICBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzU0LDYgKzc1OSw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9OQVRJVkVfT0JKRUNUX0xVVF9TT1VSQ0VTCiBzZXQoSmF2YVNjcmlw
dENvcmVfQlVJTFRJTl9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAg
cnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMTIwNiw2ICsxMjEy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVy
YXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk3ZGQ5MDVlZWRiOWM4MWFhNjFkOTU2Y2Ex
YWE2ZDg4NjgxMTQ2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4
dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikK
K3sKKyAgICAidXNlIHN0cmljdCI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA5NTcyYmMxZjRiZGYyYWQ2Mjc0NWEyNDcw
MjUxMWE2NGM3OWY5MDVkLi41NGM0ZjVkMjQxYTYwMDc3NDVlOGZlODdjOThmNjk3MTlhM2Y3OTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2
YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVu
Y3Rpb24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBt
YWNybyhKU09OKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlYmRh
ODk4ZGNjYThmZjI4YTk4ZjdiYjcyYTY5NDA4ZTdiNTQwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNs
dWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2Nv
bnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJH
ZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQor
Cit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0
b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYzcwZWQxMjliYTI1Y2I1MDM5MjI0MjY0NDJhM2U1OWQ0MzM0ZjNkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODZlMjQxYWUwODU2MzA5YTZlNDU0N2NjMWYzNTJlOGM4MWJmNzBmZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSkgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MGEwMzQ5MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7
CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4g
cHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRmNzAxN2Iz
MWNiMzcwNWQxZjE4NThhZDU1YWM4Y2I2MWVhY2ZhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgi
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9y
UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdl
bmVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywg
JmdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclBy
b3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0Bi
ZWdpbiBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgICAgR2VuZXJhdG9yUHJv
dG90eXBlRnVuY05leHQgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4g
ICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY1JldHVybiAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICB0aHJvdyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY1Rocm93ICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5lcmF0b3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERv
bnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhp
cyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xv
dDxCYXNlPihleGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclBy
b3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWUzYTRmMzgzNDg0ZGNjYjJlMWQxZjAyYmMzMWY0NzJl
N2ZiNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3Rv
dHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAg
c3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5l
cmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdl
bmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvclBy
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9y
UHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjE0Nzg0YTE1YzhlOGU1Mzk4NGY5OGU0YjQ2ZWUwNWYxMTk0NmZl
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvcjo6
c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0dlbmVyYXRvcikgfTsKKworSlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3Ry
dWN0dXJlKQoreworfQorCitKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yLT5zdHJ1
Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvci0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZt
LCBnZW5lcmF0b3IsICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIik7CisgICAgcmV0dXJuIGdlbmVy
YXRvcjsKK30KKworSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9yOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNH
ZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJh
dG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1
cmUpOworICAgIEFTU0VSVChnZW5lcmF0b3ItPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRv
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ5YTcyYWJmZGRiZTAyZTE3MjJhYjQ3ZWE4
NDU5MjY2N2RjZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNHZW5lcmF0b3JfaAorI2RlZmluZSBKU0dlbmVyYXRvcl9oCisKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dlbmVyYXRvciA6
IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVu
ZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOwor
cHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yKiBjcmVhdGUoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IEpTR2VuZXJhdG9yKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTR2VuZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzYmJiM2E5ZTBhMjNi
M2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6c19pbmZvID0g
eyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246
OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNj
b3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30K
KworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAg
ICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1
bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0
aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9u
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24o
KS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVy
YXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNH
ZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2Vu
ZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1
bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBmMzg1MWIyMWU4YTljNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2ly
ZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9u
KiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9m
KEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dlbmVyYXRvckZ1
bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0N2NjODY4YjEyODkxLi44
NDVhZDUwMTllM2E1YTE3MDAyNTFjZDU5YzY4NDY0YmY2MjRhMzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw5
IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1LDggQEAKICNp
bmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oIgpAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJv
ciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7
CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0
cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MjgsNiAr
NDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAt
ODQ5LDYgKzg2MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEwNC4uOTMxNDA0NGYyZGJm
MzM2YzE5MDhkNjIzMWVmOWYxODA4ZjIxMWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxv
Y2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTExMiw2ICsxMTQsNyBAQAogICAgIERFRklORV9T
VEFOREFSRF9CVUlMVElOKG1hY3JvLCBNYXBJdGVyYXRvciwgbWFwSXRlcmF0b3IpIFwKICAgICBE
RUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU2V0SXRlcmF0b3IsIHNldEl0ZXJhdG9yKSBc
CiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFN0cmluZ0l0ZXJhdG9yLCBzdHJp
bmdJdGVyYXRvcikgXAorICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBHZW5lcmF0
b3IsIGdlbmVyYXRvcikgXAogCiAjZGVmaW5lIEZPUl9FQUNIX0JVSUxUSU5fSVRFUkFUT1JfVFlQ
RShtYWNybykgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBJdGVyYXRvciwg
aXRlcmF0b3IpIFwKQEAgLTIyOSw2ICsyMzIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQ
cm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3Rv
dHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90
eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIAogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5h
bEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3Rv
dHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUu
Z2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0
ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQo
KTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
d2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KQEAgLTUwNiw2ICs1MTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVy
ZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265015</attachid>
            <date>2015-11-08 04:23:26 -0800</date>
            <delta_ts>2015-11-08 07:13:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151108212323.patch</filename>
            <type>text/plain</type>
            <size>47635</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NWRjZDQ3MmVhYTk1ZGM1NzQyZWJiN2Y0NmI0NmI1Y2QzMDdiZjNhLi4wNjAyMzBkY2NmOGQzYWQ2
YmRjYmQyN2E3NTg5MTFlOTM0MDY2ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChu
ZXh0KToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2Vu
ZXJhdG9yOjpKU0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9y
RnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2Vu
ZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
CiAyMDE1LTExLTA2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IENvbnRyb2wgRmxvdyBQcm9maWxlciBzaG91bGQga2VlcCBleGVjdXRpb24gY291bnRzIG9mIGJh
c2ljIGJsb2NrcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDhiNmE1MDAy
ZmVhMDAyNDVlYzFlN2FkOTVkODcxZTAwMzFiY2YzM2UuLjc5YjY2NmNlMzQ2ODA4YTA1YzkyZDg2
YzhhOWJhYTI3YmEzOWY4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTU2MCw2ICs1NjAsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAg
cnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVy
LmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNTk5LDYgKzYwMiw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yLmNwcAorICAgIHJ1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC03NTQsNiArNzU5LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX05BVElWRV9PQkpFQ1RfTFVUX1NPVVJDRVMKIHNldChKYXZhU2NyaXB0Q29yZV9CVUlM
VElOX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0xMjA2LDYgKzEyMTIsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90
b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3Rv
dHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOTdkZDkwNWVlZGI5YzgxYWE2MWQ5NTZjYTFhYTZkODg2ODEx
NDY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBuZXh0KHZhbHVlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKK30KKworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCAyZWRlNjFmZmQyMWQ2MTYxMjgyNDgyZDU5NzhhNzgzNzY2ZDU3Y2VjLi5hM2EyNTY4ZTY5OWVj
ZTc3OTBhNWM5OWY0NGM0ZjU2ODkzZWI5NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0yNzEsOCArMjcxLDE0IEBACiAgICAgICAgICAgICBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVu
dHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9k
ZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVu
dHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgICAgICAgICBBdXRvUG9wU2NvcGVS
ZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShwYXJzZU1vZGUpOworICAg
ICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0
LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9y
U3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpA
QCAtMTgxNyw4ICsxODIzLDE3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1l
ID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0
ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29u
dGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0
aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBh
dXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBh
cnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29u
c3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291
bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291
cmNlUGFyc2VNb2RlKG1vZGUpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1Q
YXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3Rh
dGUob2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90
IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IDk1NzJiYzFmNGJkZjJhZDYyNzQ1YTI0NzAyNTExYTY0Yzc5ZjkwNWQuLjU0YzRmNWQy
NDFhNjAwNzc0NWU4ZmU4N2M5OGY2OTcxOWEzZjc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAog
ICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVu
Y3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmlu
aXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1NzMyOTYyM2U0NDZmYjU4MzU0MGI5MmE5Mzcy
ZWVlMGJjYTBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUg
IlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBO
dW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFk
T25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6
OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNv
bnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0ZDk3MjNlM2Y4MGFkNzdmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9uOworfQorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZlMjQxYWUwODU2MzA5YTZlNDU0N2NjMWYzNTJlOGM4
MWJmNzBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2lu
Y2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworCitjb25z
dCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVy
YXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1
MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRmNzAxN2IzMWNiMzcwNWQxZjE4NThhZDU1YWM4Y2I2MWVhY2ZhOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgor
CisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0
ICAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY05leHQgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorICByZXR1cm4gICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY1JldHVybiAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgICAgR2VuZXJhdG9yUHJv
dG90eXBlRnVuY1Rocm93ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8K
Kwordm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmco
JnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlw
ZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJs
ZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWUzYTRmMzgzNDg0
ZGNjYjJlMWQxZjAyYmMzMWY0NzJlN2ZiNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9o
CisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2Vu
ZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRv
clByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2
YXRlOgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYg
Ly8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE0Nzg0YTE1YzhlOGU1Mzk4
NGY5OGU0YjQ2ZWUwNWYxMTk0NmZlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5o
IgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVy
dHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBKU0dlbmVyYXRvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvcikgfTsKKworSlNHZW5l
cmF0b3I6OkpTR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKQoreworfQorCitKU0dlbmVyYXRvciogSlNHZW5l
cmF0b3I6OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNT
Y29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBn
ZW5lcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVh
cCkpIEpTR2VuZXJhdG9yKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBB
U1NFUlQoZ2VuZXJhdG9yLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVy
YXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3IsICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9y
Iik7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9y
OjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChnZW5lcmF0b3ItPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ5YTcy
YWJmZGRiZTAyZTE3MjJhYjQ3ZWE4NDU5MjY2N2RjZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JfaAorI2RlZmluZSBKU0dl
bmVyYXRvcl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU0dlbmVyYXRvciA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xh
c3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1
bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisg
ICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNl
OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpT
R2VuZXJhdG9yKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9yKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IFN0cnVjdHVyZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFj
aXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9y
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2Vu
ZXJhdG9yKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwor
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2MzYmJiM2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1
ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0
b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisK
K0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJs
ZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9u
LCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0
b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNH
ZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+
c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3
ZDBmMzg1MWIyMWU4YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2Vu
ZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0
aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5B
QkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAg
ZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3Mg
Vk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBz
dGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlv
biogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRp
YyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3Rh
dGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOwor
ICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rp
b24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2
MjUyNWE0N2NjODY4YjEyODkxLi44NDVhZDUwMTllM2E1YTE3MDAyNTFjZDU5YzY4NDY0YmY2MjRh
MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0
aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIK
QEAgLTcyLDYgKzc1LDggQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNE
b2xsYXJWTVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0
b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMs
IG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVND
SUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxp
dGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJv
clN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgi
VVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0s
IHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAg
IAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBE
b250RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChW
TSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwg
bV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJh
eVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90
eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dl
clNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRo
U2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODQ5LDYgKzg2MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3Jk
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1l
c3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4
NGQ4NTEwNC4uOTMxNDA0NGYyZGJmMzM2YzE5MDhkNjIzMWVmOWYxODA4ZjIxMWEwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2
ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBl
OworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7
CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTExMiw2ICsx
MTQsNyBAQAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBNYXBJdGVyYXRvciwg
bWFwSXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU2V0SXRl
cmF0b3IsIHNldEl0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8s
IFN0cmluZ0l0ZXJhdG9yLCBzdHJpbmdJdGVyYXRvcikgXAorICAgIERFRklORV9TVEFOREFSRF9C
VUlMVElOKG1hY3JvLCBHZW5lcmF0b3IsIGdlbmVyYXRvcikgXAogCiAjZGVmaW5lIEZPUl9FQUNI
X0JVSUxUSU5fSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlM
VElOKG1hY3JvLCBJdGVyYXRvciwgaXRlcmF0b3IpIFwKQEAgLTIyOSw2ICsyMzIsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3Jp
dGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRl
QmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVy
ZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFt
ZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAg
SXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTIsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBT
dHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJv
bE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhOGYzZDg2MmIzZDljYzE0ZThiYTU2NWVjZmIwOTE1MjEwMzJiNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9
IChuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFs
LkdlbmVyYXRvckZ1bmN0aW9uLCAnZnVuY3Rpb24nKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0
aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJv
dG90eXBlLmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265017</attachid>
            <date>2015-11-08 07:13:46 -0800</date>
            <delta_ts>2015-11-08 07:58:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151109001343.patch</filename>
            <type>text/plain</type>
            <size>78129</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
N2RhZjE5N2RiOTVjNzM3ODM1NDBhMDZlYWM2MzE2ZDQzNjI3OGI5Li41ZWMzYjE2NDBhYWE1MDk1
ZDRkNmE1NDZhMDFjNTdjZTUxMTY3MWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAxNS0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChu
ZXh0KToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4
ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6
CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dG
dW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5r
ZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzR2VuZXJhdG9yRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FT
VEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICog
cnVudGltZS9KU0dlbmVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6
OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDog
QWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXpl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKwogMjAxNS0xMS0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLmpz
IHNob3VsZCBzdXBwb3J0IEBpbnRlcm5hbCBhbm5vdGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggZGJjOTZjY2UzMWFlMWQ5MjM4ZjA4NzkyNWJiY2UzOTI5YjRkZmZm
OC4uNzVjYzQ2ZTI3ZmY3ZTc3ZWM4NmU1OTU4YWEzMWMxY2I0NDUyMzVmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYwLDYgKzU2MCw5IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBy
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5j
cHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUu
Y3BwCkBAIC01OTksNiArNjAyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNF
UwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRS
ZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRp
bWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTc1
NCw2ICs3NTksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTkFUSVZFX09CSkVDVF9MVVRfU09VUkNF
Uwogc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5fT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAK
QEAgLTEyMDYsNiArMTIxMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90
eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvbi5wcm90b3R5
cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yLnByb3Rv
dHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HbG9iYWxPYmplY3Qu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5N2RkOTA1ZWVk
YjljODFhYTYxZDk1NmNhMWFhNmQ4ODY4MTE0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIG5leHQodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworfQorCitmdW5j
dGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworfQorCitmdW5jdGlvbiB0
aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1
MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi41NTdiNmY0YzRkNTk5ZjUwNTJjYWE0MDk0MmE3
OWMwNTUxMjA2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaApAQCAtMzEsMTQgKzMxLDE0IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZh
dGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0Fj
dGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3Ry
dWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2
YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAg
ICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25z
dHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24o
aXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29uc3RydWN0b3JLaW5kKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRXhl
Y3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgU291cmNlUGFy
c2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRl
eCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li43YzhmYzNjZjlhOTYw
M2UzMTc2YWQ3MmNkZjJiNTg0MDRhNTc3ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY1LDEwICs2NSwxMCBA
QAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwg
bV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAsIG1fZmlyc3RM
aW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgp
CisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygw
KQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uNmIw
NDZkOTIxZTdiN2JjNTBjZjdkM2MzN2UwZDhjYTkwOWQyZTVjYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTExNiw3ICsx
MTYsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zODcsMTIgKzM4NywxMiBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbiA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBt
X2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNl
TW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2Rl
VHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5
YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li5mZGIzOTdkNDBkZDE2ZTI5MTIzNDc3
Yjg4YWM2ZGU1ZGFjOGU4ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQs
IFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRG
dW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9
IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpC
dWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
OwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBh
cnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBF
eGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2Vz
RXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5j
b25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJ
bmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1
bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlv
bktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9y
S2luZCgpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJN
b2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkp
KTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKQpAQCAtOTksNyArOTksNiBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICwgbV9jb25zdHJ1Y3RB
YmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rvcktp
bmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAs
IG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQogewogICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3Ry
dWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE3OSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAK
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1
bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25L
aW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTUsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAg
ICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAg
ICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIy
OTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uMzlkOGMzMzQyMzlkZjZlYTMzNjA2
NzFjODBlNDE3ZmU2ZDc2MTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTk1LDcgKzk1
LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
Rm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwg
Ym9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmpl
Y3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDcgKzEyNSw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVj
dG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJy
b3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRl
cj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtMTU4
LDcgKzE1Nyw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9k
ZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCAyYmU3MjBhMTAyM2Y1YzU5ZTkxMjliOWZmNTFmYmVhNTc1ZWE4ZTIyLi5k
OTVmMTQzNWIyOWIxOGQ4YTI0NmU0NzU2ZjJlNGIxOTBiMDMxYmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtNDYwLDcgKzQ2MCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgfQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAg
IGlmICghY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIGlmIChjb2RlQmxvY2st
PnBhcnNlTW9kZSgpICE9IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpIHsKICAg
ICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdU
YXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
YTZkMjI3NzkwMGY1ZGVlZmE0YTZmNTJhNzg4ZjJlMDIzN2IzNDMyMC4uMmE1ZjY0MDgyMGY5OGE1
MTIxMWE5YzhiMTU3NzdjMTdmYTNmMTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjUwLDYgKzY1MCw4
IEBACiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAg
IGJvb2wgaXNHZW5lcmF0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5w
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7IH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVp
bHRpbkZ1bmN0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlYTRmZmRkYzMwNzM1ZmI1MzU5OTE2YjczMWY5
NDZlYWZmZmY4YjQ4Li44NzUwMTQyM2RhYjU4YWE5MGQ3MmI0M2Q0MzFhYmMwZjcxNDM5ZjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0yOTUzLDI2ICsyOTUzLDM0IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwg
c3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3Rh
dGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7Ci0K
LSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1l
bnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKLQotICAgIC8vIENoZWNrIGZv
ciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9m
IGEgc2luZ2xlIGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVt
ZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudElu
QmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3Rh
dGVtZW50KCk7Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVt
ZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3Rh
dGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9Ci0KLSAg
ICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBv
bmUuCi0gICAgaWYgKCFyZXR1cm5Ob2RlKSB7CisgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRv
ckZ1bmN0aW9uKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25z
dHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2Fk
KDAsIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIw
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3Qg
ZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGlu
IHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJu
OworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9y
LCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAgICBTdGF0ZW1lbnROb2RlKiBz
aW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJu
Tm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0
YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxv
Y2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Js
b2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2Nr
ID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVu
dCgpOworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1l
bnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm5Ob2RlID0g
c3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2Fs
bHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CisgICAgICAgICAgICBS
ZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhp
c1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2Rl
RnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8g
Zm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNv
ZGUuCisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJh
bWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAppbmRleCBjZjcxNDBiYzQ5MzVlODhjMDBkYzIxZWQ2YjkyNjBhZDk1OGNjZTgzLi5mNzgx
MWZkY2FmMjU0Zjk5YzRmMWZkMjllZjg5Zjk0ZGNhNWZmNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzY3LDEyICszNjcsMTIgQEAgY2xhc3MgQVNU
QnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlv
bk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAg
ICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3Vu
dCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVy
Q291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVh
Mzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAuLjJkY2E3MjRjNjU5MWUxYjY5
MjM1MDZlOWE1OTc4ZWJhYzUwYjA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFy
aWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICBQ
YXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24s
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5v
ZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAg
ICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNyArMTYzLDYgQEAgdm9pZCBQ
cm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAs
IG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAg
ICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb25zdHJ1Y3RvcktpbmQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAwYmQxZjZkNTc5NGQ5NjRmYjMyMmY0ZDAwODAzMTE2ODAyODRiZGNhLi40ODQ5ODJkNWMxMjc1
MDZhYzk5YWQxZGNhY2NjYTQ4ZGQ2Y2ZiMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC0xODEyLDcgKzE4MTIsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAg
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBh
cnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUp
OwogICAgICAgICAKQEAgLTE4MzgsNyArMTgzOCw2IEBACiAgICAgICAgIGludCBzdGFydFN0YXJ0
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJv
b2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0
OyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9u
OyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9p
ZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQpAQCAtMTg2NSw3ICsxODY0LDYgQEAKICAgICAg
ICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5T
dHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwotICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNTY0ZTMzNDZhOTFiMjVmOGNl
NjM5MWNhNDc1YTMzZjYwZWIzNGJiLi5kOGVhYWVlNWNiNWJjZGMxZjljMjM2NDk0Y2ZlYjAyN2Q0
ZWY0ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNzEs
OCArMjcxLDE0IEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5j
dGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAg
IGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2Rl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGUpIHsKKyAgICAgICAgICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3Bl
KHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUt
PnNldFNvdXJjZVBhcnNlTW9kZShwYXJzZU1vZGUpOworICAgICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBw
YXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtMTU1NCwxMyArMTU2MCwxMiBA
QAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlC
bG9jayAhPSBib2R5VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
ID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBp
ZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3Rh
cnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3Ry
aWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU3
Miw3ICsxNTc3LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNl
RWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1
bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVt
biwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VN
b2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNzc2
LDEyICsxNzgxLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNl
dCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVu
dExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAg
ICAgICAgIAotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5m
by5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJv
ZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3Ry
dWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5
VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAg
ZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8p
OwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVl
VmFyaWFibGVJbmZvKTsKQEAgLTE3OTUsNyArMTc5OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4
ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5j
dGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAg
ICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUg
PSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0x
ODE3LDggKzE4MjAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBs
YXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7
Ci0gICAgCi0gICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0
LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25C
b2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8g
cGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VG
dW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1
Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwg
bW9kZSk7CisgICAgfTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRo
aXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQ
YXJzZU1vZGUobW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNp
bmdGdW5jdGlvbkJvZHkoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkg
PSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShv
bGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFy
c2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA3Mzk3NDc3
NzRhNjEwZDUzOGUxMjgwOWQ2ODk2NmJiNDcxYzNiMWY0Li5lNzlkMjFmNTViNjhlNTAwNmM4MDli
ZmI0Yjk4MjYwZWYxZDQ0NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaApAQCAtMTg2LDcgKzE4Niw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewog
ICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlw
ZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBD
bGFzc0V4cHI7IH0KICNlbmRpZgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4
Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1
bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGlu
dCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJl
dHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJv
d0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lk
IHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1l
bnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA5NTcyYmMxZjRiZGYyYWQ2
Mjc0NWEyNDcwMjUxMWE2NGM3OWY5MDVkLi41NGM0ZjVkMjQxYTYwMDc3NDVlOGZlODdjOThmNjk3
MTlhM2Y3OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAg
IG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2Vu
ZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwp
IFwKICAgICBtYWNybyhKU09OKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2Nh
NjAuLmQxNjE5OTg0MzM4YTkxYTJkMjg3NWM2YmRjZDNiYzY2NzcyNGU3NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcg
QEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAg
ICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5j
dGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNv
cmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1
cmVzKCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdi
MGMzNDBhMDQuLjNmMjZhMTJkMmRiZmUzOGVmZTI1MGM5ZjUwN2Q1ZWM4NjY3MTNmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVz
KCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3
ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNs
YXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFi
bGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1
cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJv
bFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAg
ICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQog
ICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93
RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rp
b24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2Vk
RXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1l
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAg
SlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGlu
ZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNTczMjk2MjNlNDQ2ZmI1ODM1
NDBiOTJhOTM3MmVlZTBiY2EwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJEZWJ1Z2dlci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIK
KyNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwor
CisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7Cisg
ICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNm
ODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVm
aW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworCitj
bGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAg
c3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGlj
IENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZTI0MWFlMDg1NjMwOWE2ZTQ1NDdj
YzFmMzUyZThjODFiZjcwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxl
cy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxk
ZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQor
Cit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQx
N2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNk
ZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgor
ICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZjcwMTdiMzFjYjM3MDVkMWYxODU4YWQ1NWFjOGNiNjFl
YWNmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBm
b3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFi
bGUKKyAgbmV4dCAgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZUZ1bmNOZXh0ICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAgICAgIEdlbmVyYXRvclByb3RvdHlwZUZ1
bmNSZXR1cm4gICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAgICAgIEdl
bmVyYXRvclByb3RvdHlwZUZ1bmNUaHJvdyAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2ws
IGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2
bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJv
dG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDll
M2E0ZjM4MzQ4NGRjY2IyZTFkMWYwMmJjMzFmNDcyZTdmYjc3ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQ
cm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXAp
KSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30K
KworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJi
MDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5lNTE0ZWZmNDkxM2U3NjExMzBkNjdiMGUzZWI0MGFl
ZDA2YzFlYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0
OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+
Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3Rv
dHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVj
dXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkK
KyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAg
IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE0Nzg0YTE1YzhlOGU1Mzk4NGY5
OGU0YjQ2ZWUwNWYxMTk0NmZlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgor
CisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBKU0dlbmVyYXRvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvcikgfTsKKworSlNHZW5lcmF0
b3I6OkpTR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKQoreworfQorCitKU0dlbmVyYXRvciogSlNHZW5lcmF0
b3I6OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5l
cmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkp
IEpTR2VuZXJhdG9yKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NF
UlQoZ2VuZXJhdG9yLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRv
ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9u
KCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3IsICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIik7
CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9yOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChnZW5lcmF0b3ItPnN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ5YTcyYWJm
ZGRiZTAyZTE3MjJhYjQ3ZWE4NDU5MjY2N2RjZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JfaAorI2RlZmluZSBKU0dlbmVy
YXRvcl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dlbmVyYXRvciA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3Mg
SklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0
aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAg
ZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
CisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2Vu
ZXJhdG9yKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9yKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0
cnVjdHVyZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5s
aW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5
LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJh
dG9yKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2MzYmJiM2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUg
IlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JG
dW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pT
R2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5j
dGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlv
biA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhl
YXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNT
RVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+
c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAi
QWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JG
dW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5l
cmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3Ry
dWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBm
Mzg1MWIyMWU4YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJh
dG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9u
IDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxF
KERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiog
Y3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAg
ICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUy
NWE0N2NjODY4YjEyODkxLi44NDVhZDUwMTllM2E1YTE3MDAyNTFjZDU5YzY4NDY0YmY2MjRhMzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAg
LTcyLDYgKzc1LDggQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xs
YXJWTVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iu
c2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVy
YWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJ
RXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAog
ICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7
CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0
aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9l
dmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNj
b3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2Nv
cGVTdHJ1Y3R1cmUpOwpAQCAtODQ5LDYgKzg2MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4
NTEwNC4uZDIyZGU3YWU2YjVjNTA4ZTA1MGZjYjBhMTg2NzI2M2ZhYTEwNzAzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2
Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOwor
Y2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBj
bGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTExMiw2ICsxMTQs
NyBAQAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBNYXBJdGVyYXRvciwgbWFw
SXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU2V0SXRlcmF0
b3IsIHNldEl0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFN0
cmluZ0l0ZXJhdG9yLCBzdHJpbmdJdGVyYXRvcikgXAorICAgIERFRklORV9TVEFOREFSRF9CVUlM
VElOKG1hY3JvLCBHZW5lcmF0b3IsIGdlbmVyYXRvcikgXAogCiAjZGVmaW5lIEZPUl9FQUNIX0JV
SUxUSU5fSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElO
KG1hY3JvLCBJdGVyYXRvciwgaXRlcmF0b3IpIFwKQEAgLTIyOSw2ICsyMzIsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBX
cml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJy
aWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFy
cmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsK
QEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9m
ZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRl
cmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVy
YXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBn
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTIsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1
Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CkBAIC01NDQsNiArNTUxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBhcnJh
eUJ1ZmZlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJQcm90b3R5cGUu
Z2V0KCk7IH0KKyAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVG
SU5FX0FDQ0VTU09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJv
cGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICBTdHJ1Y3R1cmUqIHByb3Blck5h
bWUgIyMgU3RydWN0dXJlKCkgeyByZXR1cm4gbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmE4ZjNkODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0g
KG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwu
R2VuZXJhdG9yRnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rp
b24uX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90
b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265018</attachid>
            <date>2015-11-08 07:58:26 -0800</date>
            <delta_ts>2015-11-08 10:43:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151109005823.patch</filename>
            <type>text/plain</type>
            <size>86271</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
N2RhZjE5N2RiOTVjNzM3ODM1NDBhMDZlYWM2MzE2ZDQzNjI3OGI5Li5kN2Q4MzAxOGZkOWMwZjI0
MGJkZjc0ZTUzNzQxNTY5NWU2Nzc3MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTUtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpF
eGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc0dlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9B
U1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25J
bmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNs
YXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNv
dXJjZVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAg
IChKU0M6OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNl
TW9kZSk6CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFy
c2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Okdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJh
dG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpT
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpKU0dlbmVyYXRvcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dl
bmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6
SlNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5j
dGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQ
cm90b3R5cGUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29u
c3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCiAyMDE1LTExLTA4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMuanMgc2hvdWxkIHN1cHBvcnQgQGludGVybmFsIGFubm90YXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkYmM5NmNjZTMxYWUxZDkyMzhm
MDg3OTI1YmJjZTM5MjliNGRmZmY4Li43NWNjNDZlMjdmZjdlNzdlYzg2ZTU5NThhYTMxYzFjYjQ0
NTIzNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjAsNiArNTYw
LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBy
dW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTU5OSw2ICs2MDIsOCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogICAgIHJ1
bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisgICAgcnVudGltZS9KU0dlbmVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcApAQCAtNzU0LDYgKzc1OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9OQVRJ
VkVfT0JKRUNUX0xVVF9TT1VSQ0VTCiBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTl9PQkpFQ1Rf
TFVUX1NPVVJDRVMKICAgICBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGlt
ZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAog
ICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMTIwNiw2ICsxMjEyLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjk3ZGQ5MDVlZWRiOWM4MWFhNjFkOTU2Y2ExYWE2ZDg4NjgxMTQ2NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJv
dG90eXBlLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNl
IHN0cmljdCI7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmlj
dCI7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
CmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjU1N2I2ZjRj
NGQ1OTlmNTA1MmNhYTQwOTQyYTc5YzA1NTEyMDY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxNCArMzEsMTQgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRh
YmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmlj
dE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1v
ZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OSw3
ICs0OSw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAtNTgsNyArNTgs
NyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
IDogMTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZh
OGI1NzYuLjdjOGZjM2NmOWE5NjAzZTMxNzZhZDcyY2RmMmI1ODQwNGE1NzdlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cApAQCAtNjUsMTAgKzY1LDEwIEBACiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNl
KQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAg
ICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1
Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlv
bigpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBt
X2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkp
CiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwg
bV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAw
MDE2NWI4NjFmMGY4M2NmLi42YjA0NmQ5MjFlN2I3YmM1MGNmN2QzYzM3ZTBkOGNhOTA5ZDJlNWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTM4NywxMiArMzg3
LDEyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5z
aWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RM
aW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1u
OwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBt
X2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLmZk
YjM5N2Q0MGRkMTZlMjkxMjM0NzdiODhhYzZkZTVkYWM4ZThlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5j
dGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9y
JiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpT
UGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJ
blN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
ZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5j
dGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRp
b24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsK
KyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5j
dGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhl
Y3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJh
dG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQo
KSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50
U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgp
OwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC05OSw3ICs5OSw2IEBAIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2so
CiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1
bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0
aW9uKCkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBAIC0xODAsNyArMTc5LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dp
dGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2
LDcgKzE5NSw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
ICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlz
QXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li4z
OWQ4YzMzNDIzOWRmNmVhMzM2MDY3MWM4MGU0MTdmZTZkNzYxOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAg
ICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQ
YXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9t
R2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsNyArMTI1LDYgQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAg
Ym9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVj
dG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVu
dmlyb25tZW50Jik7CkBAIC0xNTgsNyArMTU3LDYgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVu
c2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDJiZTcyMGExMDIzZjVjNTllOTEyOWI5
ZmY1MWZiZWE1NzVlYThlMjIuLjlkNTNlMTdkMzc4NTkyOWZlNTBjNjBlM2IyYWM5MGEzM2M0Mzk2
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00NjAsMTMgKzQ2MCwyMSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkp
IHsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUo
KTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3Ro
aXNSZWdpc3Rlcik7CisgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkg
ewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lz
dGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCiAgICAgICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRo
aXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgICAgIC8vIEV2
ZW4gaWYgaXQncyBub3QgY2FsbGVkIHdpdGggYG5ld2AsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHBy
b2R1Y2VzIGEgZ2VuZXJhdG9yIHdpdGggYGNyZWF0ZV90aGlzYC4KKyAgICAgICAgICAgIGVtaXRN
b3ZlKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICAgICAgZW1p
dENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1
Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpIHsKICAgICAgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciIpOwogICAgICAg
ICB9IGVsc2UgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNF
dmFsKCkpIHsKQEAgLTQ3Niw5ICs0ODQsNiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVz
ZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYTZkMjI3NzkwMGY1ZGVl
ZmE0YTZmNTJhNzg4ZjJlMDIzN2IzNDMyMC4uZTcwM2E4YTA4MjBlMjQwNjI2YmNmZDFjZDE2NDgy
MDY2MWUwZDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjUwLDYgKzY1MCw4IEBACiAgICAgICAgIGJv
b2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
OyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAgIGJvb2wgaXNHZW5lcmF0
b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCmluZGV4IGVhNGZmZGRjMzA3MzVmYjUzNTk5MTZiNzMxZjk0NmVhZmZm
ZjhiNDguLjgxZDUzM2MxMTNjN2Y3Y2E5NjM1ZTEzYjBkZWZmOWUxOGIwZjJlOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
QEAgLTI5NTMsMjYgKzI5NTMsMzMgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0
YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICBpZiAo
Z2VuZXJhdG9yLmlzR2VuZXJhdG9yRnVuY3Rpb24oKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29k
ZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZv
IGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBj
b2RlLgorICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRo
aXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOwor
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CiAKLSAgICAvLyBD
aGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21w
b3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmds
ZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0
ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+
bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFz
dFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9k
ZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAg
fQorICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2Yg
YSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmds
ZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAg
U3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05v
ZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAo
bGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2Rl
Kj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CiAKLSAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0gICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVt
aXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0
aGUgdXNlcidzIHNvdXJjZSBjb2RlLgotICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBs
aW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxM
ZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBp
bnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5j
dGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3Ig
dGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4K
KyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CmluZGV4IGNmNzE0MGJjNDkzNWU4OGMwMGRjMjFlZDZiOTI2MGFkOTU4Y2NlODMuLmY3ODExZmRj
YWYyNTRmOTljNGYxZmQyOWVmODlmOTRkY2E1ZmY0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjcsMTIgKzM2NywxMiBAQCBjbGFzcyBBU1RCdWls
ZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlu
U3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5k
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAg
ICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBt
b2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAg
ICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3Vu
dCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0
aW9uSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYz
OTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUw
NmU5YTU5NzhlYmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJs
ZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShl
bmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAg
ICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dy
YW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+JiYgY2xvc2VkVgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9p
c0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsK
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBi
ZDFmNmQ1Nzk0ZDk2NGZiMzIyZjRkMDA4MDMxMTY4MDI4NGJkY2EuLjQ4NDk4MmQ1YzEyNzUwNmFj
OTlhZDFkY2FjY2NhNDhkZDZjZmIxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAg
ICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQs
IGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2lu
Zyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAg
ICAgICAgIApAQCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0K
ICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNl
dExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcgKzE4NjQsNiBAQAogICAgICAgICBT
b3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0g
ICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM1NjRlMzM0NmE5MWIyNWY4Y2U2Mzkx
Y2E0NzVhMzNmNjBlYjM0YmIuLjc1ZWRiM2QyODk2MzBkY2QyZjMyNzI4MGI1YzY2ZjJmZDBjNTU5
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI3MSw4ICsy
NzEsMTQgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9u
U2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxz
ZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxl
bWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKSB7CisgICAgICAgICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlT
Y29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yQm9keVNj
b3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsK
KyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29u
dGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVj
a0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGlu
ZzsKQEAgLTE1NTQsMTMgKzE1NjAsMTIgQEAKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVy
c1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJv
ZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5
cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxv
Y2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVj
dG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTE1NzIsNyArMTU3Nyw3IEBACiAgICAgZWxzZQogICAgICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9y
U3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fu
bm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2Yg
dGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExv
Y2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJv
d0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTU4OCw2ICsxNTkzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0
dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgog
ICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24i
OwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAg
cmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlOgpAQCAtMTc3NiwxMiArMTc4MywxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9j
YXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAg
IHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBt
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAg
ICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgK
ICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9k
eVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAg
IGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFy
YW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0g
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0
cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1v
ZGUsIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJD
YWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzk1LDcgKzE4MDAsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5l
KTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0
aW9uT2Zmc2V0OwogCi0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmICht
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBm
dW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrOwpAQCAtMTgxNywxNCArMTgyMiwyMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFz
dEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3Rh
dGUgPSBzYXZlU3RhdGUoKTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1v
ZGUpOworCisgICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAg
ICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3Bl
UmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVy
YXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5j
dGlvbkJvZHkoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJm
b3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0
ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhl
IGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0
KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZv
Lm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyArMTkw
Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAg
ICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRp
b24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVu
Y3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsK
QEAgLTIwNDQsNyArMjA1OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYg
KGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2Vu
ZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5v
dCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAg
IH0KQEAgLTI5OTEsNyArMzAwNSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFy
eU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2NhdGlvbiBtZXRob2RMb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0ID0gdG9rZW5TdGFy
dCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKLSAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CisgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIG1ldGhv
ZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMyNDQsNyArMzI1OCw3IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQog
ICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUo
VElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNh
bm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTUxNGJkYzQxYzhlMjE2MGJlODUyOWE0OWU2NDMwZWY1
YTkyOTQ0Ni4uZjk0ZjYyZjAxMmNlZTE5YTgzODM5MjRjZTJmZDQ1NGNmNzkyZGZiMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yNDUsNiArMjQ1LDcgQEAgc3RydWN0
IFNjb3BlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAobW9kZSkgewogICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICAgICAgICAgIHNldElzR2VuZXJhdG9yKCk7
CiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEyOWJkNzE1NTI4YmU4ODUu
LmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEwYzAyOWNiM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIGVudW0g
Y2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3JtYWxGdW5jdGlvbk1vZGUsCiAgICAgR2Vu
ZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwK
ICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUsCkBAIC02MSw2ICs2Miw3IEBAIGlubGlu
ZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAg
ICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1
LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1v
ZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcs
NyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNzM5NzQ3Nzc0YTYxMGQ1MzhlMTI4MDlk
Njg5NjZiYjQ3MWMzYjFmNC4uZTc5ZDIxZjU1YjY4ZTUwMDZjODA5YmZiNGI5ODI2MGVmMWQ0NDQz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAg
LTE4Niw3ICsxODYsNyBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBDbGFzc0V4cHJlc3Np
b24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5k
aWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1
cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9k
ZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5
UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVT
dGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFy
Z3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKaW5kZXggOTU3MmJjMWY0YmRmMmFkNjI3NDVhMjQ3MDI1MTFhNjRj
NzlmOTA1ZC4uNTRjNGY1ZDI0MWE2MDA3NzQ1ZThmZTg3Yzk4ZjY5NzE5YTNmNzkxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3Ip
IFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBc
CiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNP
TikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRl
eCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi5kMTYxOTk4NDMzOGE5
MWEyZDI4NzVjNmJkY2QzYmM2Njc3MjRlNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2Ny
aXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhl
Y3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
ciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAg
ICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IGZpcnN0TGluZSgpLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li4zZjI2YTEy
ZDJkYmZlMzhlZmUyNTBjOWY1MDdkNWVjODY2NzEzZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAg
IERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFs
c2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1NDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xB
UkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBm
dW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2Rl
KCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAg
ICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUo
KTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0K
ICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7
IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYTU3MzI5NjIzZTQ0NmZiNTgzNTQwYjkyYTkzNzJlZWUwYmNh
MGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiUGFyc2Vy
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgSlND
IHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07
CisKK0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBn
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgIkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBv
ZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVy
biBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1
Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NmUyNDFhZTA4NTYzMDlhNmU0NTQ3Y2MxZjM1MmU4YzgxYmY3MGZm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJC
dWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAi
TGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNGY3MDE3YjMxY2IzNzA1ZDFmMTg1OGFkNTVhYzhjYjYxZWFjZmE5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNs
dWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAm
QmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICAg
ICBHZW5lcmF0b3JQcm90b3R5cGVGdW5jTmV4dCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIHJldHVybiAgICAgICBHZW5lcmF0b3JQcm90b3R5cGVGdW5jUmV0dXJuICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRocm93ICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGVG
dW5jVGhyb3cgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lk
IEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJH
ZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFk
ZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nh
c3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZTNhNGYzODM0ODRkY2NiMmUx
ZDFmMDJiYzMxZjQ3MmU3ZmI3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
R2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQ
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVm
aW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5
MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJv
b2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxs
cHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAg
ICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9
IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE0Nzg0YTE1YzhlOGU1Mzk4NGY5OGU0YjQ2ZWUw
NWYxMTk0NmZlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisj
aW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dl
bmVyYXRvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvcikgfTsKKworSlNHZW5lcmF0b3I6OkpTR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgc3RydWN0dXJlKQoreworfQorCitKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0
ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJh
dG9yKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoZ2VuZXJh
dG9yLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvci0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlm
eVdyaXRlKHZtLCBnZW5lcmF0b3IsICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIik7CisgICAgcmV0
dXJuIGdlbmVyYXRvcjsKK30KKworSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9yOjpjcmVhdGVXaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
LCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChnZW5lcmF0b3ItPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IGdlbmVyYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ5YTcyYWJmZGRiZTAyZTE3
MjJhYjQ3ZWE4NDU5MjY2N2RjZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JfaAorI2RlZmluZSBKU0dlbmVyYXRvcl9oCisK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dl
bmVyYXRvciA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lm
IEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwor
ICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNs
YXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgY29u
c3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yKiBj
cmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIEpTR2VuZXJhdG9yKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSop
OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5l
Q2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yKFZNJiwg
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzYmJi
M2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9y
RnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dl
bmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVy
YXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRv
ckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9u
RnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGlu
ZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsK
K30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5j
dGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0
YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCkt
Pmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBmMzg1MWIyMWU4
YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rp
b25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBM
TEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGlj
IEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQp
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0N2NjODY4
YjEyODkxLi44NDVhZDUwMTllM2E1YTE3MDAyNTFjZDU5YzY4NDY0YmY2MjRhMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01
MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1
LDggQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJT
eW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVF
cnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkp
OworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5j
dGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2Jq
ZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9m
dW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBA
IC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9i
amVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBt
X3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7
CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1
cmUpOwpAQCAtODQ5LDYgKzg2MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEwNC4uZDIy
ZGU3YWU2YjVjNTA4ZTA1MGZjYjBhMTg2NzI2M2ZhYTEwNzAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4IEBACiBj
bGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNz
IEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOworY2xhc3MgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9i
YWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTExMiw2ICsxMTQsNyBAQAogICAg
IERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBNYXBJdGVyYXRvciwgbWFwSXRlcmF0b3Ip
IFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU2V0SXRlcmF0b3IsIHNldEl0
ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFN0cmluZ0l0ZXJh
dG9yLCBzdHJpbmdJdGVyYXRvcikgXAorICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3Jv
LCBHZW5lcmF0b3IsIGdlbmVyYXRvcikgXAogCiAjZGVmaW5lIEZPUl9FQUNIX0JVSUxUSU5fSVRF
UkFUT1JfVFlQRShtYWNybykgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBJ
dGVyYXRvciwgaXRlcmF0b3IpIFwKQEAgLTIyOSw2ICsyMzIsNyBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJp
ZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJl
Z0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJh
dG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIAog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2
ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90
b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3Rv
dHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVT
dHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAg
IFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CkBA
IC01NDQsNiArNTUxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CiAKICAgICBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBhcnJheUJ1ZmZlclBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJQcm90b3R5cGUuZ2V0KCk7IH0K
KyAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVGSU5FX0FDQ0VT
U09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwg
aW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICBTdHJ1Y3R1cmUqIHByb3Blck5hbWUgIyMgU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4ZjNk
ODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0
cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5j
dGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9y
RnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90
b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUuY29u
c3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265020</attachid>
            <date>2015-11-08 10:43:37 -0800</date>
            <delta_ts>2015-11-09 10:22:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151109034334.patch</filename>
            <type>text/plain</type>
            <size>83545</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
N2RhZjE5N2RiOTVjNzM3ODM1NDBhMDZlYWM2MzE2ZDQzNjI3OGI5Li5lYmQzZjQ2ZWRjZDY0M2Fm
MWNhMWU2MDdmNWZmOGEwNWIwNDA1M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTUtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpF
eGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc0dlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9B
U1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6
OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
b3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJN
b2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpT
Qzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUp
OgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQ
cm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorCiAyMDE1LTExLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgZ2VuZXJhdGUtanMtYnVpbHRpbnMuanMgc2hvdWxk
IHN1cHBvcnQgQGludGVybmFsIGFubm90YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBkYmM5NmNjZTMxYWUxZDkyMzhmMDg3OTI1YmJjZTM5MjliNGRmZmY4Li42NDI4
MWVmOTM0NmJkMmIxNGY1NGVmODIxMzBlOTJmNTc1YTYyZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01NjAsNiArNTYwLDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JV
TlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAg
IHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAg
LTU5OSw2ICs2MDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAg
cnVudGltZS9KU0RhdGVNYXRoLmNwcAogICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5j
cHAKICAgICBydW50aW1lL0pTRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAg
ICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5jcHAKQEAgLTc1NCw2ICs3NTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTkFU
SVZFX09CSkVDVF9MVVRfU09VUkNFUwogc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5fT0JKRUNU
X0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAK
ICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyMDYsNiArMTIxMSw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEwMDNlNGZiZDhiMmFkNmM3OTc2ZmIxZTAxMmZiODhkNmUyNGE5NzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQodmFsdWUpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJh
dG9yU3RhdGUsIHZhbHVlLCAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdl
bmVyYXRvclN0YXRlLCB2YWx1ZSwgMSk7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dCh0
aGlzLkBnZW5lcmF0b3JTdGF0ZSwgZXhjZXB0aW9uLCAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0NTBm
ZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1ZC4uNTU3YjZmNGM0ZDU5OWY1MDUyY2FhNDA5NDJhNzlj
MDU1MTIwNjkwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmgKQEAgLTMxLDE0ICszMSwxNCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVj
dCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRp
b24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3Is
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3Rp
dmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVj
dG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0
aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAg
ICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3Ry
dWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVp
bHRpbkZ1bmN0aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlz
QXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvbnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEV4ZWN1
dGFibGVJbmZvIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29u
c3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIFNvdXJjZVBhcnNl
TW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXgg
YzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uN2M4ZmMzY2Y5YTk2MDNl
MzE3NmFkNzJjZGYyYjU4NDA0YTU3N2VlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCArNjUsMTAgQEAK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1f
aXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCiAgICAgLCBtX2ZpcnN0TGlu
ZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQor
ICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkK
ICAgICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCmluZGV4IGZhNTE0YzE1NmE3Y2I3Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLjZiMDQ2
ZDkyMWU3YjdiYzUwY2Y3ZDNjMzdlMGQ4Y2E5MDlkMmU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMTYsNyArMTE2
LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9
CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRz
RnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMzg3LDEyICszODcsMTIgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAKKyAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgQ29kZVR5
cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNmRhMTg1OWIz
YWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uZmRiMzk3ZDQwZGQxNmUyOTEyMzQ3N2I4
OGFjNmRlNWRhYzhlOGVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01MCw3ICs1
MCw3IEBACiBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsCi0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBl
eGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVp
bHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQ
YXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJz
ZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkp
OwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhl
Y3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2
YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qs
IGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29u
c3RydWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5m
byhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5j
dGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25L
aW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3Rvcktp
bmQoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7
CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkKQEAgLTk5LDcgKzk5LDYgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJp
bGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5k
KCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBt
X2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVj
dG9yS2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKTsKQEAgLTE4MCw3ICsxNzksNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5s
aW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKLSAgICBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2lu
ZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CkBAIC0xOTYsNyArMTk1LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29k
ZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVy
YXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwg
c3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAg
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBlcnJvciwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgZXJyb3IsIHBhcnNlTW9kZSk7CiAgICAgCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGQ4ZTgyMjkz
OTBlNTc3Y2I0ODBmYjBlOTI5M2Y0MWJhNDJkOWMxZjguLjM5ZDhjMzM0MjM5ZGY2ZWEzMzYwNjcx
YzgwZTQxN2ZlNmQ3NjE5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC05NSw3ICs5NSw3
IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJv
b2wpOworICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0
KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSw3ICsxMjUsNiBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFi
aWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3Rv
ckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
czsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTE1OCw3
ICsxNTcsNiBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0QWJpbGl0eTogMTsKICAgICB1bnNp
Z25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUg
OiAxOyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7
CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggMmJlNzIwYTEwMjNmNWM1OWU5MTI5YjlmZjUxZmJlYTU3NWVhOGUyMi4uOWQ1
M2UxN2QzNzg1OTI5ZmU1MGM2MGUzYjJhYzkwYTMzYzQzOTYyMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTQ2MCwxMyArNDYwLDIxIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgfQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAg
IGlmICghY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOworICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICBpZiAoZnVu
Y3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAg
ICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92
ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYg
KGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKICAgICAgICAg
ICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOwor
ICAgICAgICB9IGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgLy8gRXZlbiBpZiBpdCdzIG5vdCBjYWxsZWQg
d2l0aCBgbmV3YCwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gcHJvZHVjZXMgYSBnZW5lcmF0b3Igd2l0
aCBgY3JlYXRlX3RoaXNgLgorICAgICAgICAgICAgZW1pdE1vdmUoJm1fdGhpc1JlZ2lzdGVyLCAm
bV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVn
aXN0ZXIpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSkgewogICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CiAgICAgICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25O
b2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkgewpAQCAtNDc2LDkgKzQ4
NCw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rp
b25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAg
IGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9CiAKICAg
ICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURl
ZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCBhNmQyMjc3OTAwZjVkZWVmYTRhNmY1MmE3ODhmMmUwMjM3YjM0
MzIwLi5lNzAzYThhMDgyMGUyNDA2MjZiY2ZkMWNkMTY0ODIwNjYxZTBkMjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02NTAsNiArNjUwLDggQEAKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpOyB9CisKKyAgICAgICAgYm9vbCBpc0dlbmVyYXRvckZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
ZWE0ZmZkZGMzMDczNWZiNTM1OTkxNmI3MzFmOTQ2ZWFmZmZmOGI0OC4uYWE3YTdhN2ViNTlmOGZk
ZmU2Yzk5ZWY1MWMwYzgxZWFmYzlmZjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjk1MywyNiArMjk1Myw0OCBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRF
bnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5l
U3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3Rh
dGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJu
Tm9kZSA9IDA7CisgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRvckZ1bmN0aW9uKCkpIHsKKyAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVt
ZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgp
KTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhw
ci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgIC8vIENoZWNrIGZvciBhIHJl
dHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2lu
Z2xlIGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5p
c0Jsb2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sg
PSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50
KCk7Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5C
bG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nh
c3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSk7CisKKyAg
ICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKDApKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0
ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0
dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9k
ZSkgewotICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkg
PyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVU
eXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJl
c3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIn
cyBzb3VyY2UgY29kZS4KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0
b3IudGhpc1JlZ2lzdGVyKCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJl
Y2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAgICAgQVNTRVJU
KHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjAp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNC
eXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAg
IFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgp
OworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVj
ayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3Nl
ZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5n
bGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFz
dFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1l
bnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxv
Y2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudElu
QmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdl
IG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUp
IHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3Io
KSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0
IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhl
IHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49
IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNmNzE0MGJjNDkzNWU4OGMwMGRjMjFlZDZiOTI2
MGFkOTU4Y2NlODMuLmY3ODExZmRjYWYyNTRmOTljNGYxZmQyOWVmODlmOTRkY2E1ZmY0MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjcsMTIgKzM2
NywxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAg
ICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFy
YW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVu
YSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAog
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rvcktp
bmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbklu
Zm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4u
MmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5NzhlYmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1O
b2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1u
KHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3
ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgICAgICAsIG1fcGFyc2VNb2Rl
KG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IDBiZDFmNmQ1Nzk0ZDk2NGZiMzIyZjRkMDA4MDMxMTY4MDI4NGJk
Y2EuLjQ4NDk4MmQ1YzEyNzUwNmFjOTlhZDFkY2FjY2NhNDhkZDZjZmIxNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNl
UGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAg
ICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmll
ciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAg
ICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZz
ZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3Rv
cktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247
IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxh
c3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcg
KzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAg
IHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM1
NjRlMzM0NmE5MWIyNWY4Y2U2MzkxY2E0NzVhMzNmNjBlYjM0YmIuLjNiNTk2MGIwNDc1N2YxMDJi
ZWNiNGE3OTVmZDhiMWI3NTkwNjJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQAogICAgIFNldEZvclNjb3BlPEZ1bmN0aW9uUGFy
c2VQaGFzZT4gZnVuY3Rpb25QYXJzZVBoYXNlUG9pc29uZXIobV9mdW5jdGlvblBhcnNlUGhhc2Us
IEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSk7CiAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uID0gZmFsc2U7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rp
b24oKSkgeworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkgJiYgcGFyc2VN
b2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgewogICAgICAgICBQYXJzZXJG
dW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAg
IG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwpAQCAtMjcxLDggKzI3MSwx
MiBAQAogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5n
bGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlm
IChpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVu
dHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGUpCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxl
bWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGJvb2wgdmFsaWRFbmRpbmc7CkBAIC00NTYsNiArNDYwLDM1IEBACiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9k
ZSkKK3sKKyAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVt
ZW50cygpOworCisgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CisgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKworICAgIHVuc2lnbmVkIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFy
dFBvc2l0aW9uKCk7CisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwor
ICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKwor
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50IHBh
cmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBTeW50
YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSks
IG1fbGV4ZXIuZ2V0KCkpOworICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2Vu
ZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBh
IGdlbmVyYXRvciIpOworICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Cisg
ICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGxvY2F0aW9uLCBs
b2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCAvKiBzdGF0ZSwgdmFsdWUsIHR5cGUgKi8gMywgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBz
dGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKKyAgICBjb250ZXh0LmFwcGVuZFN0
YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKworICAgIHJldHVybiBzb3VyY2VF
bGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VT
dGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciom
IGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7CiAgICAgLy8g
VGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTU1NCwxMyArMTU4NywxMiBAQAog
ICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
ayAhPSBib2R5VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0g
Ym9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRv
a2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU3Miw3
ICsxNjA0LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0
aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAg
dW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy
KiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNTg4LDYg
KzE2MjAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gIm1ldGhvZCI7CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIjsK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAg
ICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBAIC0xNzc2LDEyICsxODEwLDEw
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VN
b2RlIG1vZGUpCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0
aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9m
ZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAg
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwg
ZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4s
IAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29u
c3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBj
YWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29w
ZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBw
b3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKQEAgLTE3OTUsNyArMTgyNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVO
dW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5k
T2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlz
QXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZv
LT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDog
QXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rp
b25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODE3LDE0ICsxODQ5
LDIzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9u
TmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAg
IGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2Nh
dGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1
bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJz
aW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5
KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBm
dW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAg
IH07CisKKyAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZSkgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMs
IHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOworICAgIH0gZWxzZQorICAg
ICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAg
ICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlv
bkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZv
LmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9uU2NvcGUt
PnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUg
fHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1l
IGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8u
bmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBt
b2RlIik7CiAgICAgfQpAQCAtMTg5Miw3ICsxOTMzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAj
aWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAg
ICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRp
ZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5l
ZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVu
Y3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0
YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA0NCw3ICsyMDg1LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAgICAgICAgICAg
ICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlwZSciKTsK
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQg
J2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjk5MSw3ICszMDMyLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAg
SlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5z
aWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNH
ZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQs
IG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhv
ZEluZm8pOwpAQCAtMzI0NCw3ICszMjg1LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZf
R0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywg
cGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1
bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhNTE0
YmRjNDFjOGUyMTYwYmU4NTI5YTQ5ZTY0MzBlZjVhOTI5NDQ2Li41N2RhY2YxNGYyZWU1ZjdmYTVj
OTdlZDE2NWZiMGM5ODZmMTAwZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAgICAgc3dp
dGNoIChtb2RlKSB7CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
MTIzLDYgKzExMjQsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRp
ZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsK
ICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYy
YjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2
OTI5MjFhMGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCkBAIC00Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAg
ICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9y
RnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRo
b2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1v
ZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlz
TW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFt
UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDczOTc0Nzc3NGE2MTBkNTM4ZTEyODA5ZDY4OTY2YmI0NzFjM2IxZjQuLmU3OWQyMWY1
NWI2OGU1MDA2YzgwOWJmYjRiOTgyNjBlZjFkNDQ0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgY2xhc3MgU3lu
dGF4Q2hlY2tlciB7CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYs
IEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxp
c3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGlu
dCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rv
cktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1
bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhw
cjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDk1
NzJiYzFmNGJkZjJhZDYyNzQ1YTI0NzAyNTExYTY0Yzc5ZjkwNWQuLmU1OThkMjNlMTM0ZDYyYjE0
Yzk3ZGIwZTdlNGUzY2YxMTQyYTdlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3Jv
KEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
KyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAg
ICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMyOCw2ICszMjksOCBAQAog
ICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAg
bWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclN0YXRlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMw
M2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLmQxNjE5OTg0MzM4YTkxYTJkMjg3NWM2YmRjZDNiYzY2
NzcyNGU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlu
a2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwg
a2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRm
NmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLjNmMjZhMTJkMmRiZmUzOGVmZTI1MGM5ZjUw
N2Q1ZWM4NjY3MTNmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpA
QCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsg
fQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2su
Z2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
KCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02
NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNC
dWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5
KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0
cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXND
bGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlu
ZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0
ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJD
b3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsg
fQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBhNTczMjk2MjNlNDQ2ZmI1ODM1NDBiOTJhOTM3MmVlZTBiY2EwZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisK
KyNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CisjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7
CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQor
eworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rp
b24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29u
c3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVu
dW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitDYWxsVHlw
ZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30K
KworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIz
MmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAor
CisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7Cisg
ICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
ZTI0MWFlMDg1NjMwOWE2ZTQ1NDdjYzFmMzUyZThjODFiZjcwZmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07
CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0
OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4o
dm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTUwM2JkNjJjMDBh
ZWE4YjMwMjYzYzRkYjYwNTgxY2Q0ODdkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisj
aW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0
b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5l
cmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5
cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
Z2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgICAgIEdlbmVyYXRvclByb3RvdHlw
ZUZ1bmNOZXh0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAgICAg
IEdlbmVyYXRvclByb3RvdHlwZUZ1bmNSZXR1cm4gICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgdGhyb3cgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZUZ1bmNUaHJvdyAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5n
KCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5
cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFi
bGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBi
NDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVf
aAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdl
bmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUz
NzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEy
ODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBA
IC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmpl
Y3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpz
RXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBl
KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250
RW51bSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
ICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdjM2JiYjNhOWUwYTIzYjNkMzZhMmQyMzJjN2ZiNTdjODY1YjExNzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJh
dG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9Owor
CitKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9y
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2
bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAg
IEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsK
KyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGV4ZWN1dGFi
bGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlv
biwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpT
R2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rp
b24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24t
PnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MGY5ZTg4OThhY2U3OTBjZjY1YTBj
N2QwZjM4NTFiMjFlOGE5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5j
dGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVO
QUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNz
IFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgY29uc3Qg
c3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisK
KyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rp
b24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0
aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsK
KyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0
aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2JhNWFjMWFhMDU4YWMzOWVlNmU5
NjI1MjVhNDdjYzg2OGIxMjg5MS4uN2YxYTkyMzcyYjgzMmM0NDI2ZjBkMWRkYWI1NzQ4YjJiM2My
ODA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmgi
CkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpT
RG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxp
bmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JF
QVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlO
YW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVB
VEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwx
MSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9y
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVj
dHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJ
TGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9y
LCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0
cnVjdG9yLCBEb250RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVu
Y3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0
b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2
YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3
LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJh
dG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Z2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NDksNiArODYyLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2Nj
NzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQ
cm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRl
clNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAt
MjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJh
eVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQ
cm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQ
cm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3Bl
cnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNv
bGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdl
bmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBT
dHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJv
bE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhOGYzZDg2MmIzZDljYzE0ZThiYTU2NWVjZmIwOTE1MjEwMzJiNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9
IChuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFs
LkdlbmVyYXRvckZ1bmN0aW9uLCAnZnVuY3Rpb24nKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0
aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJv
dG90eXBlLmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265069</attachid>
            <date>2015-11-09 10:22:27 -0800</date>
            <delta_ts>2015-11-11 10:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151110032222.patch</filename>
            <type>text/plain</type>
            <size>87870</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTZjMWQ1YmU5ZjMxMTRiMzZlZmZlMzNmZjlkMjc0NDE1MmJiMmY3Li45YTM1NzM4OTM3NGRkNjZh
NWZkOTA3Y2Y0MWMzNWYzOTQ0NjdkZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMTUtMTEtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpF
eGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIu
aDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0
YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0
eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6Omlz
TW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToKKyAg
ICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90
eXBlOjpHZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
YXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKwogMjAxNS0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAogICAgICAgICBbRVM2XSBNaW5pbWl6ZSBFUzZfQ0xBU1NfU1lOVEFYIGlmZGVmcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRiYzk2Y2NlMzFhZTFkOTIzOGYw
ODc5MjViYmNlMzkyOWI0ZGZmZjguLjY0MjgxZWY5MzQ2YmQyYjE0ZjU0ZWY4MjEzMGU5MmY1NzVh
NjJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2MCw2ICs1NjAs
OSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1
bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNTk5LDYgKzYwMiw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVu
dGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
KyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAog
ICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzU0LDYgKzc1OCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9OQVRJVkVfT0JKRUNUX0xVVF9TT1VSQ0VTCiBzZXQoSmF2
YVNjcmlwdENvcmVfQlVJTFRJTl9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CiAgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMTIwNiw2
ICsxMjExLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAwM2U0ZmJkOGIyYWQ2Yzc5NzZm
YjFlMDEyZmI4OGQ2ZTI0YTk3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rp
b24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5A
Z2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIDApOworfQorCitmdW5j
dGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRo
aXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZhbHVlLCAxKTsKK30KKwor
ZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJl
dHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVyYXRvclN0YXRlLCBleGNlcHRpb24s
IDIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi41NTdi
NmY0YzRkNTk5ZjUwNTJjYWE0MDk0MmE3OWMwNTUxMjA2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzEsMTQgKzMxLDE0IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRh
YmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmlj
dE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhl
Y3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
CiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAs
IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RN
b2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAg
ICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fcGFy
c2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiAgICAgfQpAQCAt
NDksNyArNDksNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQog
CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU4LDcg
KzU4LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3Ry
dWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5j
dGlvbiA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhl
ZThmYThiNTc2Li43YzhmYzNjZjlhOTYwM2UzMTc2YWQ3MmNkZjJiNTg0MDRhNTc3ZWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhm
YWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigp
KQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29u
c3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVu
Y3Rpb24oKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAg
ICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9k
ZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAg
ICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5
ZjEwMDAxNjViODYxZjBmODNjZi4uNmIwNDZkOTIxZTdiN2JjNTBjZjdkM2MzN2UwZDhjYTkwOWQy
ZTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4g
bV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zODcsMTIg
KzM4NywxMiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNC
dWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsK
LSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2Zp
cnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVy
ZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2
Li5mZGIzOTdkNDBkZDE2ZTI5MTIzNDc3Yjg4YWM2ZGU1ZGFjOGU4ZWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZt
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93
RnVuY3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJF
cnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJC
dWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkg
PyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUt
PmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlv
bi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwg
RnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3Rp
dmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCks
IGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9u
KSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwg
ZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
IGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24u
Z2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBh
cmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJh
dGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtOTksNyArOTksNiBAQCBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2Rl
LT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dG
dW5jdGlvbigpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3Bl
VERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE3
OSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24p
CisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAg
IHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAg
LTE5Niw3ICsxOTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9y
LCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAg
ICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFm
OC4uMzlkOGMzMzQyMzlkZjZlYTMzNjA2NzFjODBlNDE3ZmU2ZDc2MTk5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwg
Ci0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291
cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDcgKzEyNSw2
IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQog
ICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25z
dHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJu
ICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYpOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAg
ICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyYmU3MjBhMTAyM2Y1YzU5ZTkx
MjliOWZmNTFmYmVhNTc1ZWE4ZTIyLi45ZDUzZTE3ZDM3ODU5MjlmZTUwYzYwZTNiMmFjOTBhMzNj
NDM5NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYwLDEzICs0NjAsMjEgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1Rhcmdl
dFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpKSB7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNvZGVCbG9jay0+cGFyc2VN
b2RlKCk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlKSB7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJs
b2NrLT51c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygm
bV90aGlzUmVnaXN0ZXIpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9y
KCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90
aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRDcmVh
dGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAv
LyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlv
biBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBl
bWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY29u
c3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAgICAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKICAg
ICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpKSB7CkBAIC00NzYsOSArNDg0LDYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90
aGlzUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBo
YXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVu
Y3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDdhMzlmN2RiZTU2
ZmY2MTdjOWUzZGM1ZGE4MTkyZDY1YjU5YTMwMmYuLjZhNTEzOTUxYzNiNmNhNWJlM2VlYmZhYWJk
ZmI1ZTczMWUxZjNjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY0Niw2ICs2NDYsOCBAQAogICAgICAg
ICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdI
b29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgp
OyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNzhkZGY1N2IwOTgwNTBk
Y2ZiNDRiZWVkYTljMGUxN2M1NjM4M2MyYS4uMWY1MWRkYWEzZWZmZDY4Y2IzNzY4MDUzMjI1NzFh
YTBkYzVhOTExZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjk1MywyNiArMjk1Myw3MiBAQCB2b2lkIEZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9m
ZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwg
c3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7
Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+
c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAg
c3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmds
ZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2lu
Z2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5n
bGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1l
bnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4o
ZXhwcik7CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQg
b2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xl
U3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRl
bWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4o
c2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRl
bWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAg
ICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVt
ZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQu
Z2V0KCksIGZ1bmNFeHByKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0
UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCkpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxT
dGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlJZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRl
KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkg
aW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCog
cjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
IDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5T
dGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmls
ZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9maWxl
VHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHBy
ZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2Vy
J3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFy
dE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2Fs
bEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgp
KTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0
TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9y
LCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25l
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25l
LmdldCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5l
bWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRy
eURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgp
LCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShn
ZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAg
ICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSBy
ZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNp
bmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1l
bnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVu
dEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0
U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFz
dFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
bk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0
b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Np
b24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBz
b3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFy
dE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2
ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2M4NWFjMGNiODM4NzUy
NDM4MjJkMWJkMDEzYTNmNzkzY2U3ZDlhOS4uNjIxNzk4OWY1Zjk1MGM2YmExMDcxZGIwN2Q3N2Fh
NDkxZmNmZjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
QEAgLTM2MywxMiArMzYzLDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2Rl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAg
ICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQs
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250
ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFy
cm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZk
M2Q5MzkzMzhjZTUwLi4yZGNhNzI0YzY1OTFlMWI2OTIzNTA2ZTlhNTk3OGViYWM1MGIwNzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAg
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFy
YW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAs
IG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29s
dW1uKQpAQCAtMTYzLDcgKzE2Myw2IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlh
YmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgICAg
ICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5T
dHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlz
QXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVj
dG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggY2RlNDlhOWI2YTYwNDU2OThlYmViZDRk
MDlhN2VjYjNhZTkyZmMzNC4uOTRjMGRkMGU4MjBlNDg4NTM5NTVhNDEzOWVkNTI1NTVmNmJjNDM2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgxMiw3ICsxODEyLDcg
QEAKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAK
ICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwg
dW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM4LDcgKzE4
MzgsNiBAQAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGlu
ZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNl
dCkKQEAgLTE4NjUsNyArMTg2NCw2IEBACiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNl
TW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uIDogMTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggMzc0YmNiMmNiMzViMDU0N2JhNWQzOWY0NTEzOTUzNzE3OTQzZjQxZC4uZGZl
ZmIzYmI1ZDA1MjgzYWViM2Q0ZGZjOThjNGY0M2Y1ODlmMzFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjQ3LDcgKzI0NywxMCBAQAogICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNS
ZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRl
eHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8u
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNl
TW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZv
LnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0yNzEsOCArMjc0LDEyIEBA
CiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4
cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlz
TW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9
IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNv
bnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkK
KyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25T
b3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
Ym9vbCB2YWxpZEVuZGluZzsKQEAgLTQ1Niw2ICs0NjMsNDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNl
RWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQor
eworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRz
KCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsK
KyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVTdGFy
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0
YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOzsKKyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1l
dGVyc1N0YXJ0OworICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5w
YXJhbWV0ZXJDb3VudCA9IDM7IC8vIHN0YXRlLCB2YWx1ZSwgdHlwZQorCisgICAgeworICAgICAg
ICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5lcmF0b3JG
dW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNv
bnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9yIik7Cisg
ICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGlu
Zm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSwgZmFsc2Up
OworCisgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5lbmRPZmZzZXQg
PSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFy
dENvbHVtbjsKKworICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5mbyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0
LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwg
bV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKKyAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVu
dChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKworICAgIHJldHVybiBzb3VyY2VFbGVtZW50
czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1l
bnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVj
dGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdy
YW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTU1NCwxMyArMTYwMCwxMiBAQAogICAgIFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBi
b2R5VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5
cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2go
Q0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2Rl
LCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU3Miw3ICsxNjE3
LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNTg4LDYgKzE2MzMs
OCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gIm1ldGhvZCI7CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIjsKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICByZXR1
cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBAIC0xNjY2LDYgKzE3MTMsMzIgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5l
cmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOworCisg
ICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JW
YWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOworCisgICAgLy8g
QGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJh
dG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsK
KyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVN
b2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rp
b25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
U3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTc3NiwxMiArMTg0OSwxMCBA
QCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlv
bi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZz
ZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAK
ICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0
cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
KyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2Fj
aGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUt
PnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9w
U2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CkBAIC0xNzk1LDcgKzE4NjYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVt
YmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9m
ZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAgICAgIGlmIChpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+
aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFy
cm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9u
Qm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAtMTgxNywxNCArMTg4OCwy
NCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5h
bWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKLSAgICAKLSAgICBm
dW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRp
b24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0byBwZXJmb3JtUGFyc2lu
Z0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShj
b250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVu
Y3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9
OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5m
by5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKyAgICAgICAgcG9wU2NvcGUo
Z2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1
bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFp
bElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zm
c2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlm
IChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0
aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICIn
IiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24g
bmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyArMTk3Myw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3Vt
ZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5v
dCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5h
bWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwNDMsNyAr
MjEyNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9y
KSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAg
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVk
ICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEg
Z2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI5ODks
NyArMzA3MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5U
eXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2NhdGlvbiBtZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CisgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNl
TW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRo
b2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9
IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhv
ZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMyNDIsNyArMzMyMyw3IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsK
ICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAg
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2Vu
ZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
Tm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbklu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBm
dW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25F
eHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKaW5kZXggZTIxM2UwNzJmYjgwZTc0OGY4NTYyNWE2NzM4Y2QxN2VjYTE2ZjA5Mi4uNTg1
ZjhjNDdiNDFjMjYwZDNjYWUwYWIzYzA3ZGYwYTZmZjE4YjAxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yNDMsNiArMjQzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAobW9kZSkgewogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKICAgICAgICAgICAgIHNldElzR2VuZXJhdG9yKCk7CiAgICAgICAgICAg
ICBicmVhazsKIApAQCAtMTExMyw2ICsxMTE0LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJz
ZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01v
ZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJz
ZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVj
dGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRl
ciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRl
cmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5v
dEV4cG9ydGVkIH07CkBAIC0xMTc1LDYgKzExNzcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2Rl
LCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWls
ZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5
NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEyOWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4
Yzk4MTNmNTY5MjkyMWEwYzAyOWNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VN
b2RlIHsKICAgICBOb3JtYWxGdW5jdGlvbk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBH
ZW5lcmF0b3JGdW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAog
ICAgIE1ldGhvZE1vZGUsCkBAIC02MSw2ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25Q
YXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9k
ZSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5l
IGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBp
c1Byb2dyYW1QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKaW5kZXggNWQzOTNhM2RhN2U3ZTU5ZGI4NmU2M2NkYmZhZGZkOTk1YTUxZTljOS4u
ZGJmNjg4MThhNTUxZmY0NWQzMjQ5M2JkM2I3NWQ4NTQ0NTViY2E4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCBj
bGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1cm4gWWllbGRF
eHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsg
cmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4
Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1
bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGlu
dCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJl
dHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJv
d0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lk
IHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1l
bnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA5NTcyYmMxZjRiZGYyYWQ2
Mjc0NWEyNDcwMjUxMWE2NGM3OWY5MDVkLi41N2ExMWI3MzFkOWMyMzczMmNmZDRhMDlkNDQ5NGIy
OGEzOWRjMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAg
IG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2Vu
ZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwp
IFwKICAgICBtYWNybyhKU09OKSBcCkBAIC0zMjgsNiArMzI5LDEwIEBACiAgICAgbWFjcm8oVWlu
dDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0
QXJyYXkpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9y
U3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRv
clJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3
ZDdhNDBkMzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhhOTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0ZTc3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAg
LTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9j
a0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2Rl
QmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBk
ZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVj
dXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJj
MjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uM2YyNmExMmQyZGJmZTM4ZWZlMjUwYzlmNTA3ZDVlYzg2
NjcxM2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApA
QCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAg
IHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7
IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIs
NyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsg
fQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiAr
NjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5G
dW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQot
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWRO
YW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7
IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1NzMy
OTYyM2U0NDZmYjU4MzU0MGI5MmE5MzcyZWVlMGJjYTBmNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUg
IkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJMZXhlci5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29u
c3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rv
cgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK0NhbGxUeXBlIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25z
dHJ1Y3RUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNi
OWE1NmM0ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBv
c2l0aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZlMjQxYWUw
ODU2MzA5YTZlNDU0N2NjMWYzNTJlOGM4MWJmNzBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMz
MTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFw
KSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NTAzYmQ2MmMwMGFlYThiMzAy
NjNjNGRiNjA1ODFjZDQ4N2Q2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3Rv
dHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclBy
b3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0
b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY05l
eHQgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgICAgR2VuZXJh
dG9yUHJvdG90eXBlRnVuY1JldHVybiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0
aHJvdyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlRnVuY1Rocm93ICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAi
R2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5h
ZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganND
YXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcw
ZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9y
UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdl
bmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
KyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30KKwor
I2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJiMDFl
MDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQzMmFi
ZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0OCw3
ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0
RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAo
IWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIHBy
b3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRh
YmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAg
ICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2MzYmJiM2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZN
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5j
dGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2Vu
ZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJU
KGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdl
bmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxs
b2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5j
dGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0
b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0
dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBmMzg1
MWIyMWU4YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9y
RnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Citj
bGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDog
cHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERG
R19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5k
IGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3Jl
YXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dl
bmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAg
ICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0
N2NjODY4YjEyODkxLi43ZjFhOTIzNzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIzYzI4MDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcy
LDYgKzc1LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJW
TVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIK
QEAgLTM4NCw2ICszODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
Z2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9U
T1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBB
U0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJ
TGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJVUklFcnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2
bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmdldCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRF
bnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKQEAgLTQyOCw2ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbiwg
ZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwgZ2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5SZWdFeHAsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RXZhbEVycm9y
LCBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04MTcsNiArODI4
LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0
aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29y
ZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNi
ODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMs
NiArNjMsOCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlw
ZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVy
OwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiAr
MjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90
eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBl
OwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlw
ZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlw
ZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZz
ZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9w
cml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsK
QEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQ
cm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlw
ZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9y
UHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
clByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhT
Y29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJl
Z0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4
ZjNkODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBG
dW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJh
dG9yRnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19w
cm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUu
Y29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265306</attachid>
            <date>2015-11-11 10:48:18 -0800</date>
            <delta_ts>2015-11-11 11:22:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151112034812.patch</filename>
            <type>text/plain</type>
            <size>107571</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
N2IzODUyYzhiY2RhOGU5NjdkYmZlNWI1NTIxYTlmYjZiNWIwNjQ3Li45NmJhM2JmNTg2YzMwZmNj
NWUwNmFkZjk1MWIwNDY2NDQ3MDlkZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMTUtMTEtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VN
b2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9w
ZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JTdGF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yU3RhdGU6OmFsbG9jYXRpb25TaXpl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yU3RhdGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5l
cmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6
YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0
b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCiAyMDE1LTExLTEwICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMgc2hvdWxkIGJlIGFibGUgdG8g
Y29tcGlsZSBhIHByb2dyYW0gd2l0aCBDaGlsbERpdgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDZmYTM0YzA5NGEzY2VhOTQ0MjE2NzU0MGI0YjFhNmFkYjFiNDE1NmYuLmMz
ZTA5MWY3YTMxMjc0Y2ZlYjMwY2EyNmRlMWNlYTY3NGJhNGFlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2MSw2ICs1NjEsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAg
ICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApA
QCAtNjAwLDYgKzYwMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3Jk
LmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAK
ICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM1LDYgKzczOSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9P
QkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5
Myw2ICsxMTk4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcwor
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAwM2U0ZmJkOGIyYWQ2Yzc5
NzZmYjFlMDEyZmI4OGQ2ZTI0YTk3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhp
cy5AZ2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIDApOworfQorCitm
dW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJu
IHRoaXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZhbHVlLCAxKTsKK30K
KworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVyYXRvclN0YXRlLCBleGNlcHRp
b24sIDIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCmluZGV4IGJkMjljNTVhMzczNTRkZTNlYmFhMjk1MzhhYjE3MWMyMDlmMTMzMTIu
LmFkMzg5YWFjNDVhMzY1ZjU2NmE3NGJmNjg2NmY0OTlhMDhhNWFiZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEyOCw2ICsx
MjgsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3Bu
YW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRl
eF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xv
YWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2Fzc2VydCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCAzMTUxMWU3YzFk
MWY1ZTk3Mzk3Y2QyYjRjZjQ5YmE4YjRjMzhiNDBlLi44NzQ3Nzk2YjI2Zjg4ZDhhN2Y2NzVkMjNk
NGIyYmIzZmIyNTQ4Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaApAQCAtNzAsNyArNzAsOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVs
bDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzogeworICAgIGNhc2Ugb3BfaW5j
OgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUzLDYgKzI1NSw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNh
c2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBv
cF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNh
c2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDE4ZmZhMDcwZWZjYzdlNjllODY3ZGNlZGNjNWM3
ODU5NzE4MGU0OGYuLmY0ODU2MmEwYmZhZDY2NDBjOTRmYTdkNDFiZTA3YWZhODM1MjNhMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDkx
LDYgKzE0OTEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVh
a3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKGdl
bmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0
ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFi
bGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi41NTdiNmY0
YzRkNTk5ZjUwNTJjYWE0MDk0MmE3OWMwNTUxMjA2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzEsMTQgKzMxLDE0IEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxl
SW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0
YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJp
Y3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAg
ICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2Rl
KQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1f
aXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAg
ICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fcGFyc2VN
b2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiAgICAgfQpAQCAtNDks
NyArNDksNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU4LDcgKzU4
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0
b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlv
biA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThm
YThiNTc2Li43YzhmYzNjZjlhOTYwM2UzMTc2YWQ3MmNkZjJiNTg0MDRhNTc3ZWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKQEAgLTY1LDEwICs2NSwxMCBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxz
ZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3Ry
dWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rp
b24oKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwg
bV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgp
KQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAs
IG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEw
MDAxNjViODYxZjBmODNjZi4uNmIwNDZkOTIxZTdiN2JjNTBjZjdkM2MzN2UwZDhjYTkwOWQyZTVj
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91
c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zODcsMTIgKzM4
NywxMiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVu
c2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWls
dGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAg
ICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMg
bV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li5m
ZGIzOTdkNDBkZDE2ZTI5MTIzNDc3Yjg4YWM2ZGU1ZGFjOGU4ZWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAg
IGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVu
Y3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0
aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7
CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4
ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0
KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUo
KTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtOTksNyArOTksNiBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5m
dW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5j
dGlvbigpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERa
VmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE3OSw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXph
dGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBw
cm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisg
ICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3
aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5
Niw3ICsxOTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAg
ICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwg
cHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBp
c0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBp
ZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4u
MzlkOGMzMzQyMzlkZjZlYTMzNjA2NzFjODBlNDE3ZmU2ZDc2MTk5MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0g
ICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNl
UGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDcgKzEyNSw2IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1
Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYs
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVF
bnZpcm9ubWVudCYpOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1
bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5ZWU2MTExY2MzZDA3ZjYzNDRjOTVl
MDhmMmRlZTlkZmM4MDY1NGMyLi4yZjNhODM0YmQyMmY5MmYzMDcyMDI5ZmE5MWU4NDA5OTIxMjE0
N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjUxLDI5ICsyNTEsNjUgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgp
OwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsK
LSAgICAKLSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQo
KSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKLSAgICAgICAgYm9vbCBpc0R5bmFt
aWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwo
KSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIGJvb2wgaXNGdW5jdGlvbk5h
bWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwotICAg
ICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5h
bWVDYXB0dXJlZDsKLSAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5v
ZGUtPmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7Ci0gICAgfQot
ICAgIAotICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7Ci0gICAgICAgIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICAgICAgLy8gV2UgY2Fu
IGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQg
cGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCi0gICAgICAgIC8vIGRlZmF1bHQgcGFy
YW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhl
ICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKLSAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBv
ZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KLSAg
ICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXMoKSkKLSAgICAg
ICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4KTsKLSAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3Mg
YWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVy
cwotICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCi0gICAgbV9wYXJhbWV0
ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRo
aXMiCi0gICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIo
KS0+aW5kZXgoKSk7IC8vIHRoaXMKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1l
dGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsKKyAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAg
ICAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRv
ciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0
ZS4KKworICAgICAgICAvLyBBbGwgdGhlIHBhcmFtZXRlcnMgZm9yIGEgZ2VuZXJhdG9yIHNob3Vs
ZCBubyBiZWNvbWUgaGVhcCB2YXJpYWJsZS4gU28gd2UgY2FuIGluaXRpYWxpemUgdGhlbSBoZXJl
LgorICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgKEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkuCisgICAgICAgIG1fcGFyYW1ldGVycy5n
cm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgor
ICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigp
LT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFy
YW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVy
KCk7CisKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBl
bWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOworCisgICAgICAg
IC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9u
J3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0
aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGlu
c3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5pbmcs
IGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50YXRp
b24uCisKKyAgICAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB3ZSBjYW5ub3QgZW1pdCBgYnJlYWtg
LgorICAgICAgICBiZWdpblN3aXRjaCgmbV9wYXJhbWV0ZXJzWzFdLCBTd2l0Y2hJbmZvOjpTd2l0
Y2hJbW1lZGlhdGUpOworCisgICAgICAgIC8vIEFuZCBoZXJlIGlzIGEgY29kZSBmb3IgYW4gaW5p
dGlhbCBzdGF0ZS4KKyAgICAgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgICAgIGVt
aXRMYWJlbChsYWJlbC5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZU
aGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBh
ZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJv
bm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYg
d2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdl
IGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVj
YXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJv
bm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGlmICghcGFy
YW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgaW5p
dGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29w
ZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7
CisgICAgICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5
bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
KyAgICAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0
aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJl
ZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CisgICAgICAgICAg
ICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChz
aG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAgICAgICBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4gYWxsb2Nh
dGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0
ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgcGFyYW1l
dGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2
YXIiIGVudmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUg
b2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisg
ICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQor
ICAgICAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFi
bGVDb25zdGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUg
Y29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1
cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUg
bm90ZWQuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7
IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJ
bmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQogICAgIAogICAgIC8vIEZp
Z3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAg
IGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwpAQCAtNDYwLDEzICs0OTYs
MjAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAK
ICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2st
PmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNU
aGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRBcnJv
d0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVn
aXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICAgICAgICAgIGVtaXRNb3Zl
RW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7
CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3aXRoIGBuZXdgLCBhIGdl
bmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGBjcmVhdGVfdGhpc2Au
CisgICAgICAgICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAg
IH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSB7
CiAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3IiKTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSArNTE5LDYgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlz
KCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1
bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFy
KCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZh
bHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtMzgxMyw0ICsz
ODUzLDQxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFsaWRhdGVGb3JJbkNvbnRleHRG
b3JMb2NhbChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAgfQogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KQorewor
ICAgIFJlZ2lzdGVySUQqIHN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIobV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKSk7CisgICAgZW1pdFB1dEJ5SWQobV9nZW5lcmF0b3JS
ZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHN0YXRl
KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsK
KworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsK
KyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIHJldHVybiAmbV9wYXJhbWV0ZXJzWzJd
OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUoTGFi
ZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRj
aENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFz
dCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFd
ID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0
aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+Ymlu
ZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsg
Myk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxv
Y2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3
aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVt
cFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUo
KSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMg
c2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQg
bm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JS
ZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBt
X2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRy
ZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggZDE5MWY5OWY1ZjA5YTdjZTQ2Njk3YTdiOTA0OTBkZDk0OWE0N2FiYS4uZTg4ZTkzOWY2ZDNj
MjBmNWNlZTkxMTAxMGU3MzAxMWI3MzkzNzZjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjQyLDEyICs2
NDIsMTcgQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5m
bzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNv
dW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJl
bCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRZaWVsZChSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvckVwaWxvZ3Vl
KExhYmVsKiBkZWZhdWx0TGFiZWwpOworCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBi
b29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29r
czsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9
CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC04MDIsNiArODA3LDcgQEAKICAgICAgICAg
UmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lz
dGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklE
KiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklE
KiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI1LDYgKzgzMSw3IEBACiAg
ICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNr
OwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAg
ZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlh
YmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25z
VG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0NWExNGRjMTVl
MTgyZi4uNjU0ODA0MzZjNTkyNDdiMGJlNmE1YmE4ZDg2NTBmZTJkNTZlZTU1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMjk2NiwyNiArMjk2Niw3NSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3Rh
cnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNC
eXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0g
ICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFy
c2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNp
bmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJT
dGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0g
c3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAg
ICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAg
QVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1
bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAvLyBDaGVj
ayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3Nl
ZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0
YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1l
bnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFz
dFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0
YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9
IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0
KCkpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlKTsKIAotICAgIC8vIElmIHRoZXJl
IGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAo
IXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25z
dHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2Fk
KDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIw
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3Qg
ZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGlu
IHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25S
ZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMg
cHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAg
ICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVy
bihnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8
TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSog
dHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworCisgICAg
ICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKKworICAgICAgICBS
ZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5l
d0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVn
aXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
ICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lz
dGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhh
bmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZG9uZS5nZXQoKSk7CisKKyAgICAgICAgLy8gT0ssIGhlcmUgaXMgYSBnZW5lcmF0b3Ig
ZXBpbG9ndWUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yRXBpbG9ndWUoZG9uZS5n
ZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAg
ZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNp
bmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKwor
ICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBm
dW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0
YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUq
PihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFz
dFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4o
bGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBp
ZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9y
LmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5l
bWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7
IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2Ug
aXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChz
dGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZz
ZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1
cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsNiArMzA2MiwxMSBAQCBSZWdpc3RlcklEKiBBcnJv
d0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIGlmICghZGVs
ZWdhdGUoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1
bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsK
KyAgICB9CiAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGlu
ZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQgaXQuCiAgICAgZ2VuZXJhdG9y
LmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikp
OwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCBjZDY4NmI3MmFkZDRiNDhkOWE2MzZjMzRmZjA5YWJmZWJkODQ4
NWVlLi5kYWNiZGQ4MDAyOTg0Mjg0MTZlZTEwNjNmMzNkZjVjYjRkM2MzMzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX291dF9vZl9iYW5k
X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVG
SU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERF
RklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAg
REVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGU5NjgyOTJhYjcwMjRhOGMyYWZlYWZmZDBmZTQ1OTJjYzg1
MzY0NzAuLmM2ZDY2OWUxZDc5Njk1ODE1MTdhM2JhZjIzZjZiNDczZTUyN2MzMWUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9v
cF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2Fzc2VydChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5z
dHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGMxYmI3NDNmY2I3ZTJjZGZiMGEyZGM3ZDFkOGQzOTQ5N2Y4NjIwYzguLjljM2I3MGZmODg2MDg0
OGJhZjVlMzI3M2MyMzQ2YzBjZTRlODRmYjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTM5OSw2ICsxMzk5LDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2Ny
ZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7
CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDg0OWIyZDc1MzMyMDMxYTBlNmM3NDg4NTEx
MTIyMGRiMmE3ZDA5YTQuLmZhOWUwMTNiMTExZTVmN2Q1MjhjNGVjNDQ4YzFmZmI3NDBiMDZlMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTE1NzMsNiArMTU3MywxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRp
c3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMikKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3Yzg1YWMwY2I4Mzg3NTI0MzgyMmQxYmQw
MTNhM2Y3OTNjZTdkOWE5Li42MjE3OTg5ZjVmOTUwYzZiYTEwNzFkYjA3ZDc3YWE0OTFmY2ZmM2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzYzLDEy
ICszNjMsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50
IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2Vy
QXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlv
bkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rp
b25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNl
NTAuLjJkY2E3MjRjNjU5MWUxYjY5MjM1MDZlOWE1OTc4ZWJhYzUwYjA3NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9n
cmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+PiYmIGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3Rh
cnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENv
bHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0x
NjMsNyArMTYzLDYgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3Rv
cjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcnNl
TW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRl
eHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0
aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAppbmRleCBjZGU0OWE5YjZhNjA0NTY5OGViZWJkNGQwOWE3ZWNiM2Fl
OTJmYzM0Li45NGMwZGQwZTgyMGU0ODg1Mzk1NWE0MTM5ZWQ1MjU1NWY2YmM0MzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODEyLDcgKzE4MTIsNyBAQAogICAgICAg
ICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwg
U291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAog
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzgsNyArMTgzOCw2IEBACiAg
ICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0
T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25l
ZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQpAQCAtMTg2
NSw3ICsxODY0LDYgQEAKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAg
ICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlv
biA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
OiAxOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCAzNzRiY2IyY2IzNWIwNTQ3YmE1ZDM5ZjQ1MTM5NTM3MTc5NDNmNDFkLi5kZmVmYjNiYjVkMDUy
ODNhZWIzZDRkZmM5OGM0ZjQzZjU4OWYzMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0yNDcsNyArMjQ3LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1
bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0
aW9uSW5mbzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VN
b2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5j
dGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVy
czsKIAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3MSw4ICsyNzQsMTIgQEAKICAgICAgICAg
ICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJv
ZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJz
ZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1
bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hl
Y2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAg
ICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1l
bnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlk
RW5kaW5nOwpAQCAtNDU2LDYgKzQ2Myw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0
byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAg
IHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9z
aXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rv
a2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJl
ZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7
CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNv
dW50ID0gMzsgLy8gc3RhdGUsIHZhbHVlLCB0eXBlCisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BT
Y29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBn
ZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpOworICAgICAgICBTeW50YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29u
dGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICBmYWls
SWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dCwgbW9k
ZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBnZW5lcmF0b3IiKTsKKyAgICAgICAgcG9w
U2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKKyAgICB9CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29s
dW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgaW5mby5wYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBp
bmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4u
bV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwor
CisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFy
dExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhw
clN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tl
bkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVs
ZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVt
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNp
Z25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBk
b2N1bWVudGVkIGhlcmU6CkBAIC0xNTU0LDEzICsxNjAwLDEyIEBACiAgICAgVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0
Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwg
aW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBG
dW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNF
KSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxv
Y2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVj
dG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTcyLDcgKzE2MTcsNyBAQAogICAg
IGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVj
a2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBw
YXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJz
ZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE1ODgsNiArMTYzMyw4IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJh
dG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE2NjYsNiArMTcxMywzMiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJU
eXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sK
KyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3Qo
KTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAv
LyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0YXRl
ID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5
TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBAZ2Vu
ZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9y
UmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1bWVN
b2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0
aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOwor
CisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVt
ZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29u
dGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRp
bmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNG
dW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0xNzc2LDEyICsxODQ5LDEwIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAg
ICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAg
ICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5k
LCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVu
Y3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAg
ICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5w
YXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZy
b21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5j
dGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3OTUs
NyArMTg2Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tl
bi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2Fj
aGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlv
bikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJv
d0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlv
bkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9
IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODE3LDE0ICsxODg4LDI0IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQ
YXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5m
by5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25C
b2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0
YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlU
eXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBp
ZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAg
ICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBw
ZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JC
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0gZWxz
ZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5
KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShm
dW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rp
b25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9u
U2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwg
IiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlv
biBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlv
bkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0
cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTg5Miw3ICsxOTczLDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1v
ZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkK
LSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsK
ICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA0Myw3ICsyMTI0LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAgICAg
ICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAgIHBh
cnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlw
ZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3Ig
bmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjk4OSw3ICszMDcwLDcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4p
CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
ID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9k
U3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFt
ZTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24s
IG1ldGhvZEluZm8pOwpAQCAtMzI0Miw3ICszMzIzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJM
RShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2Rl
ID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBm
YWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4
cHJlc3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRp
b24sIGZ1bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCBlMjEzZTA3MmZiODBlNzQ4Zjg1NjI1YTY3MzhjZDE3ZWNhMTZmMDkyLi41ODVmOGM0N2I0MWMy
NjBkM2NhZTBhYjNjMDdkZjBhNmZmMThiMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKQEAgLTI0Myw2ICsyNDMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtb2RlKSB7CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CkBAIC0xMTEzLDYgKzExMTQsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxl
bWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50
TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNp
Z25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3Qg
SWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgg
PSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQg
fTsKQEAgLTExNzUsNiArMTE3Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFt
ZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBG
dW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5j
dGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0
YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1Njky
OTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAg
IE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1
bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9k
TW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01v
ZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApp
bmRleCA1ZDM5M2EzZGE3ZTdlNTlkYjg2ZTYzY2RiZmFkZmQ5OTVhNTFlOWM5Li5kYmY2ODgxOGE1
NTFmZjQ1ZDMyNDkzYmQzYjc1ZDg1NDQ1NWJjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTgyLDcgKzE4Miw3IEBAIGNsYXNzIFN5bnRh
eENoZWNrZXIgewogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAg
ICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xh
c3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0
aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50
YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rp
b25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJl
dHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIwMTYwODg1NjJiZWU4ZDc1
NTM1NWQ4N2EzYjMzYjEuLjY5ODJiNTlkNWM0YmM0Nzk2YThjYjM4NWY2ZmNkYTkzM2U0MGNkOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZh
bEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5j
dGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1h
Y3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTAgQEAKICAgICBtYWNybyhVaW50MzJBcnJheSkg
XAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkgXAor
ICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAor
ICAgIG1hY3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYzRmNmMyMmM3NTQ4ODkxOTBjYmYxMWI0
NWE0OTE0YmNhZjc5OTkxMS4uMWQ3OWZmZGJiZjA0YzkwZGY1NDgxZTMzOTA5N2E3OWEzOWQxZTFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC02NDQsNiArNjQ0LDIzIEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5
Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAgICAg
RU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8vIE9u
bHkgc2F2ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3wsIHxzY29w
ZXwgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJz
IGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiBy
ZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgp
IGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKKworICAgIFJlZ2lzdGVyKiBleGVjLT50b3BPZkZyYW1lKCk7CisgICAgRU5EKCk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAg
ICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGIwYmE5ZThkYTFlMTM1MGVjZWVhY2M4MWQy
N2JjOGNhMmIzOWRkZGQuLjIxZGJlYTNmNGM3ZjU2ZmZhYjVhZjUwNDVmMzg5MWEzMjY5OTQ2MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0
dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0
MGQzMjBlYzdjYTYwLi5kMTYxOTk4NDMzOGE5MWEyZDI4NzVjNmJkY2QzYmM2Njc3MjRlNzc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5
LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9y
KAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAg
ICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9j
a0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7
CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRh
YmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMyMzk3
MTI2YjYwZmQ3YjBjMzQwYTA0Li4zZjI2YTEyZDJkYmZlMzhlZmUyNTBjOWY1MDdkNWVjODY2NzEz
ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00
NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51
bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9
CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1
NDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
aygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAK
ICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAs
MTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1
Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGlu
ZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUo
KTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
RXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAv
LyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTU3MzI5NjIz
ZTQ0NmZiNTgzNTQwYjkyYTkzNzJlZWUwYmNhMGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
RGVidWdnZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkxleGVyLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBD
bGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVj
dFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2
YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRp
b247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwor
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmUyNDFhZTA4NTYz
MDlhNmU0NTQ3Y2MxZjM1MmU4YzgxYmY3MGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGlu
RXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3
NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
cHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFk
NDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90
eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclBy
b3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24g
MQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cg
ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdl
bmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5l
cmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVy
YXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5l
cmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAg
R2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90
eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JTdGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yU3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MjVhZTdjNmIzMWEyMzllNmQ5Yjc4YzdkZDMzODQxZjNlNDg2YTUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
U3RhdGUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2Vu
ZXJhdG9yU3RhdGVfaAorI2RlZmluZSBHZW5lcmF0b3JTdGF0ZV9oCisKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclN0YXRlIDogcHVibGlj
IEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlv
biogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRp
YyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3Rh
dGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOwor
ICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvclN0YXRlKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gR2VuZXJhdG9yU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBi
Li5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAg
ICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzYmJiM2E5ZTBhMjNiM2QzNmEy
ZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2Vu
ZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5n
bG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNH
ZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dl
bmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5z
dHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90
aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBm
dW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0
b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9y
RnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9u
Pih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOwor
ICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgp
KTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBmMzg1MWIyMWU4YTljNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rp
b24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5l
cmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZz
ZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewor
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNs
YXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGls
ZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVh
dGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShz
aXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGlu
ZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2Vu
ZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dlbmVyYXRvckZ1bmN0aW9u
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0N2NjODY4YjEyODkxLi43ZjFhOTIz
NzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIzYzI4MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw5IEBACiAj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRl
ICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKICNpbmNs
dWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4NCw2ICszODgsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9CVUlM
VElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lU
RVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLnNl
dCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBl
LmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRF
UkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1
cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVy
cm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
bmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikp
KTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVF
cnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CisKKyAg
ICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKKyAg
ICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9uQ29u
c3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9u
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTQyOCw2
ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBv
YmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3Rvciwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvciwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWdFeHAsIG1fcmVnRXhw
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RXZhbEVycm9yLCBtX2V2YWxFcnJvckNvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04MTcsNiArODI4LDggQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwogCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKQEAg
LTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNiODRkODUxMDQuLjAzMjUzMjQ5ODVh
MDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiArNjMsOCBAQAogY2xhc3MgRnVu
Y3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJs
b2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiArMjMxLDggQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVC
YXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmll
cjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJ
dGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7
CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5
cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBA
IC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgsOCBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJh
dG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQog
CiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2Nv
cGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5l
cmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVj
dG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4ZjNkODYyYjNkOWNjMTRlOGJhNTY1
ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAg
KzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMi
KSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICdmdW5jdGlv
bicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBGdW5jdGlvbik7Citz
aG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRv
ckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265310</attachid>
            <date>2015-11-11 11:22:27 -0800</date>
            <delta_ts>2015-11-13 11:46:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151112042221.patch</filename>
            <type>text/plain</type>
            <size>112934</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
N2IzODUyYzhiY2RhOGU5NjdkYmZlNWI1NTIxYTlmYjZiNWIwNjQ3Li4xYWIzNmQwZDMyZWM4Njk2
ZWE3ZDc4ZGRkYmRhZTRiNmYwZjBmYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMTUtMTEtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VN
b2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9w
ZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JTdGF0ZTo6R2VuZXJhdG9yU3Rh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JTdGF0ZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclN0YXRlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yU3RhdGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclN0
YXRlOjp2YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JTdGF0ZTo6dmFyaWFibGVB
dCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclN0YXRlOjpvZmZzZXRPZlZhcmlhYmxlcyk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclN0YXRlOjpvZmZzZXRPZlZhcmlhYmxlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yU3RhdGU6OmFsbG9jYXRpb25TaXplRm9yVmFyaWFibGVzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVy
YXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjph
bGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCiAy
MDE1LTExLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMg
c2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSBhIHByb2dyYW0gd2l0aCBDaGlsbERpdgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmYTM0YzA5NGEzY2VhOTQ0MjE2NzU0MGI0
YjFhNmFkYjFiNDE1NmYuLjI1OTE3Y2FhZGNiMGI1ZjViNmZjOGEwMTZjOTkxYzIwMGY5YTEwN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2MSw2ICs1NjEsMTAgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUv
R2VuZXJhdG9yU3RhdGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVu
dGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjAw
LDYgKzYwNCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAog
ICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcApAQCAtNzM1LDYgKzc0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1Rf
TFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBy
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5Myw2ICsx
MTk5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9H
ZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAwM2U0ZmJkOGIyYWQ2Yzc5NzZmYjFl
MDEyZmI4OGQ2ZTI0YTk3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24g
bmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2Vu
ZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIDApOworfQorCitmdW5jdGlv
biByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMu
QGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZhbHVlLCAxKTsKK30KKworZnVu
Y3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVyYXRvclN0YXRlLCBleGNlcHRpb24sIDIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCmluZGV4IGJkMjljNTVhMzczNTRkZTNlYmFhMjk1MzhhYjE3MWMyMDlmMTMzMTIuLmFkMzg5
YWFjNDVhMzY1ZjU2NmE3NGJmNjg2NmY0OTlhMDhhNWFiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEyOCw2ICsxMjgsOCBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJp
bmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvYWRfYXJy
b3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9y
ZXN1bWUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2Vy
dCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCAzMTUxMWU3YzFkMWY1ZTk3
Mzk3Y2QyYjRjZjQ5YmE4YjRjMzhiNDBlLi44NzQ3Nzk2YjI2Zjg4ZDhhN2Y2NzVkMjNkNGIyYmIz
ZmIyNTQ4Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaApAQCAtNzAsNyArNzAsOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAg
ICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzogeworICAgIGNhc2Ugb3BfaW5jOgorICAg
IGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUzLDYgKzI1NSw4IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3Bf
dGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9zYXZl
OgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3Bf
ZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IDE4ZmZhMDcwZWZjYzdlNjllODY3ZGNlZGNjNWM3ODU5NzE4
MGU0OGYuLmY0ODU2MmEwYmZhZDY2NDBjOTRmYTdkNDFiZTA3YWZhODM1MjNhMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDkxLDYgKzE0
OTEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50
RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNh
dmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1l
KGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRl
eCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi41NTdiNmY0YzRkNTk5
ZjUwNTJjYWE0MDk0MmE3OWMwNTUxMjA2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzEsMTQgKzMxLDE0IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAg
IDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2
YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAg
ICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9p
c0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fcGFyc2VNb2RlKHBh
cnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiAgICAgfQpAQCAtNDksNyArNDks
NyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU4LDcgKzU4LDcgQEAg
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAx
OwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Y29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7
CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2
Li43YzhmYzNjZjlhOTYwM2UzMTc2YWQ3MmNkZjJiNTg0MDRhNTc3ZWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTY1LDEwICs2NSwxMCBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwg
bV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JL
aW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkK
ICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRD
b2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAg
ICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJy
YXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjVi
ODYxZjBmODNjZi4uNmIwNDZkOTIxZTdiN2JjNTBjZjdkM2MzN2UwZDhjYTkwOWQyZTVjYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zODcsMTIgKzM4NywxMiBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVk
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVu
Y3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsK
ICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAor
ICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0
dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li5mZGIzOTdk
NDBkZDE2ZTI5MTIzNDc3Yjg4YWM2ZGU1ZGFjOGU4ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24p
CisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJy
b3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsK
ICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJp
Y3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0OwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1
dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
cmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25D
b2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CisgICAg
ICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24t
PnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFi
bGUtPmNvbnN0cnVjdG9yS2luZCgpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJl
c3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAg
ICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtOTksNyArOTksNiBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAg
ICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmls
aXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2Rl
LT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlv
bk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlvbigp
KQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE3OSw3IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJv
bUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktp
bmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVi
dWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAo
c3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsx
OTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2
bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93
RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uMzlkOGMz
MzQyMzlkZjZlYTMzNjA2NzFjODBlNDE3ZmU2ZDc2MTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0gICAgICAg
IFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNlUGFyc2VN
b2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2Jh
bENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDcgKzEyNSw2IEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wg
aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3Rvcktp
bmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVu
dFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9u
bWVudCYpOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmls
aXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25l
ZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5ZWU2MTExY2MzZDA3ZjYzNDRjOTVlMDhmMmRl
ZTlkZmM4MDY1NGMyLi4yZjNhODM0YmQyMmY5MmYzMDcyMDI5ZmE5MWU4NDA5OTIxMjE0N2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMjUxLDI5ICsyNTEsNjUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAg
IAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAK
LSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVu
Y3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKLSAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29w
ZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0
dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwotICAgICAgICBi
b29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0
dXJlZDsKLSAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlk
ZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7Ci0gICAgfQotICAgIAot
ICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7Ci0gICAgICAgIG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICAgICAgLy8gV2UgY2FuIGFsbG9j
YXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1l
dGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCi0gICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVy
IGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIi
IGVudmlyb25tZW50IGJlY2F1c2UKLSAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUg
InZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KLSAgICAgICAg
aWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXMoKSkKLSAgICAgICAgICAg
IGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4
KTsKLSAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQg
YWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycwotICAg
IC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCi0gICAgbV9wYXJhbWV0ZXJzLmdy
b3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0g
ICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5k
ZXgoKSk7IC8vIHRoaXMKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5z
aXplKCk7ICsraSkKLSAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsKKyAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICAv
LyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9s
b2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKwor
ICAgICAgICAvLyBBbGwgdGhlIHBhcmFtZXRlcnMgZm9yIGEgZ2VuZXJhdG9yIHNob3VsZCBubyBi
ZWNvbWUgaGVhcCB2YXJpYWJsZS4gU28gd2UgY2FuIGluaXRpYWxpemUgdGhlbSBoZXJlLgorICAg
ICAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgKEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZh
bHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBh
cmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAg
ICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRl
eCgpKTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVy
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisK
KyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBlbWl0TW92
ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1
bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFr
ZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0aGUgc2Ft
ZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0
aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1
c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB3ZSBjYW5ub3QgZW1pdCBgYnJlYWtgLgorICAg
ICAgICBiZWdpblN3aXRjaCgmbV9wYXJhbWV0ZXJzWzFdLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1l
ZGlhdGUpOworCisgICAgICAgIC8vIEFuZCBoZXJlIGlzIGEgY29kZSBmb3IgYW4gaW5pdGlhbCBz
dGF0ZS4KKyAgICAgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAg
IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgICAgIGVtaXRMYWJl
bChsYWJlbC5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIo
KTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQg
aWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2
ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUg
dG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQor
ICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQg
aXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVy
cy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6
ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5j
dGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAg
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlz
RHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CisgICAgICAgICAgICBlbWl0
UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVn
aXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRD
YXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVu
dFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhl
ICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhw
cmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4
cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVu
dmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhl
ICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisgICAgICAg
ICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQorICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25z
dGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBi
bG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhh
dCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQu
CisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQogICAgIAogICAgIC8vIEZpZ3VyZSBv
dXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wg
Y2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwpAQCAtNDYwLDEzICs0OTYsMjAgQEAg
UGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBt
X25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJy
b3dGdW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0
aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc0Nv
bnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIs
ICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlW
YWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAg
ICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRv
ciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGBjcmVhdGVfdGhpc2AuCisgICAg
ICAgICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSB7CiAgICAg
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0
b3IiKTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29k
ZUJsb2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSArNTE5LDYgQEAgUGFyc2VyRXJyb3IgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBu
ZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0Fu
ZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtMzgxMyw0ICszODUzLDQx
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFsaWRhdGVGb3JJbkNvbnRleHRGb3JMb2Nh
bChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAgfQogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIFJl
Z2lzdGVySUQqIHN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIobV9nZW5lcmF0b3JS
ZXN1bWVMYWJlbHMuc2l6ZSgpKSk7CisgICAgZW1pdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHN0YXRlKTsKKyAg
ICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVy
YXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKKworICAg
IFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOworfQor
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUoTGFiZWwqIGRl
ZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRl
eHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOwor
CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9j
b2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygp
W3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0
Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisK
KyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFk
ZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaElu
Zm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxl
LmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEp
OworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJf
dCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxk
IGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJl
ICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVy
YXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsg
MykpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDE5
MWY5OWY1ZjA5YTdjZTQ2Njk3YTdiOTA0OTBkZDk0OWE0N2FiYS4uZTg4ZTkzOWY2ZDNjMjBmNWNl
ZTkxMTAxMGU3MzAxMWI3MzkzNzZjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjQyLDEyICs2NDIsMTcg
QEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dp
dGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBS
ZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50
MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVs
ZChSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvckVwaWxvZ3VlKExhYmVs
KiBkZWZhdWx0TGFiZWwpOworCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNo
b3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQog
ICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAg
ICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC04MDIsNiArODA3LDcgQEAKICAgICAgICAgUmVnaXN0
ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
YXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQq
IG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
ZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2ds
b2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25l
d1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI1LDYgKzgzMSw3IEBACiAgICAgICAg
IFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAg
ICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBG
dW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBH
bG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rp
b25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0
aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4u
NjU0ODA0MzZjNTkyNDdiMGJlNmE1YmE4ZDg2NTBmZTJkNTZlZTU1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjk2
NiwyNiArMjk2Niw3NSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZz
ZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29k
ZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0
dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2Rl
KCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7
CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJU
KGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHBy
ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAvLyBDaGVjayBmb3Ig
YSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBh
IHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVu
dC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJs
b2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRl
bWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVu
dEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRp
Y19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCkpOwor
CisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlKTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVy
bk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9m
aWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBl
eHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1
c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5T
dGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmls
ZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFT
U0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9m
ZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+
IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0
YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKKworICAgICAgICBSZWZQdHI8
TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVs
KCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0
aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBn
ZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdl
dCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJU
eXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
ZG9uZS5nZXQoKSk7CisKKyAgICAgICAgLy8gT0ssIGhlcmUgaXMgYSBnZW5lcmF0b3IgZXBpbG9n
dWUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yRXBpbG9ndWUoZG9uZS5nZXQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0
YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwor
CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAg
ICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlv
biBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVu
dCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50
Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5n
bGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRl
bWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0
YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJl
dHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29u
c3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERv
IG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBu
b3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9m
ZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjAp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiB9CiAKQEAgLTMwMTMsNiArMzA2MiwxMSBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNF
eHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIGlmICghZGVsZWdhdGUo
KSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgp
KTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICB9
CiAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGluZyBFUzYg
R2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQgaXQuCiAgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikpOwogICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCBjZDY4NmI3MmFkZDRiNDhkOWE2MzZjMzRmZjA5YWJmZWJkODQ4NWVlLi5k
YWNiZGQ4MDAyOTg0Mjg0MTZlZTEwNjNmMzNkZjVjYjRkM2MzMzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3Vt
ZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09Q
KG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9P
UChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5F
X09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IGU5NjgyOTJhYjcwMjRhOGMyYWZlYWZmZDBmZTQ1OTJjYzg1MzY0NzAu
LmM2ZDY2OWUxZDc5Njk1ODE1MTdhM2JhZjIzZjZiNDczZTUyN2MzMWUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2Vy
dChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGMxYmI3
NDNmY2I3ZTJjZGZiMGEyZGM3ZDFkOGQzOTQ5N2Y4NjIwYzguLjljM2I3MGZmODg2MDg0OGJhZjVl
MzI3M2MyMzQ2YzBjZTRlODRmYjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMTM5OSw2ICsxMzk5LDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9v
dXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDg0OWIyZDc1MzMyMDMxYTBlNmM3NDg4NTExMTIyMGRi
MmE3ZDA5YTQuLmZhOWUwMTNiMTExZTVmN2Q1MjhjNGVjNDQ4YzFmZmI3NDBiMDZlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTE1NzMsNiArMTU3MywxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNo
KDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
cmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMikKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3Yzg1YWMwY2I4Mzg3NTI0MzgyMmQxYmQwMTNhM2Y3
OTNjZTdkOWE5Li42MjE3OTg5ZjVmOTUwYzZiYTEwNzFkYjA3ZDc3YWE0OTFmY2ZmM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzYzLDEyICszNjMs
MTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEs
IHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAg
ICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5k
LCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9y
S2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAuLjJk
Y2E3MjRjNjU5MWUxYjY5MjM1MDZlOWE1OTc4ZWJhYzUwYjA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9k
ZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYm
IGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihz
dGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjMsNyAr
MTYzLDYgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcnNlTW9kZSht
b2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCiAg
ICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQog
ICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCBjZGU0OWE5YjZhNjA0NTY5OGViZWJkNGQwOWE3ZWNiM2FlOTJmYzM0
Li45NGMwZGQwZTgyMGU0ODg1Mzk1NWE0MTM5ZWQ1MjU1NWY2YmM0MzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODEyLDcgKzE4MTIsNyBAQAogICAgICAgICAgICAg
UGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBh
cnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNl
UGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAg
ICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MzgsNyArMTgzOCw2IEBACiAgICAgICAg
IGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0
OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5TdHJpY3RDb250ZXh0OyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JL
aW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9
CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0
TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQpAQCAtMTg2NSw3ICsx
ODY0LDYgQEAKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1
bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7
CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNzRi
Y2IyY2IzNWIwNTQ3YmE1ZDM5ZjQ1MTM5NTM3MTc5NDNmNDFkLi5kZmVmYjNiYjVkMDUyODNhZWIz
ZDRkZmM5OGM0ZjQzZjU4OWYzMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0yNDcsNyArMjQ3LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9u
KCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5m
bzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBm
dW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbklu
Zm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAog
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3MSw4ICsyNzQsMTIgQEAKICAgICAgICAgICAgIHNv
dXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUo
cGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JT
dHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNv
bnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNr
Rm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5n
OwpAQCAtNDU2LDYgKzQ2Myw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3Vy
Y2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2ln
bmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24g
c3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xv
Y2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAg
aW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0g
MzsgLy8gc3RhdGUsIHZhbHVlLCB0eXBlCisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJl
ZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0
b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUpOworICAgICAgICBTeW50YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChj
b25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICBmYWlsSWZGYWxz
ZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJD
YW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBnZW5lcmF0b3IiKTsKKyAgICAgICAgcG9wU2NvcGUo
Z2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
KyAgICB9CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCks
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgaW5mby5wYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVu
ZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRh
Lm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAg
YXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0
aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRl
bWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBv
c2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRz
LCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVu
dGVkIGhlcmU6CkBAIC0xNTU0LDEzICsxNjAwLDEyIEBACiAgICAgVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1u
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBh
cmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVu
Y3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlv
bkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewog
ICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
biwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTcyLDcgKzE2MTcsNyBAQAogICAgIGVsc2UK
ICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBD
aGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
ID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBi
b2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0
b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEo
c3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
c3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUs
IGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5M
b2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE1ODgsNiArMTYzMyw4IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAg
ICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1
bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAg
ICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZToKQEAgLTE2NjYsNiArMTcxMywzMiBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBh
dXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4
dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2Vu
ZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9y
VmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0
b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRl
eHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihw
YXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yUmVzdW1l
TW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworCisgICAg
cmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhw
ZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBl
IGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlv
blBhcnNlTW9kZShtb2RlKSk7CkBAIC0xNzc2LDEyICsxODQ5LDEwIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAg
ICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNo
ZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25C
b2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgY2Fj
aGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0
ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3Vy
Y2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3OTUsNyArMTg2
Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5m
by0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJl
c3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlC
bG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODE3LDE0ICsxODg4LDI0IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAg
CiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJT
dGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0
ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0g
WyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9j
YXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBB
dXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3Jt
UGFyc2luZ0Z1bmN0aW9uQm9keSgpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2Nv
cGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0gZWxzZQorICAg
ICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAg
ICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlv
bkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZv
LmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9uU2NvcGUt
PnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUg
fHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1l
IGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8u
bmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBt
b2RlIik7CiAgICAgfQpAQCAtMTg5Miw3ICsxOTczLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAj
aWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAg
ICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRp
ZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5l
ZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVu
Y3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0
YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA0Myw3ICsyMTI0LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAgICAgICAgICAg
ICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlwZSciKTsK
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQg
J2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjk4OSw3ICszMDcwLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAg
SlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5z
aWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNH
ZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQs
IG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhv
ZEluZm8pOwpAQCAtMzI0Miw3ICszMzIzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZf
R0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywg
cGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1
bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBlMjEz
ZTA3MmZiODBlNzQ4Zjg1NjI1YTY3MzhjZDE3ZWNhMTZmMDkyLi41ODVmOGM0N2I0MWMyNjBkM2Nh
ZTBhYjNjMDdkZjBhNmZmMThiMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTI0Myw2ICsyNDMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAgICAgc3dp
dGNoIChtb2RlKSB7CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
MTEzLDYgKzExMTQsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRp
ZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsK
ICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAg
LTExNzUsNiArMTE3Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJl
cXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZk
ZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBj
MDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApA
QCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1h
bEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9u
TW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwK
QEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA1
ZDM5M2EzZGE3ZTdlNTlkYjg2ZTYzY2RiZmFkZmQ5OTVhNTFlOWM5Li5kYmY2ODgxOGE1NTFmZjQ1
ZDMyNDkzYmQzYjc1ZDg1NDQ1NWJjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTgyLDcgKzE4Miw3IEBAIGNsYXNzIFN5bnRheENoZWNr
ZXIgewogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBDbGFz
c0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9k
eVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVj
a2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1l
U3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBB
cmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIwMTYwODg1NjJiZWU4ZDc1NTM1NWQ4
N2EzYjMzYjEuLjY5ODJiNTlkNWM0YmM0Nzk2YThjYjM4NWY2ZmNkYTkzM2U0MGNkOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApA
QCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9y
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikg
XAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpT
T04pIFwKQEAgLTMyOSw2ICszMzAsMTAgQEAKICAgICBtYWNybyhVaW50MzJBcnJheSkgXAogICAg
IG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAog
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYzRmNmMyMmM3NTQ4ODkxOTBjYmYxMWI0NWE0OTE0
YmNhZjc5OTkxMS4uYmU2OWQ2YjJmMjg4YTEyYzFhMTA4NTk2ZmYwZWUwN2QyNDc4MjBlYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC02NDQsNiArNjQ0LDIyIEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tE
YXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAgICAgRU5EKCk7
CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8vIE9ubHkgc2F2
ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVn
aXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBu
b3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNl
cyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwu
CisgICAgQkVHSU4oKTsKKyAgICAvLyBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUo
KTsKKyAgICAvLyBSZWdpc3RlciogZXhlYy0+dG9wT2ZGcmFtZSgpOworICAgIEVORCgpOworfQor
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAg
RU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiMGJhOWU4ZGExZTEzNTBlY2VlYWNjODFkMjdi
YzhjYTJiMzlkZGRkLi4yMWRiZWEzZjRjN2Y1NmZmYWI1YWY1MDQ1ZjM4OTFhMzI2OTk0NjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVy
blR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBk
MzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhhOTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0ZTc3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3
ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAg
ICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwog
ICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJs
ZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxl
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEy
NmI2MGZkN2IwYzM0MGEwNC4uM2YyNmExMmQyZGJmZTM4ZWZlMjUwYzlmNTA3ZDVlYzg2NjcxM2Yx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2ln
bmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1W
YXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0
dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpA
QCAtNTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQy
LDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAg
ICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBt
X21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEz
IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0
b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZl
cnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7
IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8g
RXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1NzMyOTYyM2U0
NDZmYjU4MzU0MGI5MmE5MzcyZWVlMGJjYTBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJM
ZXhlci5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xh
c3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRv
ckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RU
eXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7Cisg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0
ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
X2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9u
OworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZlMjQxYWUwODU2MzA5
YTZlNDU0N2NjMWYzNTJlOGM4MWJmNzBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMzMTM1Nzc2
ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0K
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3By
aXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3NGNhZTZhZDQ2
NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NC
dWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3RvdHlwZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclByb3RvdHlw
ZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0b3JQcm90
b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRocm93ICAg
ICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5l
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJh
dG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0
b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVy
YXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJh
dG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdl
bmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlw
ZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yU3RhdGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhMjQ4ZDEyYjY0NzYzYmNhNjBmOTE1YmZlZWUyM2RmOTJjYTU1MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JTdGF0ZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yU3RhdGUuaCIKKworI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5l
cmF0b3JTdGF0ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yU3RhdGUiLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclN0YXRlKSB9OworCitHZW5lcmF0b3JTdGF0
ZTo6R2VuZXJhdG9yU3RhdGUoVk0mIHZtLCBzaXplX3QgdmFyaWFibGVzU2l6ZSkKKyAgICA6IEJh
c2Uodm0sIHZtLmdlbmVyYXRvclN0YXRlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV92YXJpYWJs
ZXNTaXplKHZhcmlhYmxlc1NpemUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yU3RhdGU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5l
cmF0b3JTdGF0ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JTdGF0ZSo+KGNlbGwpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPm1fdmFy
aWFibGVzU2l6ZSk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yU3RhdGU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQoreworICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yU3RhdGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclN0YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDk3ODcxYzRkZDljMmIxZTMxZjFiYjVjMTI3YWQ3Mzg4ODE3NmUyNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclN0YXRlLmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclN0YXRlX2gK
KyNkZWZpbmUgR2VuZXJhdG9yU3RhdGVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IHB1YmxpYyBKU0NlbGwgeworICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNz
IERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7
CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1
Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvclN0YXRlKiBjcmVhdGUoVk0mLCBzaXpl
X3QgbnVtYmVyT2ZWYXJpYWJsZXMpOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
dmFyaWFibGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlZh
cmlhYmxlcygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiB2YXJp
YWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YXJpYWJsZXMoKVtp
bmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlZhcmlhYmxlcygpCisg
ICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yU3RhdGUpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmFyaWFibGUoc2l6ZV90IGluZGV4KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9mZnNldE9mVmFyaWFibGVzKCkgKyBpbmRleCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemVGb3JWYXJpYWJsZXModW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMpCisgICAgeworICAg
ICAgICByZXR1cm4gb2Zmc2V0T2ZWYXJpYWJsZXMoKSArIG51bWJlck9mVmFyaWFibGVzICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yU3RhdGUoVk0mLCBzaXplX3QgdmFyaWFibGVz
U2l6ZSk7CisKKyAgICBzaXplX3QgbV92YXJpYWJsZXNTaXplOworCisgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJiMDFlMDJkYjAz
ZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQzMmFiZGEyZTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0OCw3ICszNDks
MTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0
T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCkt
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQor
ICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsKICAgICAg
ICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAgICAgICAg
b2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzYmJi
M2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9y
RnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dl
bmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVy
YXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRv
ckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9u
RnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGlu
ZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsK
K30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5j
dGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0
YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCkt
Pmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVhMGM3ZDBmMzg1MWIyMWU4
YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rp
b25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBM
TEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGlj
IEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQp
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0N2NjODY4
YjEyODkxLi43ZjFhOTIzNzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIzYzI4MDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01
MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1
LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4
NCw2ICszODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAg
ICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBF
X0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJh
dG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0
ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVf
Rk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxp
dGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklF
cnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhp
cywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAg
ICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsK
ICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKQEAgLTQyOCw2ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbiwgZnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwgZ2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5S
ZWdFeHAsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RXZhbEVycm9yLCBtX2V2
YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04MTcsNiArODI4LDggQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlw
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUp
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90
b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3Bl
U3RydWN0dXJlKTsKQEAgLTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNiODRkODUx
MDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiArNjMs
OCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKK2Ns
YXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xh
c3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiArMjMxLDgg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAg
IFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKKyAg
ICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9n
ZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9m
dW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRl
TmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVj
dHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKQEAgLTQ1
Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yUHJvdG90
eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3Rv
dHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09i
amVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4
NjJiYmNhOWRmNGZkZTk3OGY3Li41ZDE5M2FkZjkxNGYzZmMwMDBlNGEyNmRjNmRlYjg0ZDAxZGI1
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclN0
YXRlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBi
b29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2Nh
dG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNl
dCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOworICAgIGdlbmVyYXRvclN0YXRlU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9y
U3RhdGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRp
b25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNj
YTYyOWU4ZTY4ZDJiODFlNi4uMmRlZDMzZmZjZjZjOWViODc5NDFjMzM4Y2U4NWE4MDU5OTRmMjQ1
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5m
ZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25S
YXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JTdGF0ZVN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29u
c3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYThmM2Q4NjJiM2Q5Y2MxNGU4
YmE1NjVlY2ZiMDkxNTIxMDMyYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAg
LTAsMCArMSw4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1bmN0aW9uKCJyZXR1cm4g
dGhpcyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0b3JGdW5jdGlvbiwgJ2Z1
bmN0aW9uJyk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18sIEZ1bmN0aW9u
KTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgR2Vu
ZXJhdG9yRnVuY3Rpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265486</attachid>
            <date>2015-11-13 11:46:04 -0800</date>
            <delta_ts>2015-11-14 04:02:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151114044557.patch</filename>
            <type>text/plain</type>
            <size>114944</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li41NWJhY2NjNWE0ZGY0NGFj
YmU2YWZmMTBiYTU0YWMxNDA0OTliMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTUtMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VN
b2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9w
ZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2YXJpYWJsZUF0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNH
ZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KwogMjAxNS0xMS0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBBaXI6IHdlIGhhdmUgbW9yZSByZWdpc3RlciB0aGFuIHdoYXQgdGhlIGFs
bG9jYXRvciBiZWxpZXZlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFk
MGI0YmE5ZWY2MGE4MGM1YTYxNDNjOTg1NWJmNjdlOGJmMDNjMTMuLmRlYzE4NTRkY2IwYzcyN2M5
NThlNjY5YTdlNWQ5YmRhNjUwMWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTU2Miw2ICs1NjIsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNF
UwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUv
SW5kZXhpbmdUeXBlLmNwcApAQCAtNjAxLDYgKzYwNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9S
VU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9K
U0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM2LDYgKzc0MSw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAg
ICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcApAQCAtMTE5NCw2ICsxMjAwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVy
YXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJy
YXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0
aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5l
cmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ds
b2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTAwM2U0ZmJkOGIyYWQ2Yzc5NzZmYjFlMDEyZmI4OGQ2ZTI0YTk3OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwg
dmFsdWUsIDApOworfQorCitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3Rh
dGUsIHZhbHVlLCAxKTsKK30KKworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVy
YXRvclN0YXRlLCBleGNlcHRpb24sIDIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGJkMjljNTVhMzczNTRkZTNlYmFhMjk1
MzhhYjE3MWMyMDlmMTMzMTIuLmFkMzg5YWFjNDVhMzY1ZjU2NmE3NGJmNjg2NmY0OTlhMDhhNWFi
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KQEAgLTEyOCw2ICsxMjgsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCAzMTUxMWU3YzFkMWY1ZTk3Mzk3Y2QyYjRjZjQ5YmE4YjRjMzhiNDBlLi44NzQ3Nzk2
YjI2Zjg4ZDhhN2Y2NzVkMjNkNGIyYmIzZmIyNTQ4Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNzAsNyArNzAsOSBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzog
eworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3Vt
ZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUz
LDYgKzI1NSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxl
X2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgIGNhc2Ug
b3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDE4ZmZhMDcwZWZj
YzdlNjllODY3ZGNlZGNjNWM3ODU5NzE4MGU0OGYuLmY0ODU2MmEwYmZhZDY2NDBjOTRmYTdkNDFi
ZTA3YWZhODM1MjNhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDkxLDYgKzE0OTEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVi
dWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3Ig
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2Vu
ZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAg
ICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGlu
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1
MGIxMDJhMTVkLi41NTdiNmY0YzRkNTk5ZjUwNTJjYWE0MDk0MmE3OWMwNTUxMjA2OTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAt
MzEsMTQgKzMxLDE0IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZv
IHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNl
c0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0
aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAg
ICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQor
ICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5j
dGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNp
Z25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2Rl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2
NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li43YzhmYzNjZjlhOTYwM2UzMTc2YWQ3MmNkZjJiNTg0
MDRhNTc3ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogICAgICwgbV9oYXNDYXB0
dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1
aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24o
aW5mby5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xp
bmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9k
ZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlw
ZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRj
MTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uNmIwNDZkOTIxZTdiN2JjNTBjZjdk
M2MzN2UwZDhjYTkwOWQyZTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVl
ZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsg
fQogCkBAIC0zODcsMTIgKzM4NywxMiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKICAg
ICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1
bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
ICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYx
MTM3ZTFlNDdlOWQ1OWI2Li5mZGIzOTdkNDBkZDE2ZTI5MTIzNDc3Yjg4YWM2ZGU1ZGFjOGU4ZWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJv
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rp
b25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7
CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwpAQCAtNjcsNyArNjcsNyBA
QCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0
dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5j
dGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+
aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwg
aXNBcnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVk
c0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1v
ZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBwYXJzZU1vZGUp
KTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9y
Pih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdl
bmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtOTksNyAr
OTksNiBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1
bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
KG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAg
ICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
OwpAQCAtMTgwLDcgKzE3OSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBp
c0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBD
b2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Ci0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VN
b2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5
MjkzZjQxYmE0MmQ5YzFmOC4uMzlkOGMzMzQyMzlkZjZlYTMzNjA2NzFjODBlNDE3ZmU2ZDc2MTk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBh
cnNlckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
LCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApA
QCAtMTI1LDcgKzEyNSw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1
Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0K
ICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlk
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0
QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
dW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9u
TW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5ZWU2
MTExY2MzZDA3ZjYzNDRjOTVlMDhmMmRlZTlkZmM4MDY1NGMyLi4yZjNhODM0YmQyMmY5MmYzMDcy
MDI5ZmE5MWU4NDA5OTIxMjE0N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjUxLDI5ICsyNTEs
NjUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgo
SlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKLSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1
bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKLSAg
ICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAg
IGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKS5pbXBsKCkpOwotICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2Nv
cGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKLSAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5h
bWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXND
YXB0dXJlZCk7Ci0gICAgfQotICAgIAotICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhp
bmdzKSB7Ci0gICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsK
LSAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBk
b24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCi0gICAg
ICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2Zm
IG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKLSAgICAgICAgLy8g
dGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRl
ciBlbnZpcm9ubWVudC4KLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXMoKSkKLSAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQo
c3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKLSAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhl
IGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBz
dXJlIHRoYXQgcGFyYW1ldGVycwotICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90
ZWQuCi0gICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVz
ZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0gICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5pdGlhbGl6ZU5l
eHRQYXJhbWV0ZXIoKTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2Nr
LT5wYXJzZU1vZGUoKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSkgeworICAgICAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlv
biwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24g
YSBnZW5lcmF0b3IncyBzdGF0ZS4KKworICAgICAgICAvLyBBbGwgdGhlIHBhcmFtZXRlcnMgZm9y
IGEgZ2VuZXJhdG9yIHNob3VsZCBubyBiZWNvbWUgaGVhcCB2YXJpYWJsZS4gU28gd2UgY2FuIGlu
aXRpYWxpemUgdGhlbSBoZXJlLgorICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgKEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkuCisgICAg
ICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUg
c3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFs
aXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCk7CisKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFk
ZFZhcigpOworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV90aGlzUmVn
aXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5l
cmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291
bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFz
ZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3Vp
dGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB3ZSBj
YW5ub3QgZW1pdCBgYnJlYWtgLgorICAgICAgICBiZWdpblN3aXRjaCgmbV9wYXJhbWV0ZXJzWzFd
LCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworCisgICAgICAgIC8vIEFuZCBoZXJlIGlz
IGEgY29kZSBmb3IgYW4gaW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgUmVmUHRyPExhYmVsPiBsYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChs
YWJlbCk7CisgICAgICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNo
b3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0
ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRl
ciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0
ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZh
ciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBv
ZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAg
ICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisg
ICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1
bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+
ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAgICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJl
ZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAg
Ym9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2Fw
dHVyZWQ7CisgICAgICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAg
ICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAg
ICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhh
dmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAg
IC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9u
IGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8v
IHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0
ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBh
cmFtZXRlclZhbHVlcygpKQorICAgICAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52
aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcg
ZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFt
ZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBt
X3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgp
KTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAg
fQogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBv
dXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNl
OwpAQCAtNDYwLDEzICs0OTYsMjAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0g
ICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAg
ICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRN
b3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBp
ZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAg
ICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7
CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxl
ZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3
aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIs
ICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSAr
NTE5LDYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5j
dGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAg
ICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAog
ICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNh
bGxlZApAQCAtMzgxMyw0ICszODUzLDQxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFs
aWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAg
fQogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KQoreworICAgIFJlZ2lzdGVySUQqIHN0YXRlID0gZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKSk7CisgICAgZW1pdFB1
dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUsIHN0YXRlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0
UmV0dXJuKGFyZ3VtZW50KTsKKworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgp
OworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExh
YmVsKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIHJldHVy
biAmbV9wYXJhbWV0ZXJzWzJdOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2Vu
ZXJhdG9yRXBpbG9ndWUoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3
aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250
ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9
IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVt
cFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qg
c3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxl
Lm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZp
bGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIg
dGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8g
dGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFT
U0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAg
anVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hB
ZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggZDE5MWY5OWY1ZjA5YTdjZTQ2Njk3YTdiOTA0OTBkZDk0OWE0
N2FiYS4uZTg4ZTkzOWY2ZDNjMjBmNWNlZTkxMTAxMGU3MzAxMWI3MzkzNzZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNjQyLDEyICs2NDIsMTcgQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdp
c3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNo
KHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwg
TGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW1p
dEdlbmVyYXRvckVwaWxvZ3VlKExhYmVsKiBkZWZhdWx0TGFiZWwpOworCiAgICAgICAgIENvZGVU
eXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVI
b29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9z
aG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAg
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC04MDIsNiAr
ODA3LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRy
IH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAt
ODI1LDYgKzgzMSw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRl
eHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBt
X2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250
ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBO
b3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxl
VHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5p
dGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBkYzdm
ZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uNjU0ODA0MzZjNTkyNDdiMGJlNmE1YmE4ZDg2NTBmZTJk
NTZlZTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtMjk2NiwyNiArMjk2Niw3NSBAQCB2b2lkIEZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3Rh
cnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0g
ICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2lu
Z2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dp
dGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xl
U3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2Rl
KiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVT
dGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQt
PmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAg
ICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhw
cik7CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2Yg
YSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3Rh
dGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVu
dE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2lu
Z2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVu
dEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAg
ICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50
SW5CbG9jayk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0
KCksIGZ1bmNFeHByKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIG5leHQuZ2V0KCkpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0
ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlKTsK
IAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5z
ZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAg
PSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBi
ZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNz
aW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mg
c291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTog
eworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsK
KyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFi
ZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdl
dCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0
TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURh
dGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBj
YXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisKKyAgICAgICAgLy8gT0ssIGhl
cmUgaXMgYSBnZW5lcmF0b3IgZXBpbG9ndWUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJh
dG9yRXBpbG9ndWUoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiBy
ZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50
IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAg
ICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkg
eworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0
aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxv
Y2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNf
Y2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNl
cnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAg
ICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsNiArMzA2MiwxMSBA
QCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogeworICAgIGlmICghZGVsZWdhdGUoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
WWllbGQoYXJnLmdldCgpKTsKKyAgICB9CiAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0
dWIuIFdoZW4gY29tcGxldGluZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQg
aXQuCiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBp
bXBsZW1lbnRlZCB5ZXQuIikpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjZDY4NmI3MmFkZDRiNDhkOWE2
MzZjMzRmZjA5YWJmZWJkODQ4NWVlLi5kYWNiZGQ4MDAyOTg0Mjg0MTZlZTEwNjNmMzNkZjVjYjRk
M2MzMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNr
X3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9w
X3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChv
cF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX2RpdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGU5NjgyOTJhYjcwMjRhOGMy
YWZlYWZmZDBmZTQ1OTJjYzg1MzY0NzAuLmM2ZDY2OWUxZDc5Njk1ODE1MTdhM2JhZjIzZjZiNDcz
ZTUyN2MzMWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IGMxYmI3NDNmY2I3ZTJjZGZiMGEyZGM3ZDFkOGQzOTQ5N2Y4NjIw
YzguLjljM2I3MGZmODg2MDg0OGJhZjVlMzI3M2MyMzQ2YzBjZTRlODRmYjMgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTM5OSw2ICsxMzk5LDE4IEBAIHZv
aWQgSklUOjplbWl0X29wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDg0OWIyZDc1
MzMyMDMxYTBlNmM3NDg4NTExMTIyMGRiMmE3ZDA5YTQuLmZhOWUwMTNiMTExZTVmN2Q1MjhjNGVj
NDQ4YzFmZmI3NDBiMDZlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE1NzMsNiArMTU3MywxOCBAQCBfbGxpbnRf
b3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMikKKworCiBf
bGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3Yzg1YWMw
Y2I4Mzg3NTI0MzgyMmQxYmQwMTNhM2Y3OTNjZTdkOWE5Li42MjE3OTg5ZjVmOTUwYzZiYTEwNzFk
YjA3ZDc3YWE0OTFmY2ZmM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaApAQCAtMzYzLDEyICszNjMsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQs
IAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0
Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0
cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNl
NjMyYzlmNmQzZDkzOTMzOGNlNTAuLjJkY2E3MjRjNjU5MWUxYjY5MjM1MDZlOWE1OTc4ZWJhYzUw
YjA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyAr
MTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQs
IGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAg
ICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVt
bihlbmRDb2x1bW4pCkBAIC0xNjMsNyArMTYzLDYgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xv
c2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYK
ICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRl
eHQoaXNJblN0cmljdENvbnRleHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVu
Y3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CiAgICAgQVNTRVJUKG1f
Y29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBjZGU0OWE5YjZhNjA0NTY5
OGViZWJkNGQwOWE3ZWNiM2FlOTJmYzM0Li45NGMwZGQwZTgyMGU0ODg1Mzk1NWE0MTM5ZWQ1MjU1
NWY2YmM0MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODEyLDcg
KzE4MTIsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVy
c1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNl
Q29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4
MzgsNyArMTgzOCw2IEBACiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQg
Zmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0
YXJ0T2Zmc2V0KQpAQCAtMTg2NSw3ICsxODY0LDYgQEAKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
IG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsK
ICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCAzNzRiY2IyY2IzNWIwNTQ3YmE1ZDM5ZjQ1MTM5NTM3MTc5NDNm
NDFkLi5kZmVmYjNiYjVkMDUyODNhZWIzZDRkZmM5OGM0ZjQzZjU4OWYzMWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNDcsNyArMjQ3LDEwIEBACiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0
aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4
dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3MSw4ICsy
NzQsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9u
U2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxz
ZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxl
bWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtNDU2LDYgKzQ2Myw0NSBAQAogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2Rl
IG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNl
RWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5T
dGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAg
ICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJh
bWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0t
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQg
PSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAg
ICBpbmZvLnBhcmFtZXRlckNvdW50ID0gMzsgLy8gc3RhdGUsIHZhbHVlLCB0eXBlCisKKyAgICB7
CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNj
b3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBTeW50YXhDaGVja2VyIGdl
bmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0
KCkpOworICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVyYXRvckZ1
bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBnZW5lcmF0
b3IiKTsKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
LCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVu
ZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVt
biA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9
IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIs
IHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5k
U3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJj
ZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVy
KiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAv
LyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTU0LDEzICsxNjAwLDEyIEBA
CiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBm
dW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJs
b2NrICE9IGJvZHlUeXBlOwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
PSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlm
IChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5k
Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBw
YXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTcy
LDcgKzE2MTcsNyBAQAogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VF
bGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBT
dGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVu
Y3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE1ODgs
NiArMTYzMyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3Ii
OworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAg
ICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE2NjYsNiArMTcxMywz
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZv
cm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBh
dXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsK
KyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwg
MCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdl
bmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisK
KyAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0
byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clJlc3VtZU1vZGUsIDApOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2Rl
LCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0xNzc2LDEyICsx
ODQ5LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVT
dGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAg
IAotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2Nh
dGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRD
b2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9k
ZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNB
cnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JL
aW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9
PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rp
b25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAg
ICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFi
bGVJbmZvKTsKQEAgLTE3OTUsNyArMTg2Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNl
dExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbklu
Zm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAg
aWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNo
ZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODE3LDE0
ICsxODg4LDI0IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1
bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAg
IAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3Rh
cnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5
cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZv
cm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rp
b25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JL
aW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUp
OworICAgIH07CisKKyAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3Bl
KHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3Vy
Y2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVu
Y3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOworICAgICAgICBw
b3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJs
ZUluZm8pOworICAgIH0gZWxzZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1Q
YXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsK
ICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9k
eSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5z
ZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7
CiAgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFt
ZSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpm
dW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBu
b3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8u
bmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTg5Miw3ICsxOTczLDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2Rl
OjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlm
IChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCBGdW5jdGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikp
LCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlv
bkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAt
MjA0Myw3ICsyMTI0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNH
ZW5lcmF0b3IpIHsKICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOwor
ICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0
b3IgbmFtZWQgJ3Byb3RvdHlwZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRl
Y2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpA
QCAtMjk4OSw3ICszMDcwLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3Ao
SlNUb2tlblR5cGUgdG9rZW4pCiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50
cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5m
by5uYW1lID0gbWV0aG9kTmFtZTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4
cHIobWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8pOwpAQCAtMzI0Miw3ICszMzIzLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1F
UykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsK
KyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwg
RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90
IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBlMjEzZTA3MmZiODBlNzQ4Zjg1NjI1YTY3MzhjZDE3ZWNhMTZm
MDkyLi41ODVmOGM0N2I0MWMyNjBkM2NhZTBhYjNjMDdkZjBhNmZmMThiMDE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI0Myw2ICsyNDMsNyBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCkBAIC0xMTEzLDYgKzExMTQsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBh
cnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVs
ZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVy
KiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVj
dGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBv
cnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTExNzUsNiArMTE3Nyw3IEBAIGNsYXNzIFBhcnNlciB7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwg
U3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3Mo
VHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVC
dWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
aW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5Njdl
M2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3Vy
Y2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2Rl
LAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRl
ck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNG
dW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBA
QCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGlu
ZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAppbmRleCA1ZDM5M2EzZGE3ZTdlNTlkYjg2ZTYzY2RiZmFkZmQ5OTVh
NTFlOWM5Li5kYmY2ODgxOGE1NTFmZjQ1ZDMyNDkzYmQzYjc1ZDg1NDQ1NWJjYThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTgyLDcgKzE4
Miw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlp
ZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVy
biBZaWVsZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5
TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5m
bzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9u
Qm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQs
IGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJv
b2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQog
ICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBh
OWIwMTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2EzYjMzYjEuLjY2NDhhYTAxODA3NGU5YjhhZDIwZWRm
ODk0OGU4NTJmMjU1MTAyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9y
KSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBt
YWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFj
cm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTEgQEAKICAgICBt
YWNybyhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3Jv
KEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhn
ZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCBjNGY2YzIyYzc1NDg4OTE5MGNiZjExYjQ1YTQ5MTRiY2Fm
Nzk5OTExLi43YjA2OGRkM2VkN2Y2ZDYyNWQ5MmEyYmQwNjM4NDM2NmI5ZDliNjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxp
bmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwz
NCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNo
ZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQg
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7Cisg
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IpOwor
ICAgIGlmIChnZW5lcmF0b3IuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBzbG90KSkKKyAgICAgICAgZnJhbWUgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihzbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgZWxzZSB7CisgICAgICAg
IGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgKGV4ZWMtPnJlZ2lz
dGVycygpICsgZXhlYy0+YXJndW1lbnRPZmZzZXQoMikgKyAxKSAtIGV4ZWMtPnRvcE9mRnJhbWUo
KSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJv
cGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQorICAgIGZyYW1lLT5zYXZlKGV4ZWMpOworICAg
IEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQoreworICAgIEJF
R0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2Vu
ZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkp
OworICAgIGZyYW1lLT5yZXN1bWUoZXhlYyk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCBiMGJhOWU4ZGExZTEzNTBlY2VlYWNjODFkMjdiYzhjYTJiMzlkZGRkLi4yMWRiZWEzZjRj
N2Y1NmZmYWI1YWY1MDQ1ZjM4OTFhMzI2OTk0NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGlu
ZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwg
dm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmlu
Zyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9s
b2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNo
X3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Nj
b3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5k
ZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBkMzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhh
OTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0ZTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4
ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJy
b3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBmaXJzdExpbmUoKSwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uM2YyNmEx
MmQyZGJmZTM4ZWZlMjUwYzlmNTA3ZDVlYzg2NjcxM2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxF
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAg
ICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZh
bHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0
TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0
dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2ln
bmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNsYXNz
IFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
ICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0
cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUg
ZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9k
ZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAg
ICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
KCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9
CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
OyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODlkMTk4
ODcwOGRiM2QyOGU1YmI1NjBkOGVlZTFmZGRiN2E3YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0wLDAgKzEs
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShH
ZW5lcmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2
bSwgc2l6ZV90IHZhcmlhYmxlc1NpemUpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fdmFyaWFibGVzU2l6ZSh2YXJpYWJsZXNTaXplKQor
eworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmpl
Y3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5tX3ZhcmlhYmxlc1NpemUpOworfQorCitTdHJ1
Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxs
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitHZW5lcmF0b3JGcmFtZSogR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZlZhcmlhYmxlcykKK3sK
KyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAg
IE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhl
YXAsIGFsbG9jYXRpb25TaXplRm9yVmFyaWFibGVzKG51bWJlck9mVmFyaWFibGVzKSkpCisgICAg
ICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBHZW5lcmF0
b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUmVnaXN0ZXIqIHJlZyA9IChl
eGVjLT5yZWdpc3RlcnMoKSArIGV4ZWMtPmFyZ3VtZW50T2Zmc2V0KDIpICsgMSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAgICAgdmFyaWFi
bGVBdChpKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVnWy1pXS5qc1ZhbHVlKCkpOworfQorCit2
b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFJlZ2lz
dGVyKiByZWcgPSAoZXhlYy0+cmVnaXN0ZXJzKCkgKyBleGVjLT5hcmd1bWVudE9mZnNldCgyKSAr
IDEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXNTaXplOyArK2kpCisg
ICAgICAgIHJlZ1staV0gPSB2YXJpYWJsZUF0KGkpLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3MThhMzU0MTBhMzViMmY1NTdjYzU2NDE1MjUyMzFiMTFiMWJhYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5l
cmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKKworI2luY2x1ZGUgIkpTQ2Vs
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMg
SlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAg
IGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6
OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3Jl
YXRlKFZNJiwgc2l6ZV90IG51bWJlck9mVmFyaWFibGVzKTsKKworICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIHZhcmlhYmxlcygpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMp
ICsgb2Zmc2V0T2ZWYXJpYWJsZXMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4g
dmFyaWFibGVzKClbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZW
YXJpYWJsZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7
CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZhcmlhYmxlKHNpemVfdCBp
bmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlZhcmlhYmxlcygpICsgaW5kZXgg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6
ZV90IGFsbG9jYXRpb25TaXplRm9yVmFyaWFibGVzKHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mVmFyaWFibGVzKCkgKyBudW1iZXJPZlZh
cmlhYmxlcyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSopOworICAgIHZvaWQg
cmVzdW1lKEV4ZWNTdGF0ZSopOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZyYW1lKFZNJiwg
c2l6ZV90IHZhcmlhYmxlc1NpemUpOworCisgICAgc2l6ZV90IG1fdmFyaWFibGVzU2l6ZTsKKwor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK3Byb3RlY3RlZDoKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1NzMyOTYyM2U0NDZmYjU4MzU0MGI5
MmE5MzcyZWVlMGJjYTBmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorI2lu
Y2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAg
ICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBj
YWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0ZDk3MjNlM2Y4MGFk
NzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKyNkZWZpbmUg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0
aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9uOworfQorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNz
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0
aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZlMjQxYWUwODU2MzA5YTZlNDU0N2NjMWYz
NTJlOGM4MWJmNzBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgi
CisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5o
IgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOwor
Citjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3Zv
aWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhk
YTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorI2RlZmlu
ZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3NGNhZTZhZDQ2NjQ3YzZmY2ZkN2E1
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAi
R2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBH
ZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZQor
ICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAg
IEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRocm93ICAgICBKU0J1aWx0aW4g
ICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5lcmF0b3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJp
bmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0
dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0b3JQcm90b3R5cGVU
YWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTBjNDRkZWQ4
MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvclByb3RvdHlw
ZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
R2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvclByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307
CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZk
NTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFl
MTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
QEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNP
YmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+
anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5
cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERv
bnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0p
OwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2MzYmJiM2E5ZTBhMjNiM2QzNmEyZDIzMmM3ZmI1N2M4NjViMTE3NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5l
cmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07
CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JG
dW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+
KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cisg
ICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkp
OworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgZXhlY3V0
YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0
aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5l
cmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5j
dGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAg
SlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5j
dGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlv
bi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgwZjllODg5OGFjZTc5MGNmNjVh
MGM3ZDBmMzg1MWIyMWU4YTljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpT
R2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1
bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYg
RU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7Cisg
ICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xh
c3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25z
dCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5j
dGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0
YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVu
Y3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2
ZTk2MjUyNWE0N2NjODY4YjEyODkxLi43ZjFhOTIzNzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIz
YzI4MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
aCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAi
SlNEb2xsYXJWTVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlu
bGluZXMuaCIKQEAgLTM4NCw2ICszODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZN
JiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShD
UkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0
eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkp
OworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENS
RUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3Ry
dWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0
b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMs
IG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVND
SUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0
b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTQyOCw2ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5G
dW5jdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwg
Z2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5SZWdFeHAsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
RXZhbEVycm9yLCBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04
MTcsNiArODI4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRl
cmF0b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9nZW5lcmF0b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQz
Y2M3ODE4OTNiODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtNjMsNiArNjMsOCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRv
clByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0
dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBA
IC0yMjksNiArMjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2Fy
cmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhw
UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRv
clByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRv
clByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJv
cGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29u
c29sZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4
cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAg
R2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNj
b3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAg
IFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJl
LmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3lt
Ym9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQw
ZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3
ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0
NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBl
eGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVE
YXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgq
dGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgq
dGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4
OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1Mjdh
MWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQs
NiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBn
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25T
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYThm
M2Q4NjJiM2Q5Y2MxNGU4YmE1NjVlY2ZiMDkxNTIxMDMyYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29u
c3RydWN0b3IuanMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0
b3JGdW5jdGlvbiwgJ2Z1bmN0aW9uJyk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3By
b3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciwgR2VuZXJhdG9yRnVuY3Rpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265539</attachid>
            <date>2015-11-14 04:02:13 -0800</date>
            <delta_ts>2015-11-14 11:05:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151114210204.patch</filename>
            <type>text/plain</type>
            <size>115122</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li5iNjY2NGNhODdkNjkxNjYx
NGYxMWMwNzZmMTc0Y2VhMmNkMDgyYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTUtMTEtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2VuZXJhdG9yRXBpbG9ndWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VN
b2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9w
ZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2YXJpYWJsZUF0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNH
ZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KwogMjAxNS0xMS0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBBaXI6IHdlIGhhdmUgbW9yZSByZWdpc3RlciB0aGFuIHdoYXQgdGhlIGFs
bG9jYXRvciBiZWxpZXZlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFk
MGI0YmE5ZWY2MGE4MGM1YTYxNDNjOTg1NWJmNjdlOGJmMDNjMTMuLmRlYzE4NTRkY2IwYzcyN2M5
NThlNjY5YTdlNWQ5YmRhNjUwMWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTU2Miw2ICs1NjIsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNF
UwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUv
SW5kZXhpbmdUeXBlLmNwcApAQCAtNjAxLDYgKzYwNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9S
VU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9K
U0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM2LDYgKzc0MSw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAg
ICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcApAQCAtMTE5NCw2ICsxMjAwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVy
YXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJy
YXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0
aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5l
cmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ds
b2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTAwM2U0ZmJkOGIyYWQ2Yzc5NzZmYjFlMDEyZmI4OGQ2ZTI0YTk3OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwg
dmFsdWUsIDApOworfQorCitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3Rh
dGUsIHZhbHVlLCAxKTsKK30KKworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVy
YXRvclN0YXRlLCBleGNlcHRpb24sIDIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGJkMjljNTVhMzczNTRkZTNlYmFhMjk1
MzhhYjE3MWMyMDlmMTMzMTIuLmFkMzg5YWFjNDVhMzY1ZjU2NmE3NGJmNjg2NmY0OTlhMDhhNWFi
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KQEAgLTEyOCw2ICsxMjgsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCAzMTUxMWU3YzFkMWY1ZTk3Mzk3Y2QyYjRjZjQ5YmE4YjRjMzhiNDBlLi44NzQ3Nzk2
YjI2Zjg4ZDhhN2Y2NzVkMjNkNGIyYmIzZmIyNTQ4Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNzAsNyArNzAsOSBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzog
eworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3Vt
ZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUz
LDYgKzI1NSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxl
X2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgIGNhc2Ug
b3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDE4ZmZhMDcwZWZj
YzdlNjllODY3ZGNlZGNjNWM3ODU5NzE4MGU0OGYuLmY0ODU2MmEwYmZhZDY2NDBjOTRmYTdkNDFi
ZTA3YWZhODM1MjNhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDkxLDYgKzE0OTEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVi
dWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3Ig
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2Vu
ZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAg
ICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGlu
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1
MGIxMDJhMTVkLi41NTdiNmY0YzRkNTk5ZjUwNTJjYWE0MDk0MmE3OWMwNTUxMjA2OTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAt
MzEsMTQgKzMxLDE0IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZv
IHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNl
c0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0
aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAg
ICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQor
ICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5j
dGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNp
Z25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2Rl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2
NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li43YzhmYzNjZjlhOTYwM2UzMTc2YWQ3MmNkZjJiNTg0
MDRhNTc3ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY1LDEwICs2NSwxMCBAQAogICAgICwgbV9oYXNDYXB0
dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1
aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24o
aW5mby5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xp
bmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9k
ZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlw
ZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRj
MTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uNmIwNDZkOTIxZTdiN2JjNTBjZjdk
M2MzN2UwZDhjYTkwOWQyZTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVl
ZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsg
fQogCkBAIC0zODcsMTIgKzM4NywxMiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAKICAg
ICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1
bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
ICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYx
MTM3ZTFlNDdlOWQ1OWI2Li5mZGIzOTdkNDBkZDE2ZTI5MTIzNDc3Yjg4YWM2ZGU1ZGFjOGU4ZWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJv
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rp
b25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7
CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwpAQCAtNjcsNyArNjcsNyBA
QCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0
dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5j
dGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+
aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwg
aXNBcnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVk
c0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1v
ZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBwYXJzZU1vZGUp
KTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9y
Pih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdl
bmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtOTksNyAr
OTksNiBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1
bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
KG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAg
ICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
OwpAQCAtMTgwLDcgKzE3OSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBp
c0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBD
b2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Ci0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VN
b2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5
MjkzZjQxYmE0MmQ5YzFmOC4uMzlkOGMzMzQyMzlkZjZlYTMzNjA2NzFjODBlNDE3ZmU2ZDc2MTk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBh
cnNlckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
LCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApA
QCAtMTI1LDcgKzEyNSw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1
Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0K
ICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlk
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0
QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtMTU4LDcgKzE1Nyw2IEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
dW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9u
TW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5ZWU2
MTExY2MzZDA3ZjYzNDRjOTVlMDhmMmRlZTlkZmM4MDY1NGMyLi4yZjNhODM0YmQyMmY5MmYzMDcy
MDI5ZmE5MWU4NDA5OTIxMjE0N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjUxLDI5ICsyNTEs
NjUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgo
SlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKLSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1
bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKLSAg
ICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAg
IGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKS5pbXBsKCkpOwotICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2Nv
cGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKLSAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5h
bWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXND
YXB0dXJlZCk7Ci0gICAgfQotICAgIAotICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhp
bmdzKSB7Ci0gICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsK
LSAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBk
b24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCi0gICAg
ICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2Zm
IG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKLSAgICAgICAgLy8g
dGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRl
ciBlbnZpcm9ubWVudC4KLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXMoKSkKLSAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQo
c3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKLSAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhl
IGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBz
dXJlIHRoYXQgcGFyYW1ldGVycwotICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90
ZWQuCi0gICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVz
ZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0gICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5pdGlhbGl6ZU5l
eHRQYXJhbWV0ZXIoKTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2Nr
LT5wYXJzZU1vZGUoKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSkgeworICAgICAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlv
biwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24g
YSBnZW5lcmF0b3IncyBzdGF0ZS4KKworICAgICAgICAvLyBBbGwgdGhlIHBhcmFtZXRlcnMgZm9y
IGEgZ2VuZXJhdG9yIHNob3VsZCBubyBiZWNvbWUgaGVhcCB2YXJpYWJsZS4gU28gd2UgY2FuIGlu
aXRpYWxpemUgdGhlbSBoZXJlLgorICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUgKEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkuCisgICAg
ICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUg
c3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFs
aXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCk7CisKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFk
ZFZhcigpOworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV90aGlzUmVn
aXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5l
cmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291
bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFz
ZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3Vp
dGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB3ZSBj
YW5ub3QgZW1pdCBgYnJlYWtgLgorICAgICAgICBiZWdpblN3aXRjaCgmbV9wYXJhbWV0ZXJzWzFd
LCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworCisgICAgICAgIC8vIEFuZCBoZXJlIGlz
IGEgY29kZSBmb3IgYW4gaW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgUmVmUHRyPExhYmVsPiBsYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChs
YWJlbCk7CisgICAgICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7CisKKyAgICAgICAgaWYgKHNo
b3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0
ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRl
ciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0
ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZh
ciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBv
ZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAg
ICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisg
ICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1
bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+
ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAgICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJl
ZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAg
Ym9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2Fw
dHVyZWQ7CisgICAgICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAg
ICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAg
ICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhh
dmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAg
IC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9u
IGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8v
IHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0
ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBh
cmFtZXRlclZhbHVlcygpKQorICAgICAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52
aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcg
ZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFt
ZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBt
X3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgp
KTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAg
fQogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBv
dXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNl
OwpAQCAtNDYwLDEzICs0OTYsMjAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0g
ICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAg
ICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRN
b3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBp
ZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAg
ICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7
CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxl
ZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3
aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIs
ICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSAr
NTE5LDYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5j
dGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAg
ICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAog
ICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNh
bGxlZApAQCAtMzgxMyw0ICszODUzLDQxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFs
aWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAg
fQogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KQoreworICAgIFJlZ2lzdGVySUQqIHN0YXRlID0gZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKSk7CisgICAgZW1pdFB1
dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUsIHN0YXRlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0
UmV0dXJuKGFyZ3VtZW50KTsKKworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgp
OworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExh
YmVsKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIHJldHVy
biAmbV9wYXJhbWV0ZXJzWzJdOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2Vu
ZXJhdG9yRXBpbG9ndWUoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3
aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250
ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9
IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVt
cFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qg
c3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxl
Lm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZp
bGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIg
dGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8g
dGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFT
U0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAg
anVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hB
ZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggZDE5MWY5OWY1ZjA5YTdjZTQ2Njk3YTdiOTA0OTBkZDk0OWE0
N2FiYS4uZTg4ZTkzOWY2ZDNjMjBmNWNlZTkxMTAxMGU3MzAxMWI3MzkzNzZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNjQyLDEyICs2NDIsMTcgQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdp
c3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNo
KHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwg
TGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW1p
dEdlbmVyYXRvckVwaWxvZ3VlKExhYmVsKiBkZWZhdWx0TGFiZWwpOworCiAgICAgICAgIENvZGVU
eXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVI
b29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9z
aG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAg
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC04MDIsNiAr
ODA3LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRy
IH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAt
ODI1LDYgKzgzMSw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRl
eHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBt
X2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250
ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBO
b3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxl
VHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5p
dGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBkYzdm
ZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uODhlYWYyZDlhMTJlM2Q2NjUyMTllNmQwZTY1NjViZTY2
ZGI0NzU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtMjk2NiwyNiArMjk2Niw3NSBAQCB2b2lkIEZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3Rh
cnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0g
ICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2lu
Z2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dp
dGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xl
U3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2Rl
KiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVT
dGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQt
PmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAg
ICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhw
cik7CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2Yg
YSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3Rh
dGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVu
dE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2lu
Z2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVu
dEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAg
ICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50
SW5CbG9jayk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0
KCksIGZ1bmNFeHByKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJp
dmF0ZU5hbWUsIG5leHQuZ2V0KCkpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0
ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlKTsK
IAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5z
ZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAg
PSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBi
ZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNz
aW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mg
c291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTog
eworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsK
KyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFi
ZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdl
dCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0
TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURh
dGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBj
YXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisKKyAgICAgICAgLy8gT0ssIGhl
cmUgaXMgYSBnZW5lcmF0b3IgZXBpbG9ndWUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJh
dG9yRXBpbG9ndWUoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiBy
ZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50
IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAg
ICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkg
eworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0
aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxv
Y2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNf
Y2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNl
cnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAg
ICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsNiArMzA2MiwxNCBA
QCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogeworICAgIGlmICghZGVsZWdhdGUoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCkpOworICAgICAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CisgICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1
c3QgYSBzdHViLiBXaGVuIGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1w
bGVtZW50IGl0LgogICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJOb3QgaW1wbGVtZW50ZWQgeWV0LiIpKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2Q2ODZiNzJhZGQ0
YjQ4ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVlZS4uZGFjYmRkODAwMjk4NDI4NDE2ZWUxMDYzZjMz
ZGY1Y2I0ZDNjMzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEzLDYgKzIx
Myw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChv
cF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERFRklO
RV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9kaXYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlOTY4MjkyYWI3
MDI0YThjMmFmZWFmZmQwZmU0NTkyY2M4NTM2NDcwLi5jNmQ2NjllMWQ3OTY5NTgxNTE3YTNiYWYy
M2Y2YjQ3M2U1MjdjMzFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Myw2ICs0OTMs
OCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jl
c3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjMWJiNzQzZmNiN2UyY2RmYjBhMmRjN2QxZDhkMzk0
OTdmODYyMGM4Li45YzNiNzBmZjg4NjA4NDhiYWY1ZTMyNzNjMjM0NmMwY2U0ZTg0ZmIzIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEzOTksNiArMTM5OSwx
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA4
NDliMmQ3NTMzMjAzMWEwZTZjNzQ4ODUxMTEyMjBkYjJhN2QwOWE0Li5mYTllMDEzYjExMWU1Zjdk
NTI4YzRlYzQ0OGMxZmZiNzQwYjA2ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNTczLDYgKzE1NzMsMTggQEAg
X2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9zYXZlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3BhdGNoKDIp
CisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXgg
N2M4NWFjMGNiODM4NzUyNDM4MjJkMWJkMDEzYTNmNzkzY2U3ZDlhOS4uNjIxNzk4OWY1Zjk1MGM2
YmExMDcxZGIwN2Q3N2FhNDkxZmNmZjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKQEAgLTM2MywxMiArMzYzLDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJj
ZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlv
biwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBp
blN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlz
QXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAg
ICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3
YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi4yZGNhNzI0YzY1OTFlMWI2OTIzNTA2ZTlhNTk3
OGViYWM1MGIwNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAt
MTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0
b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0
aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9l
bmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYzLDcgKzE2Myw2IEBAIHZvaWQgUHJvZ3JhbU5vZGU6
OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBj
bG9zZWRWCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJp
Y3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNB
cnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogewogICAgIEFT
U0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0
b3JLaW5kKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggY2RlNDlhOWI2
YTYwNDU2OThlYmViZDRkMDlhN2VjYjNhZTkyZmMzNC4uOTRjMGRkMGU4MjBlNDg4NTM5NTVhNDEz
OWVkNTI1NTVmNmJjNDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAt
MTgxMiw3ICsxODEyLDcgQEAKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBh
cmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAg
CkBAIC0xODM4LDcgKzE4MzgsNiBAQAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJp
Y3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVu
c2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50
IGxpbmVTdGFydE9mZnNldCkKQEAgLTE4NjUsNyArMTg2NCw2IEBACiAgICAgICAgIFNvdXJjZVBh
cnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4
dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMzc0YmNiMmNiMzViMDU0N2JhNWQzOWY0NTEzOTUz
NzE3OTQzZjQxZC4uZGZlZmIzYmI1ZDA1MjgzYWViM2Q0ZGZjOThjNGY0M2Y1ODlmMzFmOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjQ3LDcgKzI0NywxMCBA
QAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBp
ZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0
aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25Q
YXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAg
ICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0y
NzEsOCArMjc0LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dG
dW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBz
b3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VN
b2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFy
c2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTQ1Niw2ICs0NjMsNDUgQEAKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1l
bnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0
ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9
IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBm
dW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBp
bnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9
ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRl
cnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOzsKKyAgICBpbmZvLnN0YXJ0
T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OworICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDM7IC8vIHN0YXRlLCB2YWx1ZSwgdHlwZQor
CisgICAgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMs
IHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hl
Y2tlciBnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xl
eGVyLmdldCgpKTsKKyAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5l
cmF0b3JGdW5jdGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEg
Z2VuZXJhdG9yIik7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAg
aW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgaW5mby5ib2R5U3Rh
cnRDb2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5mbyk7CisgICAgYXV0byBzdGF0
ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rp
b25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKKyAgICBjb250ZXh0
LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKworICAgIHJldHVy
biBzb3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRl
bnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7
CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTU1NCwxMyArMTYw
MCwxMiBAQAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAogICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlv
bkJvZHlCbG9jayAhPSBib2R5VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlm
ICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTU3Miw3ICsxNjE3LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9u
Iik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBA
IC0xNTg4LDYgKzE2MzMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gIm1ldGhvZCI7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAgICAgIHJldHVybiAiZ2Vu
ZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
OgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0
aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBAIC0xNjY2LDYg
KzE3MTMsMzIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3Rl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5j
cmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7
CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
U3RhdGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRl
cigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAg
YXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUs
IDApOworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwor
ICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJp
dmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0
aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTc3
NiwxMiArMTg0OSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0Owog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0
YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBi
b2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0
cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1v
ZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0
cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9k
eVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZv
KTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzk1LDcgKzE4NjYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xl
eGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVu
Y3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0g
ICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBl
ID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAt
MTgxNywxNCArMTg4OCwyNCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9
IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUo
KTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlv
bkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0
byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJz
ZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0
cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50
LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+
c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAg
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKyAg
ICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVl
VmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBw
ZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRT
dGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2Ug
dGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNv
bnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zm
c2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25J
bmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsK
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwg
IicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rp
b25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEg
dmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyAr
MTk3Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykK
ICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFy
YXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2Uo
ZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUi
KTsKQEAgLTIwNDMsNyArMjEyNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAg
aWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEg
Z2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNh
bm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAg
ICAgIH0KQEAgLTI5ODksNyArMzA3MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNV
bmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2NhdGlvbiBtZXRob2RMb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0ID0gdG9rZW5T
dGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsK
LSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CisgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIG1l
dGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMyNDIsNyArMzMyMyw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2Vu
KQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1
bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwg
IkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZTIxM2UwNzJmYjgwZTc0OGY4NTYyNWE2NzM4Y2Qx
N2VjYTE2ZjA5Mi4uNTg1ZjhjNDdiNDFjMjYwZDNjYWUwYWIzYzA3ZGYwYTZmZjE4YjAxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yNDMsNiArMjQzLDcgQEAgc3Ry
dWN0IFNjb3BlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAobW9kZSkgewogICAgICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICAgICAgICAgIHNldElzR2VuZXJhdG9y
KCk7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTExMyw2ICsxMTE0LDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRl
bnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRl
bWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVk
KiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBl
IHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTc1LDYgKzExNzcsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJv
b2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywg
U291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3Qg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJz
ZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5m
bzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEyOWJkNzE1NTI4YmU4ODUuLmMw
ODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEwYzAyOWNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIGVudW0gY2xh
c3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3JtYWxGdW5jdGlvbk1vZGUsCiAgICAgR2VuZXJh
dG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAg
ICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUsCkBAIC02MSw2ICs2Miw3IEBAIGlubGluZSBi
b29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICBz
d2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5j
dGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1LDYg
Kzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcsNyBA
QCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNWQzOTNhM2RhN2U3ZTU5ZGI4NmU2M2NkYmZh
ZGZkOTk1YTUxZTljOS4uZGJmNjg4MThhNTUxZmY0NWQzMjQ5M2JkM2I3NWQ4NTQ0NTViY2E4YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4
Miw3ICsxODIsNyBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkg
eyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQ
cm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5j
dGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBp
bnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBG
dW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4
cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBp
bnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0
Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUzNTVkODdhM2IzM2IxLi42NjQ4YWEwMTgwNzRlOWI4
YWQyMGVkZjg5NDhlODUyZjI1NTEwMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNy
byhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBc
CisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAog
ICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCkBAIC0zMjksNiArMzMwLDExIEBA
CiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAg
ICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAg
IG1hY3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkg
XAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYzRmNmMyMmM3NTQ4ODkxOTBjYmYxMWI0NWE0
OTE0YmNhZjc5OTkxMS4uN2IwNjhkZDNlZDdmNmQ2MjVkOTJhMmJkMDYzODQzNjZiOWQ5YjY2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJv
ckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY0NCw2
ICs2NDUsMzQgQEAgc3RhdGljIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGEqIHNldHVw
QXJpdHlDaGVja0RhdGEoVk0mIHZtLCBpbnQgc2xvdHNUb0EKICAgICBFTkQoKTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCit7CisgICAgLy8gT25seSBzYXZlcyB2YXJpYWJs
ZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIHx0aGlzfCwgfHNjb3BlfCByZWdpc3RlcnMgYXJl
IGluY2x1ZGVkIGluIHRoZW0uCisgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRl
ZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1
ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KKyAgICBCRUdJ
TigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVy
YXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2VuZXJh
dG9yKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgc2xvdCkpCisgICAgICAgIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oc2xvdC5nZXRWYWx1ZShleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIGVsc2Ugewor
ICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIChleGVj
LT5yZWdpc3RlcnMoKSArIGV4ZWMtPmFyZ3VtZW50T2Zmc2V0KDIpICsgMSkgLSBleGVjLT50b3BP
ZkZyYW1lKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUs
IFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvcikt
PnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICBmcmFtZS0+c2F2ZShleGVj
KTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sK
KyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVy
YXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpKTsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMpOworICAgIEVORCgpOworfQorCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAg
QkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKaW5kZXggYjBiYTllOGRhMWUxMzUwZWNlZWFjYzgxZDI3YmM4Y2EyYjM5ZGRkZC4uMjFk
YmVhM2Y0YzdmNTZmZmFiNWFmNTA0NWYzODkxYTMyNjk5NDYxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBA
QCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9p
ZComIGEsIHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRl
eF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVf
Y2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVz
b2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLmQxNjE5
OTg0MzM4YTkxYTJkMjg3NWM2YmRjZDNiYzY2NzcyNGU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJs
b2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAg
KnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsK
KyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgK
ICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAog
ICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSwgZmlyc3RMaW5lKCksIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQu
LjNmMjZhMTJkMmRiZmUzOGVmZTI1MGM5ZjUwN2Q1ZWM4NjY3MTNmMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFz
cyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAg
ICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMo
KSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAg
ICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZh
bENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBA
QCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBm
YWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rp
b25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5j
dGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24o
KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcq
IG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFs
dWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcych
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTg5ZDE5ODg3MDhkYjNkMjhlNWJiNTYwZDhlZWUxZmRkYjdhN2MyNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2lu
Zm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFt
ZShWTSYgdm0sIHNpemVfdCB2YXJpYWJsZXNTaXplKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJh
dG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3ZhcmlhYmxlc1NpemUodmFyaWFibGVz
U2l6ZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdlbmVyYXRvckZyYW1lKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+bV92YXJpYWJsZXNTaXplKTsKK30K
KworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJh
bWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZWYXJpYWJs
ZXMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAg
ICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1l
Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyhudW1iZXJPZlZhcmlhYmxlcykp
KQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZWYXJpYWJsZXMpOworICAgIHJl
c3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
R2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFJlZ2lzdGVyKiBy
ZWcgPSAoZXhlYy0+cmVnaXN0ZXJzKCkgKyBleGVjLT5hcmd1bWVudE9mZnNldCgyKSArIDEpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXNTaXplOyArK2kpCisgICAgICAg
IHZhcmlhYmxlQXQoaSkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIHJlZ1staV0uanNWYWx1ZSgpKTsK
K30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBSZWdpc3RlciogcmVnID0gKGV4ZWMtPnJlZ2lzdGVycygpICsgZXhlYy0+YXJndW1lbnRPZmZz
ZXQoMikgKyAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFibGVzU2l6ZTsg
KytpKQorICAgICAgICByZWdbLWldID0gdmFyaWFibGVBdChpKS5nZXQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNzE4YTM1NDEwYTM1YjJmNTU3Y2M1NjQxNTI1MjMxYjExYjFi
YWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRl
ICJKU0NlbGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xh
c3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJh
bWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZlZhcmlhYmxlcyk7CisKKyAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiB2YXJpYWJsZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIq
Pih0aGlzKSArIG9mZnNldE9mVmFyaWFibGVzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4mIHZhcmlhYmxlQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHZhcmlhYmxlcygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mVmFyaWFibGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JG
cmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYXJpYWJsZShz
aXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZWYXJpYWJsZXMoKSAr
IGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3Rh
dGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyh1bnNpZ25lZCBudW1iZXJPZlZh
cmlhYmxlcykKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlZhcmlhYmxlcygpICsgbnVt
YmVyT2ZWYXJpYWJsZXMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqKTsKKyAg
ICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFt
ZShWTSYsIHNpemVfdCB2YXJpYWJsZXNTaXplKTsKKworICAgIHNpemVfdCBtX3ZhcmlhYmxlc1Np
emU7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitwcm90ZWN0
ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNTczMjk2MjNlNDQ2ZmI1
ODM1NDBiOTJhOTM3MmVlZTBiY2EwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCww
ICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJEZWJ1Z2dl
ci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJGdW5jdGlvblBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiTGV4ZXIu
aCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5m
byBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7
CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIz
ZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisj
ZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwor
CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisg
ICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZTI0MWFlMDg1NjMwOWE2ZTQ1
NDdjYzFmMzUyZThjODFiZjcwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3
ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gK
KyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRl
OgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2
ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJj
ZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBl
VGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJl
dHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNC
dWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2ws
IGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2
bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJv
dG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEw
YzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQ
cm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0
b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIy
ZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZh
NTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAg
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpT
T2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNP
YmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9y
UHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlw
ZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2Jq
ZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNl
dCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdjM2JiYjNhOWUwYTIzYjNkMzZhMmQyMzJjN2ZiNTdjODY1YjExNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25J
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3Qu
aCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0
aW9uKSB9OworCitKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6
IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2Vu
ZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1
bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0
b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQor
eworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJh
dG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9y
RnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVu
Y3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MGY5ZTg4OThhY2U3
OTBjZjY1YTBjN2QwZjM4NTFiMjFlOGE5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2Rl
ZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5l
cmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklU
OworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZl
SklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJp
ZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisg
ICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJh
dG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsK
KyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsK
KworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNh
cGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dlbmVy
YXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2JhNWFjMWFhMDU4
YWMzOWVlNmU5NjI1MjVhNDdjYzg2OGIxMjg5MS4uN2YxYTkyMzcyYjgzMmM0NDI2ZjBkMWRkYWI1
NzQ4YjJiM2MyODA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2lu
Y2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1f
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1
bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIw
LDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5
bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3Rv
dHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBl
RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBl
U3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVu
Y3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwpAQCAtODE3LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NDksNiArODYyLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0
OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2Rk
NDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBH
ZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNs
YXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vy
c29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlw
ZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBt
X3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1f
aXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxH
ZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xs
YXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBl
KiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0
b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9
CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVi
dWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0
cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
NTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFiYzlmZmY2MDRm
MzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0
NCw2ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9j
YXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlw
ZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rp
b25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVk
U3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGNl
ZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2OGQyYjgxZTYuLjU1NzdhODlhNDkwZmQwYzJm
NDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApA
QCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVj
dHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhj
ZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmE4ZjNkODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0g
KG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwu
R2VuZXJhdG9yRnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rp
b24uX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90
b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265545</attachid>
            <date>2015-11-14 11:05:30 -0800</date>
            <delta_ts>2015-11-14 23:17:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151115040521.patch</filename>
            <type>text/plain</type>
            <size>122175</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li5mMTg4Zjg4MTk4YWJkY2Uy
MDRlZTA3NmUyM2UxMjcwYjgyYmNjY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDUgQEAKKzIwMTUtMTEtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlND
OjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25N
ZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5l
cik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQ
YXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlND
Ojppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUp
OgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZhcmlhYmxlQXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjph
bGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCiAyMDE1LTExLTExICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFpcjog
d2UgaGF2ZSBtb3JlIHJlZ2lzdGVyIHRoYW4gd2hhdCB0aGUgYWxsb2NhdG9yIGJlbGlldmVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWQwYjRiYTllZjYwYTgwYzVhNjE0
M2M5ODU1YmY2N2U4YmYwM2MxMy4uZGVjMTg1NGRjYjBjNzI3Yzk1OGU2NjlhN2U1ZDliZGE2NTAx
ZjYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYyLDYgKzU2Miwx
MCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAg
ICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBA
IC02MDEsNiArNjA1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAg
IHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQu
Y3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAog
ICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwCkBAIC03MzYsNiArNzQxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09C
SkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk0
LDYgKzEyMDAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDAzZTRmYmQ4YjJhZDZjNzk3
NmZiMWUwMTJmYjg4ZDZlMjRhOTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5j
dGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlz
LkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgMCk7Cit9CisKK2Z1
bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
dGhpcy5AZ2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIDEpOworfQor
CitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQodGhpcy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2VwdGlv
biwgMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KaW5kZXggYmQyOWM1NWEzNzM1NGRlM2ViYWEyOTUzOGFiMTcxYzIwOWYxMzMxMi4u
YWQzODlhYWM0NWEzNjVmNTY2YTc0YmY2ODY2ZjQ5OWEwOGE1YWJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTI4LDYgKzEy
OCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5h
bWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4
X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9h
ZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
YXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDMxNTExZTdjMWQx
ZjVlOTczOTdjZDJiNGNmNDliYThiNGMzOGI0MGUuLjg3NDc3OTZiMjZmODhkOGE3ZjY3NWQyM2Q0
YjJiYjNmYjI1NDgyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCkBAIC03MCw3ICs3MCw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxsOgogICAgIGNhc2Ugb3Bfam5lcV9udWxs
OgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfaW5jOiB7CisgICAgY2FzZSBvcF9pbmM6
CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTMsNiArMjU1LDggQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2Fz
ZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9w
X3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMThmZmEwNzBlZmNjN2U2OWU4NjdkY2VkY2M1Yzc4
NTk3MTgwZTQ4Zi4uZjQ4NTYyYTBiZmFkNjY0MGM5NGZhN2Q0MWJlMDdhZmE4MzUyM2EyMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0OTEs
NiArMTQ5MSwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFr
cG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2Vu
ZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rl
ck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
CmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjU1N2I2ZjRj
NGQ1OTlmNTA1MmNhYTQwOTQyYTc5YzA1NTEyMDY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zMSwxNCArMzEsMTQgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRh
YmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmlj
dE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1v
ZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OSw3
ICs0OSw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAtNTgsNyArNTgs
NyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
IDogMTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZh
OGI1NzYuLjdjOGZjM2NmOWE5NjAzZTMxNzZhZDcyY2RmMmI1ODQwNGE1NzdlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cApAQCAtNjUsMTAgKzY1LDEwIEBACiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNl
KQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAg
ICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1
Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlv
bigpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBt
X2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkp
CiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwg
bV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAw
MDE2NWI4NjFmMGY4M2NmLi42YjA0NmQ5MjFlN2I3YmM1MGNmN2QzYzM3ZTBkOGNhOTA5ZDJlNWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTM4NywxMiArMzg3
LDEyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5z
aWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RM
aW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1u
OwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBt
X2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLmZk
YjM5N2Q0MGRkMTZlMjkxMjM0NzdiODhhYzZkZTVkYWM4ZThlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5j
dGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9y
JiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpT
UGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJ
blN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
ZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5j
dGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRp
b24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsK
KyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5j
dGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhl
Y3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJh
dG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQo
KSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50
U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgp
OwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC05OSw3ICs5OSw2IEBAIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2so
CiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1
bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0
aW9uKCkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBAIC0xODAsNyArMTc5LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dp
dGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2
LDcgKzE5NSw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
ICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlz
QXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li4z
OWQ4YzMzNDIzOWRmNmVhMzM2MDY3MWM4MGU0MTdmZTZkNzYxOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAg
ICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQ
YXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9t
R2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsNyArMTI1LDYgQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAg
Ym9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVj
dG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVu
dmlyb25tZW50Jik7CkBAIC0xNTgsNyArMTU3LDYgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVu
c2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDllZTYxMTFjYzNkMDdmNjM0NGM5NWUw
OGYyZGVlOWRmYzgwNjU0YzIuLjJiOTA1MmMzNThmNDI0M2UwMTY0YzJkODdlMTM3MTNlNDhhZGMx
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRp
bkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtMTk4LDcgKzE5OSwxMCBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIC8vIG9wX3dpbGxf
Y2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBh
cmUgbm90CiAgICAgLy8gY29tcGF0aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5
IG9mIGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5Ci0gICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6
OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVt
aXRQcm9maWxlSG9va3MpCisgICAgLy8KKyAgICAvLyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0
b3IsIGFsbCB0aGUgY2FsbHMgY2Fubm90IGJlIHRhaWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJl
c3VsdHMgd2lsbCBiZSB3cmFwcGVkIGFzIGFuIGl0ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRw
Oi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0
aW9uCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFp
c0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFy
c2VNb2RlKCkgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAo
YXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAg
ICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC0yNTEsMjkgKzI1NSw3NSBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGFsbG9jYXRlQW5k
RW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNr
OjpDYWxsZWUpOwotICAgIAotICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25O
b2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewotICAgICAgICBi
b29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2Nr
LT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgYm9vbCBp
c0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmlt
cGwoKSk7Ci0gICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBp
c0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwotICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3Bl
KGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVk
KTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsK
LSAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOwotICAgICAg
ICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhh
dmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKLSAgICAgICAgLy8g
ZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxs
b2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQotICAgICAgICAvLyB0aGUgcGFy
ZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmly
b25tZW50LgotICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVl
cygpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgpOwotICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBi
bG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhh
dCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAg
ICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNw
YWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4
dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQotICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNl
TW9kZSgpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlKSB7CisgICAgICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0
IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVy
YXRvcidzIHN0YXRlLgorCisgICAgICAgIC8vIEFsbCB0aGUgcGFyYW1ldGVycyBmb3IgYSBnZW5l
cmF0b3Igc2hvdWxkIG5vIGJlY29tZSBoZWFwIHZhcmlhYmxlLiBTbyB3ZSBjYW4gaW5pdGlhbGl6
ZSB0aGVtIGhlcmUuCisgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGFyZSAoQGdlbmVyYXRvclN0
YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKS4KKyAgICAgICAgbV9w
YXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBm
b3IgInRoaXMiCisgICAgICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0
UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5l
eHRQYXJhbWV0ZXIoKTsKKworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7
CisKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVy
KTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9y
U3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxp
a2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9u
IHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUg
Zm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgd2UgY2Fubm90
IGVtaXQgYGJyZWFrYC4KKyAgICAgICAgYmVnaW5Td2l0Y2goJm1fcGFyYW1ldGVyc1sxXSwgU3dp
dGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKKworICAgICAgICAvLyBDbG9zZWQgc3RhdGUuCisg
ICAgICAgIC8vIEhlcmUgaXMgdGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIHByb2xvZ3VlLiBT
byB3ZSBjYW5ub3QgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3Vs
dCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChhZGRWYXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNV
bmRlZmluZWQoKSksIHRydWUpOworICAgICAgICBlbWl0UmV0dXJuKGl0ZXJhdG9yUmVzdWx0Lmdl
dCgpKTsKKworICAgICAgICAvLyBFeGVjdXRpbmcgc3RhdGUuCisgICAgICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlz
IGV4ZWN1dGluZyIpOworCisgICAgICAgIC8vIEluaXRpYWwgc3RhdGUuCisgICAgICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6
RXhlY3V0aW5nKSk7CisKKyAgICAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3Mp
IHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsK
KyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYg
d2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQor
ICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8g
aG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAg
ICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMg
dGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVycy5o
YXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZh
ckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlv
bk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAgICAg
ICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29k
ZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAg
ICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+
aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHlu
YW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CisgICAgICAgICAgICBlbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0
ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRDYXB0
dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2
YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVz
c2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJl
c3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmly
b25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2
YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAg
ICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQorICAgICAgICAg
ICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9j
ayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBw
YXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisg
ICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2Vy
dmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0
aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGlu
aXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQg
c29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2Fw
dHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwpAQCAtNDYwLDEzICs1MTAsMjAgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBtX25l
d1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dG
dW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9u
VGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc0NvbnN0
cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZt
X3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1
ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVt
aXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAg
ICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBm
dW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAg
ICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAg
ICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Ii
KTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJs
b2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSArNTMzLDYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29k
ZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhp
cygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVk
cyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNl
dHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtMzgxMyw0ICszODY3LDkyIEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFsaWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChS
ZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAgfQogfQogCitSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3Vs
dChudWxscHRyLCBhcmd1bWVudCwgZmFsc2UpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1h
bExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0g
bmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgJm1fcGFyYW1ldGVyc1szXSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkp
KTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgp
KTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgZW1p
dEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgJm1fcGFyYW1ldGVyc1sz
XSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMikpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGVtaXROZXdJdGVy
YXRvclJlc3VsdChudWxscHRyLCAmbV9wYXJhbWV0ZXJzWzJdLCB0cnVlKTsKKyAgICAgICAgaWYg
KGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0
TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICB9CisgICAgICAgIGlm
IChwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAg
ICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworCisgICAgICAgIGVt
aXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIC8vIFRocm93Lgor
ICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhyb3coJm1fcGFyYW1l
dGVyc1syXSk7CisKKyAgICAvLyBOb3JtYWwuCisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdl
dCgpKTsKKyAgICByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
c3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBkc3QgPT0gdmFsdWUpCisgICAgICAgIHJlc3Vs
dCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROZXdPYmplY3QocmVzdWx0LmdldCgpKTsKKyAg
ICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lLCBl
bWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9uZSkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIHJldHVybiBy
ZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0
YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3Rh
dGUpKSk7CisgICAgZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdM
YWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAg
ZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5k
R2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJ
bmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0
YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNv
ZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZh
dWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCArIDMpOworCisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJs
ZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRj
aEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4g
PSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDAp
OworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5z
aXplKCk7ICsraSkgeworICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBj
bGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBs
YWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQo
IW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBU
YWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVz
cywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IGQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3YjkwNDkwZGQ5NDlhNDdhYmEu
LmM0NjM2YjdkMDI3ODNhNjZlN2EzYjVkYTc2Njk4NjJlOGY1MGJjZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTI5Nyw2ICsyOTcsOCBAQAogCiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIo
KSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JSZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAg
ICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lz
dGVycyByZXR1cm5lZCBieQogICAgICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlm
aWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIg
d2l0aCBhIHJlZmNvdW50IG9mIDAgaXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0
aGF0CkBAIC02NDIsMTIgKzY0NCwyMCBAQAogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lz
dGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2go
dWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBM
YWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAg
ICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFlpZWxkKFJlZ2lzdGVySUQqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0l0ZXJhdG9y
UmVzdWx0KFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgYm9vbCk7CisgICAgICAgIHZvaWQgZW5k
R2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworCiAgICAgICAgIENvZGVUeXBlIGNvZGVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQog
ICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0
RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNl
TW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC04MDIsNiArODEyLDcgQEAK
ICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJl
Z2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAg
ICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI1LDYgKzgz
Niw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsK
ICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29u
dGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsK
ICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5j
dGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1f
ZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFy
Z3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0
NWExNGRjMTVlMTgyZi4uNDkyNzA5ZjFiYTYxM2RiMDkwNjdiNzA3ZjZjYTBhYWM5MzQyZmU1NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05P
YmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0yNTgzLDEzICsyNTg0LDI3IEBA
IHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
UmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0
LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG51bGxwdHI7CisgICAgaWYgKG1f
dmFsdWUpIHsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92
YWx1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisKKyAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgcmV0dXJuUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIHJldHVyblJl
Z2lzdGVyLmdldCgpLCB0cnVlKTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0
dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5G
aW5hbGx5QmxvY2soKSkgewogICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQb3BTY29wZXMoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwg
MCk7CiAgICAgfQogCisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yU3RhdGU6OkNvbXBsZXRlZCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGVuZE9mZnNldCgpKTsgCkBAIC0y
OTY2LDI2ICsyOTgxLDc3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9m
ZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVj
b2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1l
bnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBS
ZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1v
ZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xl
U3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRl
bWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0
aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NF
UlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4
cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgIC8vIENoZWNrIGZv
ciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9m
IGEgc2luZ2xlIGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVt
ZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudElu
QmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3Rh
dGVtZW50KCk7Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVt
ZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3Rh
dGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5n
ZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCog
aW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpJbml0
aWFsKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAg
ICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBv
bmUuCi0gICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2Vu
ZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVy
YXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVz
ZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQo
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAg
ICAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAg
ICAgIFRyeURhdGEqIHRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRyeSh0cnlTdGFydExhYmVsLmdl
dCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZG9uZS5nZXQoKSk7
CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBnZW5lcmF0b3IuZW1pdExhYmVs
KGdlbmVyYXRvci5uZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBl
eGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgY2F0Y2hI
ZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2Vu
ZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJl
dHVybihnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSwgdHJ1ZSkpOworICAgICAgICBnZW5lcmF0
b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5n
bGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9k
ZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRl
bWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2su
CisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2Nr
KCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0g
c3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgp
OworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm5Ob2RlID0gc3Rh
dGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkg
aW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CisgICAgICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVu
Y3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9y
IHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUu
CisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUs
IGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogfQogCkBAIC0zMDEzLDYgKzMwNzks
MTggQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVudCgpKSB7CisgICAgICAgICAg
ICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJn
LmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOworICAg
IH0KICAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVT
NiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KICAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CiAg
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCmluZGV4IGNkNjg2YjcyYWRkNGI0OGQ5YTYzNmMzNGZmMDlhYmZlYmQ4NDg1ZWUu
LmRhY2JkZDgwMDI5ODQyODQxNmVlMTA2M2YzM2RmNWNiNGQzYzMzMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTIxMyw2ICsyMTMsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJn
dW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVf
T1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKKyAgICAgICAgREVGSU5F
X09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZkMGZlNDU5MmNjODUzNjQ3
MC4uYzZkNjY5ZTFkNzk2OTU4MTUxN2EzYmFmMjNmNmI0NzNlNTI3YzMxZSAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2Ny
ZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVj
dGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYzFi
Yjc0M2ZjYjdlMmNkZmIwYTJkYzdkMWQ4ZDM5NDk3Zjg2MjBjOC4uOWMzYjcwZmY4ODYwODQ4YmFm
NWUzMjczYzIzNDZjMGNlNGU4NGZiMyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0xMzk5LDYgKzEzOTksMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRl
X291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODQ5YjJkNzUzMzIwMzFhMGU2Yzc0ODg1MTExMjIw
ZGIyYTdkMDlhNC4uZmE5ZTAxM2IxMTFlNWY3ZDUyOGM0ZWM0NDhjMWZmYjc0MGIwNmUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTU3Myw2ICsxNTczLDE4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0
Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19w
YXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgyKQorCisKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdjODVhYzBjYjgzODc1MjQzODIyZDFiZDAxM2Ez
Zjc5M2NlN2Q5YTkuLjYyMTc5ODlmNWY5NTBjNmJhMTA3MWRiMDdkNzdhYTQ5MWZjZmYzYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNjMsMTIgKzM2
MywxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAg
ICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFy
YW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVu
YSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAog
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rvcktp
bmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbklu
Zm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4u
MmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5NzhlYmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1O
b2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1u
KHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3
ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgICAgICAsIG1fcGFyc2VNb2Rl
KG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGNkZTQ5YTliNmE2MDQ1Njk4ZWJlYmQ0ZDA5YTdlY2IzYWU5MmZj
MzQuLjk0YzBkZDBlODIwZTQ4ODUzOTU1YTQxMzllZDUyNTU1ZjZiYzQzNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNl
UGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAg
ICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmll
ciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAg
ICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZz
ZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3Rv
cktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247
IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxh
c3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcg
KzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAg
IHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM3
NGJjYjJjYjM1YjA1NDdiYTVkMzlmNDUxMzk1MzcxNzk0M2Y0MWQuLmRmZWZiM2JiNWQwNTI4M2Fl
YjNkNGRmYzk4YzRmNDNmNTg5ZjMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTI0Nyw3ICsyNDcsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rp
b24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25J
bmZvOwotICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUs
IGZ1bmN0aW9uSW5mbyk7CisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9u
SW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwog
CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjcxLDggKzI3NCwxMiBAQAogICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9k
ZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0Zv
clN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAg
ICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMo
Y29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hl
Y2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRp
bmc7CkBAIC00NTYsNiArNDYzLDQ1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNv
dXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworCisgICAgdW5z
aWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlv
biBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVp
bGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0KTs7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKKyAg
ICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8ucGFyYW1ldGVyQ291bnQg
PSAzOyAvLyBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3Bl
UmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVy
YXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0
KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwg
IkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29w
ZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8p
OworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEo
c3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4o
KSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpbmZvLnBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8u
ZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2Rh
dGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAg
ICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9j
YXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVu
dHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVk
KiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3Vt
ZW50ZWQgaGVyZToKQEAgLTE1NTQsMTMgKzE2MDAsMTIgQEAKICAgICBUcmVlQnVpbGRlciYgY29u
dGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1
bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBG
dW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0
aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCks
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NzIsNyArMTYxNyw3IEBACiAgICAgZWxz
ZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTU4OCw2ICsxNjMzLDggQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3Ig
ZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToK
ICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTY2Niw2ICsxNzEzLDMyIEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAg
IGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwor
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBn
ZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25t
ZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0
b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1
bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUg
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAg
ICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
IHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWlu
aW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBl
eHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0
aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE3NzYsMTIgKzE4NDksMTAgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAg
ICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwot
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVu
Y3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
Ci0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNh
Y2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlv
bkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBj
YWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFt
ZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNv
dXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9u
U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwpAQCAtMTc5NSw3ICsx
ODY2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQ
YXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1f
bG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJ
bmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQor
ICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQog
ICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhw
cmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9k
eUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE4MTcsMTQgKzE4ODgsMjQgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNl
clN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7Ci0gICAgCi0gICAgZnVuY3Rpb25JbmZvLmJv
ZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVt
biwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkg
PSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRM
b2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUs
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgfTsKKworICAgIGlmICht
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAg
IEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwor
ICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZv
cm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlT
Y29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfSBlbHNlCisg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsK
ICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0
aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbklu
Zm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBpZiAoZnVuY3Rpb25TY29w
ZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5m
by5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICB9CkBAIC0xODkyLDcgKzE5NzMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsK
ICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAg
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2Vu
ZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
TmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBm
dW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24g
c3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0yMDQzLDcgKzIxMjQsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRvcikgewogICAgICAgICAg
ICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBwYXJzZU1vZGUg
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgICAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAgICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAncHJvdG90eXBlJyIp
OwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1l
ZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBAIC0yOTg5LDcgKzMwNzAsNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAg
ICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1
bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbklu
Zm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBp
c0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFy
dCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3Qg
cGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0
aG9kSW5mbyk7CkBAIC0zMjQyLDcgKzMzMjMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVT
Nl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2Rl
ID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVz
c2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwg
ZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGUy
MTNlMDcyZmI4MGU3NDhmODU2MjVhNjczOGNkMTdlY2ExNmYwOTIuLjU4NWY4YzQ3YjQxYzI2MGQz
Y2FlMGFiM2MwN2RmMGE2ZmYxOGIwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjQzLDYgKzI0Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBz
d2l0Y2ggKG1vZGUpIHsKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAg
LTExMTMsNiArMTExNCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50
cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0
SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVk
KiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVu
dGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDAp
OwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpA
QCAtMTE3NSw2ICsxMTc3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWls
ZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJ
bkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9u
UmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNl
ZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFh
MGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CkBAIC00Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9y
bWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rp
b25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2Rl
LApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxl
UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4
IDVkMzkzYTNkYTdlN2U1OWRiODZlNjNjZGJmYWRmZDk5NWE1MWU5YzkuLmRiZjY4ODE4YTU1MWZm
NDVkMzI0OTNiZDNiNzVkODU0NDU1YmNhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODIsNyArMTgyLDcgQEAgY2xhc3MgU3ludGF4Q2hl
Y2tlciB7CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIENs
YXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyBy
ZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJv
b2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50
IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25C
b2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENo
ZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5h
bWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJu
IEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1
ZDg3YTNiMzNiMS4uNjY0OGFhMDE4MDc0ZTliOGFkMjBlZGY4OTQ4ZTg1MmYyNTUxMDJlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJy
b3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9u
KSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8o
SlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMSBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAg
ICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAg
IG1hY3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IGM0ZjZjMjJjNzU0ODg5MTkwY2JmMTFiNDVhNDkxNGJjYWY3OTk5MTEuLjIyYmMzOTVkNjNiNWU0
YWNmMGVmYjBjODFjMmI4YTEyYzkyYjBkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM0IEBAIHN0YXRpYyBDb21tb25TbG93
UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNs
b3RzVG9BCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQor
eworICAgIC8vIE9ubHkgc2F2ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8
dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1
dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBs
ZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5l
cmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9
IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvcik7CisgICAgaWYgKGdlbmVyYXRvci5nZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUsIHNsb3QpKQorICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+
KHNsb3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICAoZXhlYy0+cmVnaXN0ZXJzKCkgLSAxKSAtIGV4ZWMtPnRv
cE9mRnJhbWUoKSArIDEpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICBmcmFtZS0+c2F2
ZShleGVjKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3Vt
ZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1
ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+
KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUpKTsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMpOworICAgIEVORCgpOworfQor
CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7
CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKaW5kZXggYjBiYTllOGRhMWUxMzUwZWNlZWFjYzgxZDI3YmM4Y2EyYjM5ZGRk
ZC4uMjFkYmVhM2Y0YzdmNTZmZmFiNWFmNTA0NWYzODkxYTMyNjk5NDYxZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsy
OTAsOCBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90
b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxl
X3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0
KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAu
LmQxNjE5OTg0MzM4YTkxYTJkMjg3NWM2YmRjZDNiYzY2NzcyNGU3NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAg
Q29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0
YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAg
ICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlv
bigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQ
YXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVz
KCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMz
NDBhMDQuLjNmMjZhMTJkMmRiZmUzOGVmZTI1MGM5ZjUwN2Q1ZWM4NjY3MTNmMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBA
QCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
ICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1
MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNz
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4g
bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRh
YmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAg
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVu
Y3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNT
dHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5u
YW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAn
dGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDZkZWJhYzk1NjIzZjFmYzU4MGFjY2UxYzE1N2QwNDMzNzM2YjdhNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNw
cApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJh
dG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNp
emVfdCB2YXJpYWJsZXNTaXplKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3ZhcmlhYmxlc1NpemUodmFyaWFibGVzU2l6ZSkKK3sKK30K
Kwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52
YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+bV92YXJpYWJsZXNTaXplKTsKK30KKworU3RydWN0dXJl
KiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZWYXJpYWJsZXMpCit7CisgICAg
R2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3RO
dWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyhudW1iZXJPZlZhcmlhYmxlcykpKQorICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZWYXJpYWJsZXMpOworICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJh
bWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFJlZ2lzdGVyKiByZWcgPSBleGVjLT5y
ZWdpc3RlcnMoKSAtIDE7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlc1Np
emU7ICsraSkKKyAgICAgICAgdmFyaWFibGVBdChpKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVn
Wy1pXS5qc1ZhbHVlKCkpOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIFJlZ2lzdGVyKiByZWcgPSBleGVjLT5yZWdpc3RlcnMoKSAtIDE7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAg
ICAgcmVnWy1pXSA9IHZhcmlhYmxlQXQoaSkuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTcxOGEzNTQxMGEzNWIyZjU1N2NjNTY0MTUyNTIzMWIxMWIxYmFhZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRv
ckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0Nl
bGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
Vk0mLCBzaXplX3QgbnVtYmVyT2ZWYXJpYWJsZXMpOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogdmFyaWFibGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBv
ZmZzZXRPZlZhcmlhYmxlcygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+JiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YXJp
YWJsZXMoKVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlZhcmlh
YmxlcygpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmFyaWFibGUoc2l6ZV90IGluZGV4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mVmFyaWFibGVzKCkgKyBpbmRleCAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXModW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMpCisg
ICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZWYXJpYWJsZXMoKSArIG51bWJlck9mVmFyaWFi
bGVzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKik7CisgICAgdm9pZCByZXN1
bWUoRXhlY1N0YXRlKik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXpl
X3QgdmFyaWFibGVzU2l6ZSk7CisKKyAgICBzaXplX3QgbV92YXJpYWJsZXNTaXplOworCisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworcHJvdGVjdGVkOgorICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTU3MzI5NjIzZTQ0NmZiNTgzNTQwYjkyYTkz
NzJlZWUwYmNhMGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVk
ZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVy
bmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgIkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8v
IE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOwor
ICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
JiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24u
aCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmUyNDFhZTA4NTYzMDlhNmU0NTQ3Y2MxZjM1MmU4
YzgxYmY3MGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisj
aW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2Nv
bnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZk
MjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVy
YXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5l
eHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNC
dWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBE
b250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygm
dm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBl
TWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxl
LCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3
NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5l
cmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKwor
fQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1Mzcx
YmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgw
ZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAt
MzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0
LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAg
IGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVj
dCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVu
dW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAg
ICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzNiYmIzYTllMGEyM2IzZDM2YTJkMjMyYzdmYjU3Yzg2NWIxMTc0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVk
ZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKwor
SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0
aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0u
aGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBB
U1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7Cisg
ICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBleGVjdXRhYmxl
LT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24s
ICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRv
ckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dl
bmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5z
dHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmFjNWU0YjkwNzBmY2M1ZTAwZjYxYmJj
ZWY2YmYxMjkzYTVhNzAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5l
cmF0b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rp
b24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBm
cmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBW
TTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xh
c3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAgICAgICAgQ29tcGxldGVkLAorICAgICAg
ICBFeGVjdXRpbmcsCisgICAgICAgIEluaXRpYWwKKyAgICB9OworCisgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNH
ZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2JhNWFjMWFhMDU4YWMzOWVlNmU5NjI1MjVh
NDdjYzg2OGIxMjg5MS4uN2YxYTkyMzcyYjgzMmM0NDI2ZjBkMWRkYWI1NzQ4YjJiM2MyODA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03
Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFy
Vk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgi
CkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAg
ICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BS
T1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRl
cmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxMSBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
QVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rv
ci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywg
bmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJ
SUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwog
ICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250
RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9y
LCBEb250RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24s
IGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJv
ciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgy
OCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9h
cnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQ
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJh
dG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dp
dGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NDksNiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5h
bWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkz
Yjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYz
LDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5
cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRl
cjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYg
KzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlw
ZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5
cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5
cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
d2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zm
c2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
cHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdF
eHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7
CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9y
UHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5
cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRv
clByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0
b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRo
U2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1
cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBy
ZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAw
MjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVk
ODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBz
dGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJs
ZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJl
ZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJl
ZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKKyAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
ZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgq
dGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNl
MTc4MTkzY2E2MjllOGU2OGQyYjgxZTYuLjU1NzdhODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYy
OThlMGI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3
IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1
bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4ZjNkODYyYjNk
OWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9y
LmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigi
cmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rp
b24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBG
dW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUuY29uc3RydWN0
b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265558</attachid>
            <date>2015-11-14 23:17:09 -0800</date>
            <delta_ts>2015-11-16 04:47:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151115161700.patch</filename>
            <type>text/plain</type>
            <size>126061</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li44ODBlYmQ1OWFlZTYzMGVm
ZjY5MWU1N2MxOTVkMmNhYmQxNDFmNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMTUtMTEtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAo
bmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlND
OjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25N
ZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5l
cik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQ
YXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlND
Ojppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUp
OgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZhcmlhYmxlQXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjph
bGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorCiAyMDE1LTExLTExICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIEFpcjogd2UgaGF2ZSBtb3JlIHJlZ2lzdGVyIHRoYW4gd2hh
dCB0aGUgYWxsb2NhdG9yIGJlbGlldmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggYWQwYjRiYTllZjYwYTgwYzVhNjE0M2M5ODU1YmY2N2U4YmYwM2MxMy4uZGVjMTg1NGRj
YjBjNzI3Yzk1OGU2NjlhN2U1ZDliZGE2NTAxZjYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTYyLDYgKzU2MiwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElN
RV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAg
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAg
cnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MDEsNiArNjA1LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBy
dW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC03MzYsNiArNzQx
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk0LDYgKzEyMDAsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9B
cnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9BcnJheS5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMDAzZTRmYmQ4YjJhZDZjNzk3NmZiMWUwMTJmYjg4ZDZlMjRhOTc5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90
b3R5cGUuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0KHRoaXMuQGdlbmVyYXRv
clN0YXRlLCB2YWx1ZSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dCh0aGlzLkBnZW5l
cmF0b3JTdGF0ZSwgdmFsdWUsIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQodGhp
cy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2VwdGlvbiwgMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggYmQyOWM1NWEzNzM1NGRl
M2ViYWEyOTUzOGFiMTcxYzIwOWYxMzMxMi4uYWQzODlhYWM0NWEzNjVmNTY2YTc0YmY2ODY2ZjQ5
OWEwOGE1YWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtMTI4LDYgKzEyOCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3Ro
IiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDIg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0KICAgICAg
ICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCmluZGV4IDMxNTExZTdjMWQxZjVlOTczOTdjZDJiNGNmNDliYThiNGMzOGI0MGUu
Ljg3NDc3OTZiMjZmODhkOGE3ZjY3NWQyM2Q0YjJiYjNmYjI1NDgyOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw3ICs3MCw5
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9u
dWxsOgogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ug
b3BfaW5jOiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNTMsNiArMjU1LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9w
X3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93
X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAg
ICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMThm
ZmEwNzBlZmNjN2U2OWU4NjdkY2VkY2M1Yzc4NTk3MTgwZTQ4Zi4uZjQ4NTYyYTBiZmFkNjY0MGM5
NGZhN2Q0MWJlMDdhZmE4MzUyM2EyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0OTEsNiArMTQ5MSwxOCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29r
TmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGdl
bmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAg
IGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAg
ICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBj
MmEwOTY5YjUwYjEwMmExNWQuLjU1N2I2ZjRjNGQ1OTlmNTA1MmNhYTQwOTQyYTc5YzA1NTEyMDY5
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCkBAIC0zMSwxNCArMzEsMTQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29s
IHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwg
Ym9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVk
c0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBt
X2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlz
Q29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5j
dGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVu
Y3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVj
dG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9y
S2luZCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cnJvd0Z1bmN0aW9uOyB9CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0Fj
dGl2YXRpb24gOiAxOwpAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewog
ICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9w
YXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1
N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjdjOGZjM2NmOWE5NjAzZTMxNzZhZDcy
Y2RmMmI1ODQwNGE1NzdlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBACiAgICAgLCBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihp
bmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dG
dW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAg
ICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1f
cGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBt
X2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRl
eCBmYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi42YjA0NmQ5MjFlN2I3
YmM1MGNmN2QzYzM3ZTBkOGNhOTA5ZDJlNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTE2LDcgKzExNiw3IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNl
c0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAg
Ym9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29w
ZUNoYWluOyB9CiAKQEAgLTM4NywxMiArMzg3LDEyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6
IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50
OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFy
c2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29k
ZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1
ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLmZkYjM5N2Q0MGRkMTZlMjkxMjM0NzdiODhhYzZkZTVk
YWM4ZThlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQAog
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmls
ZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJy
b3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02Nyw3
ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rp
b24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJ
bmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1
bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlv
bktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9y
S2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rp
b24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlz
U3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHBh
cnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVH
ZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVy
cm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBA
IC05OSw3ICs5OSw2IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3Rv
cktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAg
ICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93
RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3Ry
dWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQo
KSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcyk7CkBAIC0xODAsNyArMTc5LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29k
ZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
LCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAg
ICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2LDcgKzE5NSw3IEBAIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxp
emF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9y
LCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2Ni
NDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li4zOWQ4YzMzNDIzOWRmNmVhMzM2MDY3MWM4MGU0MTdm
ZTZkNzYxOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
ICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAg
ICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2Vw
dGlvbiwgCkBAIC0xMjUsNyArMTI1LDYgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5Piht
X2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9u
OyB9CiAKIHByaXZhdGU6CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1
Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJj
ZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC0xNTgsNyArMTU3LDYg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8g
RnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYyZGVlOWRmYzgwNjU0YzIuLjJiOTA1MmMzNThm
NDI0M2UwMTY0YzJkODdlMTM3MTNlNDhhZGMxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgpAQCAtMTk4LDcgKzE5OSwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9y
ZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CiAgICAgLy8gY29tcGF0aWJsZSB3aXRo
IHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5Ci0gICAg
LCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVj
dG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlz
U3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCisgICAgLy8KKyAgICAv
LyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0b3IsIGFsbCB0aGUgY2FsbHMgY2Fubm90IGJlIHRh
aWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJlc3VsdHMgd2lsbCBiZSB3cmFwcGVkIGFzIGFuIGl0
ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9w
dGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3No
b3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFyc2VNb2RlKCkgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlu
a1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxw
dHI7CkBAIC0yNTEsMjkgKzI1NSw3NSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxs
ZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwotICAgIAotICAgIGlmIChmdW5j
dGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1
bmN0aW9uTW9kZSgpKSkgewotICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25O
YW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKTsKLSAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVy
ZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7Ci0gICAgICAgIGJvb2wgbWFya0FzQ2Fw
dHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwotICAgICAg
ICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3Vs
ZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKLSAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciA9IGFkZFZhcigpOwotICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIi
IGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lv
bnMuIElmIHdlIGhhdmUKLSAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMs
IHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQg
YmVjYXVzZQotICAgICAgICAvLyB0aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9u
bWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50LgotICAgICAgICBpZiAoIXBhcmFtZXRl
cnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZVZh
ckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwotICAgIH0KIAot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBh
cmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBk
ZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJz
LnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdp
c3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhp
cwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQot
ICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOworICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIC8vIEJlZm9yZSBlbWl0
dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29u
dGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorCisgICAgICAgIC8vIEFs
bCB0aGUgcGFyYW1ldGVycyBmb3IgYSBnZW5lcmF0b3Igc2hvdWxkIG5vIGJlY29tZSBoZWFwIHZh
cmlhYmxlLiBTbyB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGVtIGhlcmUuCisgICAgICAgIC8vIFRoZSBw
YXJhbWV0ZXJzIGFyZSAoQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0
b3JSZXN1bWVNb2RlKS4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXpl
KCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAgIG1fdGhpc1JlZ2lz
dGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlz
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKworICAgICAgICBtX2dl
bmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0
b3JSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dp
dGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91
dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNh
bGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUg
aW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVy
LgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3Qg
aW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIC8v
IEZJWE1FOiBNYWtlIHN1cmUgd2UgY2Fubm90IGVtaXQgYGJyZWFrYC4KKyAgICAgICAgYmVnaW5T
d2l0Y2goJm1fcGFyYW1ldGVyc1sxXSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKKwor
ICAgICAgICAvLyBDbG9zZWQgc3RhdGUuCisgICAgICAgIC8vIEhlcmUgaXMgdGhlIGNvbnRleHQg
b2YgdGhlIGZ1bmN0aW9uIHByb2xvZ3VlLiBTbyB3ZSBjYW5ub3QgdXNlIHRlbXBvcmFyeSByZWdp
c3RlcnMuCisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChhZGRW
YXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICBl
bWl0UmV0dXJuKGl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKworICAgICAgICAvLyBFeGVjdXRpbmcg
c3RhdGUuCisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOworCisgICAgICAgIC8vIElu
aXRpYWwgc3RhdGUuCisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAg
IGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgaWYgKHNo
b3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0
ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRl
ciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0
ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZh
ciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBv
ZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAg
ICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisg
ICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1
bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+
ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAgICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJl
ZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAg
Ym9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2Fw
dHVyZWQ7CisgICAgICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAg
ICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAg
ICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhh
dmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAg
IC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9u
IGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8v
IHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0
ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBh
cmFtZXRlclZhbHVlcygpKQorICAgICAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52
aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcg
ZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFt
ZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBt
X3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgp
KTsgLy8gdGhpcworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAg
fQogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBv
dXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNl
OwpAQCAtNDYwLDEzICs1MTAsMjAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0g
ICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAg
ICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRN
b3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBp
ZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAg
ICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7
CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxl
ZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3
aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZSgmbV90aGlzUmVnaXN0ZXIs
ICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSB7CkBAIC00NzYsOSAr
NTMzLDYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5j
dGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAg
ICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOwogICAgIH0KIAog
ICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNh
bGxlZApAQCAtMzgxMyw0ICszODY3LDkyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFs
aWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAg
fQogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRv
clJlc3VtZUxhYmVscy5zaXplKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJl
c3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBhcmd1bWVudCwgZmFsc2UpOwor
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQu
Z2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7
CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgJm1fcGFyYW1ldGVyc1szXSwgZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRp
b24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dM
YWJlbCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRp
dGlvbi5nZXQoKSwgJm1fcGFyYW1ldGVyc1szXSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
MikpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0
KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5SZWdpc3RlciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCAmbV9wYXJhbWV0
ZXJzWzJdLCB0cnVlKTsKKyAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAg
ICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVn
aXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCks
IDApOworICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6
OkNvbXBsZXRlZCkpOworCisgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OworICAgIH0KKworICAgIC8vIFRocm93LgorICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgp
KTsKKyAgICBlbWl0VGhyb3coJm1fcGFyYW1ldGVyc1syXSk7CisKKyAgICAvLyBOb3JtYWwuCisg
ICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gJm1fcGFyYW1ldGVy
c1syXTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRv
clJlc3VsdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBk
c3QgPT0gdmFsdWUpCisgICAgICAgIHJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRO
ZXdPYmplY3QocmVzdWx0LmdldCgpKTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS5kb25lLCBlbWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9u
ZSkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChy
ZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQorewor
ICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGUpKSk7CisgICAgZW1pdERpcmVjdFB1dEJ5SWQo
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUsIGNvbXBsZXRlZFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAg
IFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwp
Cit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFz
dCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGluc3Ry
dWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5u
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOworCisgICAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBqdW1w
VGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBXZSdy
ZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4g
Zml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIg
cmVmZXJlbmNlcworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5p
c0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQxOTFmOTlmNWYwOWE3
Y2U0NjY5N2E3YjkwNDkwZGQ5NDlhNDdhYmEuLmM0NjM2YjdkMDI3ODNhNjZlN2EzYjVkYTc2Njk4
NjJlOGY1MGJjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI5Nyw2ICsyOTcsOCBAQAogCiAgICAgICAg
IFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0K
IAorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJs
ZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyByZXR1cm5lZCBieQogICAgICAgICAvLyBu
ZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50aW5n
OiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAgaXMgY29uc2lk
ZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBAIC02NDIsMTIgKzY0NCwyMCBAQAogICAg
ICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBl
KTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxM
YWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1p
biwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJl
bCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lzdGVySUQqLCBSZWdpc3RlcklE
KiwgYm9vbCk7CisgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwp
OworCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlw
ZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1f
c2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hv
b2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogCkBAIC04MDIsNiArODEyLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0
U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVn
aXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVy
IHsgbnVsbHB0ciB9OwpAQCAtODI1LDYgKzgzNiw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJ
bmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5
Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+
PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxl
VHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZh
cmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAg
ICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
ODczZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uNDkyNzA5ZjFiYTYxM2Ri
MDkwNjdiNzA3ZjZjYTBhYWM5MzQyZmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3Bl
LmgiCkBAIC0yNTgzLDEzICsyNTg0LDI3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9y
LmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdp
c3RlciA9IG51bGxwdHI7CisgICAgaWYgKG1fdmFsdWUpIHsKKyAgICAgICAgaWYgKGdlbmVyYXRv
ci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fdmFsdWUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0
Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisK
KyAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkKKyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5ld0l0ZXJh
dG9yUmVzdWx0KG51bGxwdHIsIHJldHVyblJlZ2lzdGVyLmdldCgpLCB0cnVlKTsKKwogICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAgICAgICByZXR1
cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQb3BTY29wZXMo
Z2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgMCk7CiAgICAgfQogCisgICAgaWYgKGdlbmVyYXRv
ci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAg
IGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworCiAgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1
cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRy
b2xGbG93KGVuZE9mZnNldCgpKTsgCkBAIC0yOTY2LDI2ICsyOTgxLDc3IEBAIHZvaWQgRnVuY3Rp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0
T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1l
LCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgp
KTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlz
LT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKyAg
ICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2lu
Z2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChz
aW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVu
dE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNp
bmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRl
bWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7Cisg
ICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUq
PihleHByKTsKIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVu
ZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgotICAgIGlmIChzaW5n
bGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAgICAgU3Rh
dGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUq
PihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Ci0gICAgICAgIGlmIChsYXN0U3Rh
dGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0g
ICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0
ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV4
dC5nZXQoKSwgZnVuY0V4cHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQo
Z2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclN0YXRlOjpJbml0aWFsKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2Ug
bXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0gICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsg
Ly8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBp
dCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRP
ZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExh
YmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
dHJ5U3RhcnRMYWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBnZW5lcmF0
b3IucHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50
c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgICAg
IFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXAoZG9uZS5nZXQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRj
aEhlcmUgPSBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvci5uZXdMYWJlbCgpLmdldCgpKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVS
ZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLnBv
cFRyeUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3du
VmFsdWVSZWdpc3Rlci5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhl
c2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9y
UmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgp
KSwgdHJ1ZSkpOworICAgICAgICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0
ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKwor
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAg
Ly8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24g
Y29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQg
JiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5v
ZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xl
U3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1l
bnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0
ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJl
dHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1
cm5Ob2RlKSB7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0
cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
MCwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBu
b3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90
IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZz
ZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgfQogfQogCkBAIC0zMDEzLDYgKzMwNzksMTggQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QK
IAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBpZiAoIWRlbGVnYXRlKCkp
IHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlm
IChhcmd1bWVudCgpKSB7CisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgdmFsdWUuZ2V0KCkpOworICAgIH0KICAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0
IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxl
bWVudCBpdC4KICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgi
Tm90IGltcGxlbWVudGVkIHlldC4iKSk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGNkNjg2YjcyYWRkNGI0
OGQ5YTYzNmMzNGZmMDlhYmZlYmQ4NDg1ZWUuLmRhY2JkZDgwMDI5ODQyODQxNmVlMTA2M2YzM2Rm
NWNiNGQzYzMzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxMyw2ICsyMTMs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVf
T1Aob3Bfc2F2ZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5F
X09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGl2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZTk2ODI5MmFiNzAy
NGE4YzJhZmVhZmZkMGZlNDU5MmNjODUzNjQ3MC4uYzZkNjY5ZTFkNzk2OTU4MTUxN2EzYmFmMjNm
NmI0NzNlNTI3YzMxZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDgg
QEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYzFiYjc0M2ZjYjdlMmNkZmIwYTJkYzdkMWQ4ZDM5NDk3
Zjg2MjBjOC4uOWMzYjcwZmY4ODYwODQ4YmFmNWUzMjczYzIzNDZjMGNlNGU4NGZiMyAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMzk5LDYgKzEzOTksMTgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX3NhdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODQ5
YjJkNzUzMzIwMzFhMGU2Yzc0ODg1MTExMjIwZGIyYTdkMDlhNC4uZmE5ZTAxM2IxMTFlNWY3ZDUy
OGM0ZWM0NDhjMWZmYjc0MGIwNmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTU3Myw2ICsxNTczLDE4IEBAIF9s
bGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgyKQor
CisKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdj
ODVhYzBjYjgzODc1MjQzODIyZDFiZDAxM2EzZjc5M2NlN2Q5YTkuLjYyMTc5ODlmNWY5NTBjNmJh
MTA3MWRiMDdkNzdhYTQ5MWZjZmYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC0zNjMsMTIgKzM2MywxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAg
ICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29u
dGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7
CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5T
dHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fy
cm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1
YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5Nzhl
YmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9y
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
Q29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlv
bikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5k
Q29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpz
ZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xv
c2VkVgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0
Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGNkZTQ5YTliNmE2
MDQ1Njk4ZWJlYmQ0ZDA5YTdlY2IzYWU5MmZjMzQuLjk0YzBkZDBlODIwZTQ4ODUzOTU1YTQxMzll
ZDUyNTU1ZjZiYzQzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4
MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
biwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApA
QCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENv
bnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcgKzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQg
OiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVu
c2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM3NGJjYjJjYjM1YjA1NDdiYTVkMzlmNDUxMzk1Mzcx
Nzk0M2Y0MWQuLmRmZWZiM2JiNWQwNTI4M2FlYjNkNGRmYzk4YzRmNDNmNTg5ZjMxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0Nyw3ICsyNDcsMTAgQEAK
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CisgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAg
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhj
b250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjcx
LDggKzI3NCwxMiBAQAogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVu
Y3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAg
ICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9k
ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7CkBAIC00NTYsNiArNDYzLDQ1IEBACiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOworCisgICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0
b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50
IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTs7CisgICAgaW5mby5zdGFydE9m
ZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKKyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgp
OworICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSAzOyAvLyBzdGF0ZSwgdmFsdWUsIHR5cGUKKwor
ICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNr
ZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhl
ci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJh
dG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdl
bmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWls
ZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGlu
Zm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0
Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVt
ZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9u
RXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5h
cHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4g
c291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50
aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewog
ICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3VtZW50ZWQgaGVyZToKQEAgLTE1NTQsMTMgKzE2MDAs
MTIgQEAKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAo
IWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE1NzIsNyArMTYxNyw3IEBACiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNv
dXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhp
cyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIp
OwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29u
c3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAt
MTU4OCw2ICsxNjMzLDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVy
YXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToK
KyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlv
biI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTY2Niw2ICsx
NzEzLDMyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0
YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwor
ICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0
YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIo
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1
dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRp
b24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwor
ICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAw
KTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigm
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAg
ICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZh
dGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2Rl
IG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE3NzYs
MTIgKzE4NDksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0
IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAg
ICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZv
LmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFy
dExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9k
eUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJp
Y3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2Rl
LCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1
Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJvZHlU
eXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAgICBm
dW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7
CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVW
YXJpYWJsZUluZm8pOwpAQCAtMTc5NSw3ICsxODY2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9sZXhl
ci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0
aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAg
ICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9
IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE4
MTcsMTQgKzE4ODgsMjQgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBs
YXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7
Ci0gICAgCi0gICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0
LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25C
b2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8g
cGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VG
dW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1
Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwg
bW9kZSk7CisgICAgfTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5
U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNl
dFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAg
ICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisgICAg
ICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZh
cmlhYmxlSW5mbyk7CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVy
Zm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3Rh
dGUpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRo
ZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250
ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNl
dCgpKTsKICAgICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5m
by5uYW1lKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMg
PT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICIn
IGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9u
SW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZh
bGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xODkyLDcgKzE5
NzMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBh
cnNlTW9kZSBtb2RlKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAg
ICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0
aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1
bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7
CkBAIC0yMDQzLDcgKzIxMjQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlm
IChpc0dlbmVyYXRvcikgewogICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU7CisgICAgICAgICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdl
bmVyYXRvciBuYW1lZCAncHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5u
b3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAg
ICB9CkBAIC0yOTg5LDcgKzMwNzAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5h
cnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3Rh
cnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0g
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRo
b2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjQyLDcgKzMzMjMsNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikK
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1l
KFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0
aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJD
YW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGUyMTNlMDcyZmI4MGU3NDhmODU2MjVhNjczOGNkMTdl
Y2ExNmYwOTIuLjU4NWY4YzQ3YjQxYzI2MGQzY2FlMGFiM2MwN2RmMGE2ZmYxOGIwMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQzLDYgKzI0Myw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigp
OwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTExMTMsNiArMTExNCw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRz
TW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291
cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50
aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1l
bnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7
IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE3NSw2ICsxMTc3LDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29s
IHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VD
bGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88
VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4
Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNz
IFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRv
ck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAg
U2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9v
bCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dp
dGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4
Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAg
aW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
dHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDVkMzkzYTNkYTdlN2U1OWRiODZlNjNjZGJmYWRm
ZDk5NWE1MWU5YzkuLmRiZjY4ODE4YTU1MWZmNDVkMzI0OTNiZDNiNzVkODU0NDU1YmNhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODIs
NyArMTgyLDcgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsg
cmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJv
bm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJv
cGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rp
b25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50
IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVu
Y3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9k
ZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
UGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHBy
OyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50
IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNm
NjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uNjY0OGFhMDE4MDc0ZTliOGFk
MjBlZGY4OTQ4ZTg1MmYyNTUxMDJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8o
RXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAor
ICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAg
ICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMSBAQAog
ICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAg
bWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBt
YWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwK
IAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGM0ZjZjMjJjNzU0ODg5MTkwY2JmMTFiNDVhNDkx
NGJjYWY3OTk5MTEuLjIyYmMzOTVkNjNiNWU0YWNmMGVmYjBjODFjMmI4YTEyYzkyYjBkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JI
YW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02NDQsNiAr
NjQ1LDM0IEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiBzZXR1cEFy
aXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAgICAgRU5EKCk7CiB9CiAKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8vIE9ubHkgc2F2ZXMgdmFyaWFibGVz
IGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJzIGFyZSBp
bmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQu
IEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVz
IG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4o
KTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0
b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRv
cik7CisgICAgaWYgKGdlbmVyYXRvci5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIHNsb3QpKQorICAgICAgICBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHNsb3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICAoZXhlYy0+
cmVnaXN0ZXJzKCkgLSAxKSAtIGV4ZWMtPnRvcE9mRnJhbWUoKSArIDEpOworICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJ
ZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPnB1dERpcmVjdChleGVjLT52bSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNs
b3QpOworICAgIH0KKyAgICBmcmFtZS0+c2F2ZShleGVjKTsKKyAgICBFTkQoKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFs
dWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBmcmFtZS0+cmVz
dW1lKGV4ZWMpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjBiYTllOGRhMWUx
MzUwZWNlZWFjYzgxZDI3YmM4Y2EyYjM5ZGRkZC4uMjFkYmVhM2Y0YzdmNTZmZmFiNWFmNTA0NWYz
ODkxYTMyNjk5NDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1
bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlk
ZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLmQxNjE5OTg0MzM4YTkxYTJkMjg3NWM2YmRjZDNi
YzY2NzcyNGU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVu
bGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJj
ZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAg
IGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUt
PnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdh
MTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLjNmMjZhMTJkMmRiZmUzOGVmZTI1MGM5
ZjUwN2Q1ZWM4NjY3MTNmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUp
OyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZh
bENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0
aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFS
RV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNl
OwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2Rl
KTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRh
YmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBA
IC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmls
aXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUo
KTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkZWJhYzk1NjIzZjFmYzU4MGFjY2Ux
YzE1N2QwNDMzNzM2YjdhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCB2YXJpYWJsZXNTaXplKQorICAgIDogQmFz
ZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3ZhcmlhYmxl
c1NpemUodmFyaWFibGVzU2l6ZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdlbmVy
YXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+bV92YXJp
YWJsZXNTaXplKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3Qg
bnVtYmVyT2ZWYXJpYWJsZXMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAg
ICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxs
PEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyhudW1i
ZXJPZlZhcmlhYmxlcykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZWYXJp
YWJsZXMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFJlZ2lzdGVyKiByZWcgPSBleGVjLT5yZWdpc3RlcnMoKSAtIDE7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAgICAgdmFyaWFibGVBdChp
KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVnWy1pXS5qc1ZhbHVlKCkpOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFJlZ2lzdGVyKiBy
ZWcgPSBleGVjLT5yZWdpc3RlcnMoKSAtIDE7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAgICAgcmVnWy1pXSA9IHZhcmlhYmxlQXQoaSkuZ2V0
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcxOGEzNTQxMGEzNWIyZjU1N2Nj
NTY0MTUyNTIzMWIxMWIxYmFhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJh
bWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisj
aWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQg
Y2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZWYXJpYWJsZXMp
OworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogdmFyaWFibGVzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlZhcmlhYmxlcygpKTsKKyAgICB9CisK
KyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkK
KyAgICB7CisgICAgICAgIHJldHVybiB2YXJpYWJsZXMoKVtpbmRleF07CisgICAgfQorCisgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZlZhcmlhYmxlcygpCisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihz
aXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mVmFyaWFibGUoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dE9mVmFyaWFibGVzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXModW5z
aWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZW
YXJpYWJsZXMoKSArIG51bWJlck9mVmFyaWFibGVzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUo
RXhlY1N0YXRlKik7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKik7CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgdmFyaWFibGVzU2l6ZSk7CisKKyAgICBzaXpl
X3QgbV92YXJpYWJsZXNTaXplOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
R2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YTU3MzI5NjIzZTQ0NmZiNTgzNTQwYjkyYTkzNzJlZWUwYmNhMGY2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOwor
Citjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sK
K30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkdlbmVyYXRvckZ1bmN0aW9u
Iik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0
cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVt
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKK30KKworQ2FsbFR5cGUg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisK
K0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJi
NDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKwor
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmUy
NDFhZTA4NTYzMDlhNmU0NTQ3Y2MxZjM1MmU4YzgxYmY3MGZmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9Owor
CitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDky
Njk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZt
LmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3
MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9y
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJh
dG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBl
KSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdl
bmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18
RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLwor
Cit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBS
ZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKwor
Ym9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4
ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNk
ZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5
cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhl
YXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZh
dGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJh
dG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJk
ODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rp
b246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7
Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAg
ICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUs
IERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0
LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0
dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzNiYmIzYTllMGEyM2IzZDM2YTJkMjMy
YzdmYjU3Yzg2NWIxMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0
b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2Jh
bE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVy
YXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJh
dG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0s
IGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVj
dHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlX
cml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1bmN0
aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1
bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdl
bmVyYXRvckZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmFjNWU0YjkwNzBmY2M1ZTAwZjYxYmJjZWY2YmYxMjkzYTVhNzAyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRv
ckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7
CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3Mg
REZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsK
KyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVu
Y3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsK
KyAgICAgICAgQ29tcGxldGVkLAorICAgICAgICBFeGVjdXRpbmcsCisgICAgICAgIEluaXRpYWwK
KyAgICB9OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3Rh
dGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0
eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1
bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1
bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29w
ZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
Y2JhNWFjMWFhMDU4YWMzOWVlNmU5NjI1MjVhNDdjYzg2OGIxMjg5MS4uN2YxYTkyMzcyYjgzMmM0
NDI2ZjBkMWRkYWI1NzQ4YjJiM2MyODA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUg
IkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xs
YXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJ
VkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9U
WVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkp
KTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZ
UEUKIApAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRp
dmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7
CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAg
bV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90
b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9y
KSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MjgsNiArNDM4LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29u
c3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NDksNiAr
ODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2
MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4
MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29k
ZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNs
YXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxB
cnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhw
UHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQ
cm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdy
aXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYg
KzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVn
RXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3Rv
dHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0
cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUw
Niw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNh
YmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhl
Y3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURh
dGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBnZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywg
RXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJv
bWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZl
cnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2OGQyYjgxZTYuLjU1Nzdh
ODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CisgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRl
eCAyODVjNWY5OGY0OTUzOTI4ZTY3NDMzZjhjMjY2YTliYmExNTBmN2E3Li42MjlmMDBkZTZiYTE1
MTFmMzJjNzMyZDNjNTVhNTBmODEyOGJjNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCkBAIC03MTUsNyArNzE1LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X2lzX3N1YmNsYXNz
YWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmF0b3JfaW5zdGFu
Y2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03MjMsNyAr
NzIzLDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faXRl
cmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlf
c3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJhdG9yX2luc3RhbmNl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3Rh
dGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25faW5zdGFuY2VzX29mX2l0ZXJhYmxl
cy5qcwpAQCAtNzQ5LDcgKzc0OSw3IEBACiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX25lc3Rl
ZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5n
X3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19p
dGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJp
bmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc1OSw3ICs3NTks
NyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93Lmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9p
bnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMSwzMSArODAxLDMxIEBACiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0cnVjdG9yLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQ
cm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19m
dW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhh
bmRfZ2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3Jz
X2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25fZXhw
cmVzc2lvbnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dl
bmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2Rz
X2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcl9t
ZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hcnJheXMuanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3Ry
aW5ncy5qcwpAQCAtODQ3LDcgKzg0Nyw3IEBACiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfc3RyaW5ncy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01hcF9pdGVyYXRvcl9jbG9zaW5nLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBfTWFwW1N5bWJvbC5zcGVjaWVz
XS5qcwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0
b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5jdGlvbl9jYWxscy5qcwogICBjbWQ6
IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVy
YXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5l
cmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXNfaW5fYXJyYXlz
LmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
OGYzZDg2MmIzZDljYzE0ZThiYTU2NWVjZmIwOTE1MjEwMzJiNDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcg
RnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVy
YXRvckZ1bmN0aW9uLCAnZnVuY3Rpb24nKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLl9f
cHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBl
LmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265583</attachid>
            <date>2015-11-16 04:47:34 -0800</date>
            <delta_ts>2015-11-17 10:47:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151116214724.patch</filename>
            <type>text/plain</type>
            <size>165354</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li4xYjZlODcwYWE1OGRiNmE2
ZWQxMTU2Y2JlMjUyZjQ3NzBmMTA3MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODkgQEAKKzIwMTUtMTEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUlu
Zm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAo
SlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAg
ICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1Q
YXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2Fj
aGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZy
b21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZhcmlhYmxl
cyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2YXJpYWJsZUF0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9y
Lm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9f
Y3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5l
eHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3Jl
YXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAg
ICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFi
bGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAg
ICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJh
YmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAxNS0xMS0xMSAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBB
aXI6IHdlIGhhdmUgbW9yZSByZWdpc3RlciB0aGFuIHdoYXQgdGhlIGFsbG9jYXRvciBiZWxpZXZl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFkMGI0YmE5ZWY2MGE4MGM1
YTYxNDNjOTg1NWJmNjdlOGJmMDNjMTMuLmRlYzE4NTRkY2IwYzcyN2M5NThlNjY5YTdlNWQ5YmRh
NjUwMWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Miw2ICs1
NjIsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNw
cApAQCAtNjAxLDYgKzYwNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVj
b3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5j
cHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM2LDYgKzc0MSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAg
ICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAt
MTE5NCw2ICsxMjAwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5q
cworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBl
LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZl
YWVhYjJmOTM5NGM2OGJkYzBhMy4uZjhhZDNiNmQ5OWY1Mzc4NGE1N2E1ZGJjZWRhNmQyZjVlNDg3
ZDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBk
dW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdU
Rjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFt
ZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVu
Y3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTRhYjUwZWI5ZmNkN2Y2
ZDViMjYzMGRlZDU5ZmI1NTdiMjYyODAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitm
dW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0
aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMu
QGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFs
dWUsIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJh
dG9yVGhpcywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2VwdGlvbiwgMik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5k
ZXggYmQyOWM1NWEzNzM1NGRlM2ViYWEyOTUzOGFiMTcxYzIwOWYxMzMxMi4uYWQzODlhYWM0NWEz
NjVmNTY2YTc0YmY2ODY2ZjQ5OWEwOGE1YWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTI4LDYgKzEyOCw4IEBACiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJs
ZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Nh
dmUiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxl
bmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDMxNTExZTdjMWQxZjVlOTczOTdjZDJi
NGNmNDliYThiNGMzOGI0MGUuLjg3NDc3OTZiMjZmODhkOGE3ZjY3NWQyM2Q0YjJiYjNmYjI1NDgy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oCkBAIC03MCw3ICs3MCw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICBjYXNlIG9wX2plcV9udWxsOgogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ug
b3BfZGVjOgotICAgIGNhc2Ugb3BfaW5jOiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBv
cF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNTMsNiArMjU1LDggQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoK
ICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAg
Y2FzZSBvcF9yZXN1bWU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoK
ICAgICBjYXNlIG9wX3JldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggMThmZmEwNzBlZmNjN2U2OWU4NjdkY2VkY2M1Yzc4NTk3MTgwZTQ4Zi4u
ZjQ4NTYyYTBiZmFkNjY0MGM5NGZhN2Q0MWJlMDdhZmE4MzUyM2EyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0OTEsNiArMTQ5MSwxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewor
ICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJl
c3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2VuZXJh
dG9yKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0
Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjdjMzExNGE5ODc5NmU0YWI4MDQ2
YWRjMDhkYjY0MWRkMjliNzhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwxOSArMjYsMjEgQEAKICNpZm5kZWYgRXhlY3V0
YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxlSW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0
b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0Fj
dGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3Ry
dWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVl
ZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0Nv
bnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQog
ICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUo
aXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQog
ICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAg
ICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rvcktp
bmQpKTsKICAgICB9CkBAIC00OCw4ICs1MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3Rvcjsg
fQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0K
IAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4
ICs2MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmlj
dE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlz
IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVl
YTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uZTFmMjA4ZGU4YzcyYjhhYzM4ODA1NzQxZjE0MGE2ZTA5
M2Q4Y2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCArNjUsMTEgQEAKICAgICAsIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWls
dGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlu
Zm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpcygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAg
ICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBt
X3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwg
bV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5k
ZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uMjJhNzMyNTExMDFj
MGIzODVmOTJlYmQzOTZlYjVjYjFhOWIyNzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNs
dWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgog
I2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgpAQCAtMTE2LDcgKzExNyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVy
biBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2
ICsyMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0
aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
KyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CiAKICAgICB2b2lkIHNocmlu
a1RvRml0KCkKICAgICB7CkBAIC0zODcsMTIgKzM4OSwxMyBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlv
biA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKIAogICAgIHVuc2lnbmVk
IG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVG
ZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5
ZDU5YjYuLjJiZjZhODIwOTFiMGUxY2NmN2IyYTRiYmRhOTdiNmY0MmU2YzA2MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBh
cnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rp
b24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDog
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1
bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUo
JnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVk
c0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1v
ZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVu
Y3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlv
bigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRv
clRoaXMoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygp
KSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZh
cmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZl
cnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0
cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUt
PmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1
bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdl
bmVyYXRvclRoaXMpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNj
b3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcg
KzE4MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rp
b24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewog
ICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoK
QEAgLTE5Niw3ICsxOTYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVy
cm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5
YzFmOC4uNWY1MGExODYzMmU2Yjc3N2ExYzIxZTkzM2NlNjI5MGI3OGM3NjlmOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RB
YmlsaXR5LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKQEAgLTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVu
dmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRo
aXMgZ2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIp
CiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0t
PmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1v
dmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0
QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVj
dHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxp
bmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZt
KTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTgyLDYgKzgzLDcgQEAgY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29u
dGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2Vu
ZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1f
Z2VuZXJhdG9yVGhpcyk7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3Rh
cnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1
bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk3LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVy
cm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVj
U3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1
LDEwICsxMjcsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0QWJp
bGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0
ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJv
bm1lbnQmKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1OCw3
ICsxNTksNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0QWJpbGl0eTogMTsKICAgICB1bnNp
Z25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUg
OiAxOyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7
CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5ZWU2MTExY2Mz
ZDA3ZjYzNDRjOTVlMDhmMmRlZTlkZmM4MDY1NGMyLi45MmY0MTAxOTZhZjIyYmM2MWZjNjYyZmU5
NmJiMThlMWMxOWMxMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKQEAgLTE5OCw3
ICsxOTksMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICAvLyBvcF93aWxsX2NhbGwgLyBvcF9kaWRfY2FsbCBwYWlycyBiZWZvcmUgYW5kIGFmdGVyIGEg
Y2FsbCwgd2hpY2ggYXJlIG5vdAogICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3
ZSBoYXZlIG5vIHdheSBvZiBlbWl0dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQotICAgICwgbV9pblRhaWxQb3Np
dGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAm
JiAhbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKQorICAgIC8vCisgICAgLy8gSW4gYSBjb250ZXh0
IG9mIGEgZ2VuZXJhdG9yLCBhbGwgdGhlIGNhbGxzIGNhbm5vdCBiZSB0YWlsIGNhbGxzIGJlY2F1
c2UgYWxsIHRoZSByZXN1bHRzIHdpbGwgYmUgd3JhcHBlZCBhcyBhbiBpdGVyYXRvciByZXN1bHQu
CisgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
aXNpbnRhaWxwb3NpdGlvbgorICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWls
Q2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRFbWl0UHJvZmls
ZUhvb2tzICYmIHBhcnNlTW9kZSgpICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkK
IHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRS
ZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAtMjUxLDI5
ICsyNTUsNzUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0
SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKLSAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNj
b3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkp
IHsKLSAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5h
bWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0g
ICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKS5pbXBsKCkpOwotICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5h
bWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKLSAgICAgICAgZW1pdFB1c2hGdW5j
dGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBt
YXJrQXNDYXB0dXJlZCk7Ci0gICAgfQotICAgIAotICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9m
VGhlVGhpbmdzKSB7Ci0gICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRW
YXIoKTsKLSAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBp
ZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZl
Ci0gICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhv
bGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25tZW50IGJlY2F1c2UKLSAgICAg
ICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBh
cmFtZXRlciBlbnZpcm9ubWVudC4KLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQ
YXJhbWV0ZXJWYWx1ZXMoKSkKLSAgICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJv
bm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKLSAgICB9CiAKLSAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQg
bWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycwotICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBh
cmUgbm90ZWQuCi0gICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsg
Ly8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0gICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgo
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBj
cmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFz
ZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKworICAgICAgICAvLyBBbGwgdGhlIHBhcmFtZXRl
cnMgZm9yIGEgZ2VuZXJhdG9yIHNob3VsZCBubyBiZWNvbWUgaGVhcCB2YXJpYWJsZS4gU28gd2Ug
Y2FuIGluaXRpYWxpemUgdGhlbSBoZXJlLgorICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyBhcmUg
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkuCisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgp
ICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rl
ci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisKKyAgICAgICAgbV9nZW5l
cmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJl
Z2lzdGVyLCAmbV9wYXJhbWV0ZXJzWzFdKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvclRoaXMoKSA9
PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgm
bV90aGlzUmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2Vk
IG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBn
ZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgp
YCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1
bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8v
IEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBg
bmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5lcmF0b3Io
Z2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBDb21wbGV0ZWQgc3RhdGUu
CisgICAgICAgIC8vIEhlcmUgaXMgdGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uIHByb2xvZ3Vl
LiBTbyB3ZSBjYW5ub3QgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJl
c3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChhZGRWYXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICBlbWl0UmV0dXJuKGl0ZXJhdG9yUmVzdWx0
LmdldCgpKTsKKworICAgICAgICAvLyBFeGVjdXRpbmcgc3RhdGUuCisgICAgICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiR2VuZXJhdG9y
IGlzIGV4ZWN1dGluZyIpOworCisgICAgICAgIC8vIEluaXRpYWwgc3RhdGUuCisgICAgICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIo
KTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQg
aWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2
ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUg
dG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQor
ICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQg
aXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVy
cy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6
ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5j
dGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAg
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKS5pbXBsKCkpOworICAgICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlz
RHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CisgICAgICAgICAgICBlbWl0
UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVn
aXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaG91bGRD
YXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVu
dFJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhl
ICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhw
cmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4
cHJlc3Npb25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVu
dmlyb25tZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhl
ICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisgICAgICAg
ICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQorICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25z
dGFudEluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBi
bG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhh
dCBwYXJhbWV0ZXJzCisgICAgICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQu
CisgICAgICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgICAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQogICAgIAogICAgIC8vIEZpZ3VyZSBv
dXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wg
Y2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwpAQCAtNDYwLDcgKzUxMCwzNiBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1f
bmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJv
d0Z1bmN0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2Rl
LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRM
b2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTog
eworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGlmIChp
c0NvbnN0cnVjdG9yKCkpIHsKKyAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0
ZXIsICZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgICAgICAgICAgICAgIGVtaXRNb3ZlRW1w
dHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0TW92
ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gRXZlbiBpZiBpdCdzIG5vdCBjYWxsZWQgd2l0aCBgbmV3YCwgYSBn
ZW5lcmF0b3IgZnVuY3Rpb24gcHJvZHVjZXMgYSBnZW5lcmF0b3Igd2l0aCBgY3JlYXRlX3RoaXNg
LgorICAgICAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVn
aXN0ZXIpOworICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmls
bGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
ZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBl
bWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAg
LTQ3Niw5ICs1NTUsOCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0g
ICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVl
ZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRT
ZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTIyOTQsMTIgKzIzNzIsMTIg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCog
Y29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlz
KG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0
eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NTMsMjAgKzI1MzEsNiBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVu
dE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFs
KGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24p
KSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25J
bnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNv
ZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpA
QCAtMjUwMSw3ICsyNTY1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXgKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0
ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsKICAgICBib29sIGlzQ2xhc3ND
b25zdHJ1Y3RvciA9IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JL
aW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIGlmIChpc0NsYXNzQ29uc3RydWN0
b3IpCisgICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvciB8fCBnZW5lcmF0b3JUaGlzKCkgPT0gR2Vu
ZXJhdG9yVGhpczo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlzUmVnaXN0ZXIoKSk7
CiAgICAgCiAgICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKQEAgLTI1MjIsNiArMjU4NiwxNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVu
Y3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25E
ZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxs
QXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAg
cmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NDgsNiArMzgy
MiwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJh
dG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFy
Z3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwg
bmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZv
dCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7
CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBl
SXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAg
ICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsK
K30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJ
RCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAg
IFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODEzLDQgKzM5MDUsMjIxIEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmludmFsaWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChS
ZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyCiAgICAgfQogfQogCitSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3Vs
dChudWxscHRyLCBhcmd1bWVudCwgZmFsc2UpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1h
bExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0g
bmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKDApKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3Jt
YWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigy
KSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblJlZ2lzdGVyID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvclZh
bHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7CisgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsK
KyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJl
dHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdp
c3RlcigpLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6
OkNvbXBsZXRlZCkpOworICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsK
KyAgICB9CisKKyAgICAvLyBUaHJvdy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7
CisgICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3Jt
YWwuCisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yVmFsdWVSZWdpc3RlcigpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91cyA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHByZXZpb3VzLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9s
KTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50
KTsKKyAgICAgICAgICAgIGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVs
PiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxM
YWJlbD4gbmV4dEVsZW1lbnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbWl0TG9hZCh2YWx1
ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5leHRFbGVt
ZW50LmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAg
ICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXRO
ZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCB2YWx1ZS5nZXQoKSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAg
IGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1p
dEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jl
c3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNo
YW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JT
dGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1h
bExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5
T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKSk7CisgICAgICAgICAgICAgICAg
ZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCks
IGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cigyKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwg
dGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVy
blNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybi4KKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJh
dG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3Iu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0
dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1
cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0
KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwo
cmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVs
bHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdp
c3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3Blcyhz
Y29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJl
dHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1
bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVs
KHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UG9w
U2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93
LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2RO
b3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRo
b2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRo
cm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVND
SUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlM
aXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhv
ZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQo
KSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQu
Z2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgZG9uZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZHN0OworICAgIGlmICghZHN0IHx8IGRzdCA9PSB2YWx1ZSkK
KyAgICAgICAgcmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5ld09iamVjdChyZXN1
bHQuZ2V0KCkpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLmRvbmUsIGVtaXRMb2FkKG51bGxwdHIsIGpzQm9vbGVhbihkb25lKSksIFByb3BlcnR5
Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLnZhbHVlLCB2YWx1ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJ
RCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3Rlcigp
LCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3Rh
dGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJl
bCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0
KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3Rl
cklEKiBzdGF0ZSkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHdlIGNhbm5vdCBlbWl0IGBi
cmVha2AuCisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0
ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVm
YXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4
dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisK
KyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClb
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKwor
ICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRk
U3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5m
by5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUu
YnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7
CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQg
aGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUg
ImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxh
YmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAz
KSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkMTkx
Zjk5ZjVmMDlhN2NlNDY2OTdhN2I5MDQ5MGRkOTQ5YTQ3YWJhLi4xY2U5ZjY2ZWJmNzY1Mzc1ZWU3
YTRmYTgzNGNjMTI0MThjZTFmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3IEBACiAj
ZGVmaW5lIEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsyODEs
NyBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQo
KTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3Ig
Z2VuZXJhdGUoKTsKIApAQCAtMjk3LDYgKzI5OSw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCog
c2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3Rl
cjsgfQorCiAgICAgICAgIC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSBy
ZWdpc3Rlci4gUmVnaXN0ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSBy
ZXF1aXJlIGEgbW9kaWZpZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAg
ICAvLyByZWdpc3RlciB3aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFi
bGUiLCBtZWFuaW5nIHRoYXQKQEAgLTQ5OSwxMCArNTAzLDggQEAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBs
ZW5ndGgpOyAvLyBzdG9wcyBhdCBmaXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCog
ZHN0LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwg
Q29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAgdm9pZCBl
bWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNv
ZGVJRCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYsNiArNTk4
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JO
ZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgYm9vbCBlbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYpOwpAQCAtNjQyLDEyICs2NDUsMjUg
QEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dp
dGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBS
ZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50
MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TmV3SXRlcmF0b3JSZXN1bHQoUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBib29sKTsK
KyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQg
ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAgQ29kZVR5cGUg
Y29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBz
aG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2NSw2ICs2ODEs
NyBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQdXNoRnVu
Y3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1v
bihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2Rl
KiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9s
VGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTc1NCw4ICs3NzEsMTEgQEAKICAgICAgICAgICAg
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bkNvbnN0cnVjdDsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUg
fHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCiAgICAgICAgICAgICAgICAg
Y29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAg
ICAgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6Ok5v
bkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRv
clRoaXMgPSBHZW5lcmF0b3JUaGlzOjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgp
LCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVu
Y3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlv
biwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgdmFyaWFibGVzVW5kZXJURFopOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVu
dmlyb25tZW50Jik7CkBAIC04MDIsNiArODIyLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90
b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRz
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJh
dG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1
ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVj
dFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI1LDYgKzg0Niw3IEBACiAgICAgICAgIFZlY3RvcjxT
d2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0
b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZh
cmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5j
dGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0
YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwog
ICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggODczZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uOTNiNmEzMWQ4
MjRjNmNjZDY1OGVkNjlhYzE5YzM5ZjhjZGY0YWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJl
bFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAog
UmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFRE
WkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRv
ci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJh
dG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMjU4MywxMyArMjU4NCwyNyBA
QCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVy
blJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRz
dCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBudWxscHRyOworICAgIGlmICht
X3ZhbHVlKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1f
dmFsdWUpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIHJldHVyblJl
Z2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCByZXR1cm5S
ZWdpc3Rlci5nZXQoKSwgdHJ1ZSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJl
dHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0lu
RmluYWxseUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UG9wU2NvcGVzKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCks
IDApOwogICAgIH0KIAorICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zm
c2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhlbmRPZmZzZXQoKSk7IApAQCAt
Mjk2NiwyNiArMjk4MSw3OSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRP
ZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVt
ZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAg
UmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VN
b2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
OiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmds
ZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0
ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBF
eHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNT
RVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNF
eHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAvLyBDaGVjayBm
b3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBv
ZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRl
bWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0
YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRl
bWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0
YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwg
bmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
U3RhdGU6OkluaXRpYWwpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21h
dGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8g
bm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5v
dCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQo
KSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0
T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0
cnlTdGFydExhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRv
ci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAg
UmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNo
SGVyZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJl
Z2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9w
VHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25W
YWx1ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVz
aXplZEZpbmFsbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRl
OjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb25SZWdp
c3Rlci5nZXQoKSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TmV3SXRlcmF0b3JS
ZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkp
LCB0cnVlKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRl
bWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisg
ICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRl
bWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAv
LyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBj
b21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAm
JiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVT
dGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVu
dEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRl
bWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0
dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVy
bk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5v
dCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3Qg
aW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNl
dCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwODEsMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QK
IAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRv
IGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0
ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJn
dW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxw
dHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgp
LCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGNkNjg2YjcyYWRkNGI0OGQ5YTYzNmMzNGZm
MDlhYmZlYmQ4NDg1ZWUuLmRhY2JkZDgwMDI5ODQyODQxNmVlMTA2M2YzM2RmNWNiNGQzYzMzMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxMyw2ICsyMTMsOCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVf
b3V0X29mX2JhbmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQog
ICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVn
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGl2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZk
MGZlNDU5MmNjODUzNjQ3MC4uYzZkNjY5ZTFkNzk2OTU4MTUxN2EzYmFmMjNmNmI0NzNlNTI3YzMx
ZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAg
dm9pZCBlbWl0X29wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggYzFiYjc0M2ZjYjdlMmNkZmIwYTJkYzdkMWQ4ZDM5NDk3Zjg2MjBjOC4uOWMz
YjcwZmY4ODYwODQ4YmFmNWUzMjczYzIzNDZjMGNlNGU4NGZiMyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMzk5LDYgKzEzOTksMTggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX3NhdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfcmVzdW1lKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODQ5YjJkNzUzMzIwMzFh
MGU2Yzc0ODg1MTExMjIwZGIyYTdkMDlhNC4uZmE5ZTAxM2IxMTFlNWY3ZDUyOGM0ZWM0NDhjMWZm
Yjc0MGIwNmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTU3Myw2ICsxNTczLDE4IEBAIF9sbGludF9vcF9hc3Nl
cnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgyKQorCisKIF9sbGludF9v
cF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDdjODVhYzBjYjgzODc1
MjQzODIyZDFiZDAxM2EzZjc5M2NlN2Q5YTkuLjg2ZWQ0OGViMGFmMDA4MmYwZjhhMzA5NGZmYTQ5
MWNlNmZiODNlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CkBAIC0zNDAsOSArMzQwLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBudWxscHRyLCAvKiBk
ZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWll
bGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3Vt
ZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9v
bCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVu
dCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9k
ZSogY29uc3RydWN0b3IsCkBAIC0zNjMsMTIgKzM2NSwxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsK
ICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0
Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAg
aW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBp
c0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAg
ICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5m
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2
N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5
NzhlYmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVj
dG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0g
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2Nh
dGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1f
ZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2Rl
OjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYg
Y2xvc2VkVgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3Ry
aWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lz
QXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBB
U1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGNkZTQ5YTli
NmE2MDQ1Njk4ZWJlYmQ0ZDA5YTdlY2IzYWU5MmZjMzQuLjFlODJjZDg3OGI4NmEwMTg3ZWFiZDRl
ZWE2YjM4Njc0Yjc0MmE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTE4MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBw
YXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBD
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAg
IApAQCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGlu
dCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcgKzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQ
YXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRl
eHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkyNyw3ICsxOTI1
LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNzRiY2IyY2IzNWIw
NTQ3YmE1ZDM5ZjQ1MTM5NTM3MTc5NDNmNDFkLi44MjgyZDNjODE5OGFkMzlmN2YyZDk3NDM5NWVi
MGI4NTAxZWZjM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yNDcsNyArMjQ3LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
biA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAg
ICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAg
ICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbklu
Zm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VG
dW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAg
ICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhh
c0Vycm9yKCkpIHsKQEAgLTI3MSw4ICsyNzQsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50
cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2Rl
KSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VF
bGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2Rl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENo
ZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0
TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtNDU2
LDYgKzQ2Myw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29u
dGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVtZW50
cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFy
dExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQgPSB0
b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0
YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24u
c3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87
CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwor
ICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7
OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2Vu
ZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3Bl
UmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVy
YXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0
KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwg
IkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29w
ZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8p
OworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEo
c3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4o
KSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpbmZvLnBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8u
ZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2Rh
dGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAg
ICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9j
YXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVu
dHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVk
KiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3Vt
ZW50ZWQgaGVyZToKQEAgLTE1NTQsMTMgKzE2MDAsMTIgQEAKICAgICBUcmVlQnVpbGRlciYgY29u
dGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1
bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBG
dW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0
aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCks
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NzIsNyArMTYxNyw3IEBACiAgICAgZWxz
ZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTU4OCw2ICsxNjMzLDggQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3Ig
ZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToK
ICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTY2Niw2ICsxNzEzLDM3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAg
IGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwor
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBn
ZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJp
bmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJp
dmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3IsIDApOworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7Cisg
ICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxv
Y2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3Rh
dGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRlcigm
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAgYXV0
byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Cisg
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDAp
OworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAg
IGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0
ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9u
U3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5l
cmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29u
dGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUg
bW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9u
SW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTc3Niwx
MiArMTg1NCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNv
dXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQg
LSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAg
ICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0
TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5
RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmlj
dE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUs
IGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVj
dG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5
cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1
bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsK
ICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZh
cmlhYmxlSW5mbyk7CkBAIC0xNzk1LDcgKzE4NzEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xleGVy
LT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rp
b25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAg
ICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0g
Y2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAtMTgx
NywxNCArMTg5MywyNCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxh
c3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsK
LSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQs
IHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJv
ZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0byBw
ZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJzZUZ1
bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVj
dG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBt
b2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlT
Y29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0
U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAg
IGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKyAgICAg
ICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJm
b3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0
ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhl
IGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0
KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZv
Lm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyArMTk3
OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAg
ICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRp
b24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVu
Y3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsK
QEAgLTIwNDMsNyArMjEyOSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYg
KGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2Vu
ZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5v
dCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAg
IH0KQEAgLTI3ODcsNiArMjg3Myw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRy
dWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJz
LCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQ
b3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1h
dGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgp
OwogICAgIG5leHQoKTsKQEAgLTI3OTQsMTMgKzI4ODEsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7
CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJv
b2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVu
dFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1l
bnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1l
bnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0
KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxl
Z2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50
LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRp
b24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yOTg5LDcgKzMw
NzcsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0
b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
IDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJz
ZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUs
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBt
ZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSks
ICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRo
b2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2Nh
dGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjQyLDcgKzMzMzAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYg
RU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJz
ZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgog
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVx
dWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBG
dW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rp
b24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihs
b2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CmluZGV4IGUyMTNlMDcyZmI4MGU3NDhmODU2MjVhNjczOGNkMTdlY2ExNmYwOTIuLjU4NWY4YzQ3
YjQxYzI2MGQzY2FlMGFiM2MwN2RmMGE2ZmYxOGIwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaApAQCAtMjQzLDYgKzI0Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewog
ICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgYnJl
YWs7CiAKQEAgLTExMTMsNiArMTExNCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0
ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUs
IHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBj
b25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExl
bmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBv
cnRlZCB9OwpAQCAtMTE3NSw2ICsxMTc3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9v
bCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcs
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVl
QnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNi
YzYyYjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEz
ZjU2OTI5MjFhMGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCkBAIC00Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7
CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBN
ZXRob2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29s
IGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9n
cmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCmluZGV4IDVkMzkzYTNkYTdlN2U1OWRiODZlNjNjZGJmYWRmZDk5NWE1MWU5YzkuLmRkMGEw
ZTA2MTZiM2EyOGFhNjA5ZDQ3ZmFlMmMxODY4MmI5ZWE0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNzksMTAgKzE3OSwxMCBAQCBjbGFz
cyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJl
c3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJu
IEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHBy
ZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVy
biBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBi
b29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVs
ZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNs
YXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFi
bGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlM
aXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0K
LSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJl
dHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNl
UGFyc2VNb2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5j
dGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0K
ICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNiMjVl
NGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi5iMzhiZjk1ZWQ5MDE1MTVmOWVhNGRl
Yjg2YmJhMTc2MDBjNTQwZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgog
ICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
ICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2Jh
bCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJp
YWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBlbXB0eVREWlZhcmlhYmxlcyk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRv
clRoaXM6Ok5vbkVtcHR5LCBlbXB0eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRh
YmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZt
LCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3Vy
Y2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUzNTVkODdhM2IzM2IxLi5kZTA3ZjFj
NTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1
bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZp
bml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCkBAIC0zMjksNiAr
MzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDMyQXJy
YXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAgICBtYWNybyhnZW5lcmF0b3IpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yU3RhdGUpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclZhbHVlKSBc
CisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvclJlc3VtZU1v
ZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGM0ZjZjMjJjNzU0ODg5MTkwY2JmMTFi
NDVhNDkxNGJjYWY3OTk5MTEuLjIyYmMzOTVkNjNiNWU0YWNmMGVmYjBjODFjMmI4YTEyYzkyYjBk
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
RXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02
NDQsNiArNjQ1LDM0IEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiBz
ZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAgICAgRU5EKCk7CiB9CiAK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8vIE9ubHkgc2F2ZXMgdmFy
aWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJz
IGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5j
bHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUg
dmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAg
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBH
ZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdl
bmVyYXRvcik7CisgICAgaWYgKGdlbmVyYXRvci5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIHNsb3QpKQorICAgICAg
ICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHNsb3QuZ2V0VmFsdWUoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICAo
ZXhlYy0+cmVnaXN0ZXJzKCkgLSAxKSAtIGV4ZWMtPnRvcE9mRnJhbWUoKSArIDEpOworICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6
UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPnB1dERpcmVjdChleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJh
bWUsIHNsb3QpOworICAgIH0KKyAgICBmcmFtZS0+c2F2ZShleGVjKTsKKyAgICBFTkQoKTsKK30K
KworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAg
IEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1l
KiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBmcmFt
ZS0+cmVzdW1lKGV4ZWMpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjBiYTll
OGRhMWUxMzUwZWNlZWFjYzgxZDI3YmM4Y2EyYjM5ZGRkZC4uMjFkYmVhM2Y0YzdmNTZmZmFiNWFm
NTA0NWYzODkxYTMyNjk5NDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxpbmUgdm9pZCBkZWNv
ZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3Vt
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3Bl
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJk
NTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLmQxNjE5OTg0MzM4YTkxYTJkMjg3NWM2
YmRjZDNiYzY2NzcyNGU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRh
YmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFi
bGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5t
X3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRhYmxl
LT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5l
KCksIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlm
YzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLmQ3Zjc0YTVhOTQ2Y2M3Y2U5
NzU0OThlNDEwZDI0NGJjMjcyODIwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFy
aWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygp
OyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01MDEsNyAr
NTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7
CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rp
b25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5j
dGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24o
KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcq
IG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFs
dWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcych
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBjYWJiMjIxYzQyOWMuLmIwYWI2YmZjMDky
OTg3MDA4YzI1NWQ3ZGI1ZWExNGI5NjI2YTVhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03OSwyOCArNzks
MzAgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29u
c3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGlzR2VuZXJhdG9yKQogewog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHJldHVybiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgaXNHZW5lcmF0b3Ip
OwogfQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soCiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBBcmdMaXN0JiBhcmdzLCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCAKLSAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQorICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9z
aXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAg
Ly8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Ig
d2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5p
c0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVu
Y3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFr
ZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVyYXRvcikgPyAiKiIgOiAiIiwgZnVuY3Rpb25O
YW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09
IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25O
YW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICJcbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24g
IiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKICAg
ICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKKyAgICAgICAgaWYgKGlzR2VuZXJhdG9yKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVj
KSk7CkBAIC0xMjYsOSArMTI4LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKAogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29u
c3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBib29sIGlzR2VuZXJhdG9yKQogewotICAg
IHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFs
T2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgaXNHZW5lcmF0b3IpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAyMmVjYjU3YjkzZjY5YmZjOWY4YjFiMzA2ZmI0YzQy
YTBhNjdkMmUzLi4yNzk0Y2QyMGI3NjMxYzE3OWZkZTAyYWE5NTcwZDEwZmVhYmZkMjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCkBAIC01NiwxMiArNTYsMTIgQEAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYpOwotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6
VGV4dFBvc2l0aW9uJiwgYm9vbCBpc0dlbmVyYXRvciA9IGZhbHNlKTsKK0pTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3Qm
LCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYs
IAotICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJy
aWRlTGluZU51bWJlciA9IC0xKTsKKyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSwgYm9vbCBpc0dlbmVyYXRvciA9
IGZhbHNlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmRlYmFjOTU2MjNm
MWZjNTgwYWNjZTFjMTU3ZDA0MzM3MzZiN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKKworR2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IHZhcmlhYmxlc1NpemUp
CisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAs
IG1fdmFyaWFibGVzU2l6ZSh2YXJpYWJsZXNTaXplKQoreworfQorCit2b2lkIEdlbmVyYXRvckZy
YW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUq
PihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2Jq
ZWN0LT5tX3ZhcmlhYmxlc1NpemUpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYg
dm0sIHNpemVfdCBudW1iZXJPZlZhcmlhYmxlcykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVz
dWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBh
bGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yVmFy
aWFibGVzKG51bWJlck9mVmFyaWFibGVzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBu
dW1iZXJPZlZhcmlhYmxlcyk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgUmVnaXN0ZXIqIHJlZyA9IGV4ZWMtPnJlZ2lzdGVycygpIC0gMTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFibGVzU2l6ZTsgKytpKQorICAgICAgICB2
YXJpYWJsZUF0KGkpLnNldChleGVjLT52bSgpLCB0aGlzLCByZWdbLWldLmpzVmFsdWUoKSk7Cit9
CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
UmVnaXN0ZXIqIHJlZyA9IGV4ZWMtPnJlZ2lzdGVycygpIC0gMTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdmFyaWFibGVzU2l6ZTsgKytpKQorICAgICAgICByZWdbLWldID0gdmFyaWFi
bGVBdChpKS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzE4YTM1NDEw
YTM1YjJmNTU3Y2M1NjQxNTI1MjMxYjExYjFiYWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmluZSBH
ZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVj
dWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgor
ICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJP
ZlZhcmlhYmxlcyk7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB2YXJpYWJsZXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mVmFyaWFibGVzKCkp
OworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIHZhcmlhYmxlQXQoc2l6
ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhcmlhYmxlcygpW2luZGV4XTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mVmFyaWFibGVzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZWYXJpYWJsZShzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBy
ZXR1cm4gb2Zmc2V0T2ZWYXJpYWJsZXMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclZh
cmlhYmxlcyh1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRPZlZhcmlhYmxlcygpICsgbnVtYmVyT2ZWYXJpYWJsZXMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IHZvaWQgc2F2ZShFeGVjU3RhdGUqKTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqKTsKKwor
cHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCB2YXJpYWJsZXNTaXplKTsK
KworICAgIHNpemVfdCBtX3ZhcmlhYmxlc1NpemU7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU3Y2QzZWQwMjViZWE5MjdmNjA1MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwor
CisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9y
ICovIHRydWUpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5
cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9
CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBi
MzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gK
KworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOwor
ICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NmUyNDFhZTA4NTYzMDlhNmU0NTQ3Y2MxZjM1MmU4YzgxYmY3MGZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9
OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAz
NDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+
KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYs
IFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2Zi
Mzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKwor
I2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJh
dG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2Vu
ZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2lu
IGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisq
LworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30K
KworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+
KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gK
KyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMg
R2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3By
aXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2Vu
ZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JUaGlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JUaGlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNhZDJlYTYzNmM1MjRkOTVmMmQwM2Y3ZGQwMzRmOGQ3
NTVkZTgwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclRoaXMuaApAQCAtMCwwICsxLDM3IEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUgTElB
QkxFIEZPUiBBTlkKKyAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIEdlbmVyYXRvclRoaXNfaAorI2RlZmluZSBH
ZW5lcmF0b3JUaGlzX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgR2VuZXJhdG9y
VGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBOb25FbXB0eQorfTsKKworfQorCisj
ZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBm
YWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAg
ICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
KwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhp
c09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBw
cm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzNiYmIzYTllMGEyM2Iz
ZDM2YTJkMjMyYzdmYjU3Yzg2NWIxMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7
ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6
SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQor
CitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAg
IEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVu
Y3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rp
b24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24t
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigp
LT5ub3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJh
dG9yIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dl
bmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5l
cmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVu
Y3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NmFjNWU0YjkwNzBmY2M1ZTAwZjYxYmJjZWY2YmYxMjkzYTVhNzAyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U0dlbmVyYXRvckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIExMSW50RGVzaXJl
ZE9mZnNldHM7CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlv
biB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmll
bmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRD
b21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBp
bnQzMl90IHsKKyAgICAgICAgQ29tcGxldGVkLAorICAgICAgICBFeGVjdXRpbmcsCisgICAgICAg
IEluaXRpYWwKKyAgICB9OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwor
CisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxp
bmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dl
bmVyYXRvckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggY2JhNWFjMWFhMDU4YWMzOWVlNmU5NjI1MjVhNDdjYzg2OGIxMjg5MS4uN2YxYTky
MzcyYjgzMmM0NDI2ZjBkMWRkYWI1NzQ4YjJiM2MyODA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAog
I2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVk
ZSAiSlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJ
TFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9J
VEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5z
ZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0
b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlw
ZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lU
RVJBVE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhF
cnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUs
IG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIp
KSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisg
ICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7Cisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNv
bnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00Mjgs
NiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4
cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBA
IC04NDksNiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1
YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1
bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rp
b25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVC
bG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRl
QmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJp
ZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8
SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
OworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90
eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpA
QCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zm
c2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVy
YXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9y
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0K
IAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNj
b3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7
IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5n
T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5
NzhmNy4uZWNhYmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZU
TFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJH
Q0FjdGl2aXR5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3Nl
bWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZl
cnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0
aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBn
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNl
dCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJy
ZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFBy
b21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2OGQyYjgx
ZTYuLjU1NzdhODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJy
ZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxl
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1
cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRl
cm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAppbmRleCAyODVjNWY5OGY0OTUzOTI4ZTY3NDMzZjhjMjY2YTliYmExNTBmN2E3Li4wMDBm
ODA4OWJkMWY4ZDU5ZWMyMDA0M2M4MTM2YjQ1OWQ5MDg0N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi55YW1sCkBAIC03MTUsNyArNzE1LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X2lz
X3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmF0
b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJpY19p
dGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBA
IC03MjMsNyArNzIzLDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21faXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJhdG9y
X2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlv
bl9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYv
QXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25faW5zdGFuY2VzX29m
X2l0ZXJhYmxlcy5qcwpAQCAtNzQ5LDcgKzc0OSw3IEBACiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVy
aW5nX25lc3RlZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0
cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhf
Z2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rl
c3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc1
OSw3ICs3NTksNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5n
X3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3Bz
X3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19p
dGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9v
cHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMSw1MyArODAx
LDUzIEBACiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0
cnVjdG9yLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVH
ZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0
dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRoX25l
dy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Nv
cnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJl
c3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5l
cmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19j
bGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0
aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJh
dG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9u
b24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
c3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNd
LmpzCkBAIC0xMTAxLDcgKzExMDEsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRv
cl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJh
dG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVy
YXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMu
anMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5k
ZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZj
MGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMu
anMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBn
bG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9u
IF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9k
cyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRl
cmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0g
eworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCks
IGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0
dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7
fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0
b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0
ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29m
X2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZj
ODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNi
NjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0
YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFs
ID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2Ny
ZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwg
e307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9y
KSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAg
bmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25l
OiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybidd
LAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307Citp
dGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9
CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRv
ciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmcu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4
M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwz
ICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9i
YWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhv
ZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdm
dW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVu
Z3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisg
ICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cn
XQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1
bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5j
dGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9z
aW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2
NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5
MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lm
ICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9
CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9k
cyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAh
U3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBp
dGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFy
ci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1l
dGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0
ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0
dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7
CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0
b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmE4ZjNkODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJl
KHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUo
R2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0
b3JGdW5jdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265681</attachid>
            <date>2015-11-17 10:47:13 -0800</date>
            <delta_ts>2015-11-17 11:43:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151118034701.patch</filename>
            <type>text/plain</type>
            <size>183197</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li44Mjg2ZWVmYjE0ODlhZTEx
MjQ4MzA5Y2FmNTI0NTQ0ZGJkNzA4YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMTUtMTEtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUlu
Zm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFs
dWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVu
Y0NvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1v
ZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6Omlz
UHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVj
dXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRh
YmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZhcmlhYmxlQXQpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZXMpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyk6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENh
bGxEYXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlw
ZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXMuaDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9y
Lm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9f
Y3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5l
eHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3Jl
YXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAg
ICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFi
bGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAg
ICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJh
YmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAxNS0xMS0xMSAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBB
aXI6IHdlIGhhdmUgbW9yZSByZWdpc3RlciB0aGFuIHdoYXQgdGhlIGFsbG9jYXRvciBiZWxpZXZl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFkMGI0YmE5ZWY2MGE4MGM1
YTYxNDNjOTg1NWJmNjdlOGJmMDNjMTMuLmRlYzE4NTRkY2IwYzcyN2M5NThlNjY5YTdlNWQ5YmRh
NjUwMWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Miw2ICs1
NjIsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNw
cApAQCAtNjAxLDYgKzYwNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVj
b3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5j
cHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM2LDYgKzc0MSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAg
ICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAt
MTE5NCw2ICsxMjAwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5q
cworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBl
LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZl
YWVhYjJmOTM5NGM2OGJkYzBhMy4uZjhhZDNiNmQ5OWY1Mzc4NGE1N2E1ZGJjZWRhNmQyZjVlNDg3
ZDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBk
dW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdU
Rjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFt
ZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVu
Y3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTRhYjUwZWI5ZmNkN2Y2
ZDViMjYzMGRlZDU5ZmI1NTdiMjYyODAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitm
dW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0
aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMu
QGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFs
dWUsIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJh
dG9yVGhpcywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2VwdGlvbiwgMik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5k
ZXggYmQyOWM1NWEzNzM1NGRlM2ViYWEyOTUzOGFiMTcxYzIwOWYxMzMxMi4uZTlhZWY2MTgyNGQ1
N2E0MGI2Y2MyMDZiYWViMGVhZjIxZWQyMmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVu
Y19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwi
LCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIs
ICJsZW5ndGgiIDogOSB9LApAQCAtMTI4LDYgKzEzMCw4IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVu
Z3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6
IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMiB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0KICAg
ICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDMxNTExZTdjMWQxZjVlOTczOTdjZDJiNGNmNDliYThiNGMzOGI0
MGUuLmQxMmNjZjg1OWU0YmE0NGYzMDk3YjMxMjhiMGYyNzM2MTY5ZjRlOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw3ICs3
MCw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2pl
cV9udWxsOgogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNh
c2Ugb3BfaW5jOiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNh
c2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMjMsNiArMTI1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRf
ZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhw
OgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQ6CkBAIC0xNTEsNiArMTU0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfdW5zaWdu
ZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
YzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2Nv
cGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAtMjUz
LDYgKzI1Nyw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxl
X2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgIGNhc2Ug
b3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTMs
NiArMzE5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdl
eHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9j
YWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMThmZmEwNzBlZmNjN2U2
OWU4NjdkY2VkY2M1Yzc4NTk3MTgwZTQ4Zi4uMjY1MTE4ZTM2NTdkMTVmYzVjYTcwN2ZkNzk5NTcw
MzViM2Q0Y2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTEyODYsNiArMTI4NiwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOiB7CisgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgp
LCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25l
d19hcnJvd19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEzMDMsNiAr
MTMxMSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDogeworICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVy
YXRvcl9mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAg
ICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVt
cENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE0OTEsNiArMTUwNywxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1
Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMi
LCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGludCBnZW5l
cmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAg
IGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5l
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUw
YjEwMmExNWQuLjdjMzExNGE5ODc5NmU0YWI4MDQ2YWRjMDhkYjY0MWRkMjliNzhkMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0y
NiwxOSArMjYsMjEgQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRh
YmxlSW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
TW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0g
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFs
LCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdl
bmVyYXRvclRoaXMsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVk
c0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2
YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1f
aXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lz
QXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFy
c2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OCw4ICs1MCw5
IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9y
VGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9y
VGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29u
c3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7
CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0
cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAg
IFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uZTFm
MjA4ZGU4YzcyYjhhYzM4ODA1NzQxZjE0MGE2ZTA5M2Q4Y2RiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwx
MCArNjUsMTEgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgp
KSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAg
LCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhp
cygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwg
bV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgp
KQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAs
IG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEw
MDAxNjViODYxZjBmODNjZi4uMjJhNzMyNTExMDFjMGIzODVmOTJlYmQzOTZlYjVjYjFhOWIyNzY0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1
ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtMTE2LDcgKzEx
Nyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAg
IGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAg
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsg
fQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVy
YXRvclRoaXMpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0zODcsMTIg
KzM4OSwxMyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNC
dWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsK
LSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5l
cmF0b3JUaGlzIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCisgICAgU291cmNlUGFy
c2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENv
ZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4
NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLjJiZjZhODIwOTFiMGUxY2NmN2Iy
YTRiYmRhOTdiNmY0MmU2YzA2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAs
NyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2lu
ZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2Rl
ID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6
OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAg
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVz
ZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMoKSwgcGFyc2VNb2RlKSk7CiAgICAg
YXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1
bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRh
YmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3It
PmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAg
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlh
YmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBH
ZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFt
ZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1l
KCkpCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxp
dHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgp
KSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9p
c0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRv
clRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQogewogICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3Ry
dWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAK
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1
bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25L
aW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTYsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAg
ICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAg
ICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIy
OTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uYjVlMWY2ZmNjNmQ0NzIzM2Q5NWMx
ZDNkZTdhMGMxNjEzOWM1N2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHku
aCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
VGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBz
b3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0
b3JUaGlzLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIs
NiArODMsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9
CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2Vu
ZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2Vu
ZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogCiAgICAgdW5zaWduZWQgdW5saW5rZWRG
dW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVT
dGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTcsNyBAQCBjbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
ICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAg
ICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2Vw
dGlvbiwgCkBAIC0xMjUsMTAgKzEyNyw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4o
bV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3Ry
dWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3Vy
Y2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcywg
VmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dDsKIApAQCAtMTU4LDcgKzE1OSw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJv
d0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYyZGVlOWRmYzgwNjU0YzIuLjQ4ZjU0ZjJkNDdm
Nzc2NTI3NmExY2Q4MzM4YzY4NWY4ZmU4MDA5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgpAQCAtMTk4LDcgKzE5OSwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9y
ZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CiAgICAgLy8gY29tcGF0aWJsZSB3aXRo
IHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5Ci0gICAg
LCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVj
dG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlz
U3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCisgICAgLy8KKyAgICAv
LyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0b3IsIGFsbCB0aGUgY2FsbHMgY2Fubm90IGJlIHRh
aWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJlc3VsdHMgd2lsbCBiZSB3cmFwcGVkIGFzIGFuIGl0
ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9w
dGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3No
b3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFyc2VNb2RlKCkgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlu
a1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxw
dHI7CkBAIC0yNTEsMjkgKzI1NSw3NSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxs
ZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwotICAgIAotICAgIGlmIChmdW5j
dGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1
bmN0aW9uTW9kZSgpKSkgewotICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25O
YW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKTsKLSAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVy
ZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7Ci0gICAgICAgIGJvb2wgbWFya0FzQ2Fw
dHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwotICAgICAg
ICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3Vs
ZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKLSAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciA9IGFkZFZhcigpOwotICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIi
IGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lv
bnMuIElmIHdlIGhhdmUKLSAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMs
IHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQg
YmVjYXVzZQotICAgICAgICAvLyB0aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9u
bWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50LgotICAgICAgICBpZiAoIXBhcmFtZXRl
cnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZVZh
ckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwotICAgIH0KIAot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBh
cmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBk
ZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJz
LnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdp
c3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhp
cwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQot
ICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOworICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIC8vIEJlZm9yZSBlbWl0
dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29u
dGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorCisgICAgICAgIC8vIEFs
bCB0aGUgcGFyYW1ldGVycyBmb3IgYSBnZW5lcmF0b3Igc2hvdWxkIG5vIGJlY29tZSBoZWFwIHZh
cmlhYmxlLiBTbyB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGVtIGhlcmUuCisgICAgICAgIC8vIFRoZSBw
YXJhbWV0ZXJzIGFyZSAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKS4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFy
YW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAg
IG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4
KCkpOyAvLyB0aGlzCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKwor
ICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGVtaXRNb3Zl
KG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX3BhcmFtZXRlcnNbMV0pOworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1v
dmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3
aXRjaF9pbW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3Jv
dXRpbmUgc3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBj
YWxsaW5nIGBuZXh0KClgLCB3ZSB3b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3Vl
IGluc3RlYWQgb2YganVtcGluZyBiYXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRl
ci4KKyAgICAgICAgLy8gSXQncyBzdWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0
IGlubGluZXMgb25lIGBuZXh0YCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBi
ZWdpbkdlbmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIENv
bXBsZXRlZCBzdGF0ZS4KKyAgICAgICAgLy8gSGVyZSBpcyB0aGUgY29udGV4dCBvZiB0aGUgZnVu
Y3Rpb24gcHJvbG9ndWUuIFNvIHdlIGNhbm5vdCB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGl0ZXJhdG9yUmVzdWx0ID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KGFkZFZhcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSwgdHJ1ZSk7CisgICAgICAgIGVtaXRSZXR1cm4o
aXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgIC8vIEV4ZWN1dGluZyBzdGF0ZS4KKyAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVy
cm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0
ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1pdEdlbmVy
YXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246
OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsKKworICAgICAgICBpZiAoc2hvdWxkQ2FwdHVy
ZVNvbWVPZlRoZVRoaW5ncykgeworICAgICAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlciA9IGFkZFZhcigpOworICAgICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFy
IiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Np
b25zLiBJZiB3ZSBoYXZlCisgICAgICAgICAgICAvLyBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNz
aW9ucywgd2UgaGF2ZSB0byBob2xkIG9mZiBvbiBhbGxvY2F0aW5nIHRoZSAidmFyIiBlbnZpcm9u
bWVudCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFy
IiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50LgorICAgICAgICAgICAg
aWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXMoKSkKKyAgICAgICAgICAg
ICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25OYW1l
SXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1v
ZGUoKSkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVT
Y29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVy
ZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CisgICAgICAgICAgICBib29sIG1hcmtB
c0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKKyAg
ICAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNh
biBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0
IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVs
dCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGlu
ZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVu
dCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9u
bWVudC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFs
dWVzKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5k
IG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKKyAgICAgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVy
aW5nIGFyZSBub3RlZC4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXpl
KCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAgIG1fdGhpc1JlZ2lz
dGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlz
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICB9CiAgICAgCiAg
ICAgLy8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVu
dHMuCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CkBAIC00NjAs
NyArNTEwLDM2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAg
ICAgfQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAgIGlmICghY29k
ZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIGlm
IChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAg
ICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsK
KyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1vdmUobV9u
ZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmIChjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgICAgICAg
ICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3
aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRo
IGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVy
LCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVy
YXRvclJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhpc3wg
aXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsK
ICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rl
cik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkKQpAQCAtNDc2LDkgKzU1NSw4IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+
dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhp
c1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIC8vIEFsbCAi
YWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFt
ZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtMjI5
NCwxMiArMjM3MiwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2Vy
dChSZWdpc3RlcklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3Qg
YmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmNyZWF0ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBt
X3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsg
Myk7CiAKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ1MywyMCArMjUzMSw2
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJ
RCogZHN0LCBFbGVtZW50Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1
bmN0aW9uSW50ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihmdW5jdGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIo
KS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1
cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4
cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3Bf
bmV3X3JlZ2V4cCk7CkBAIC0yNDc1LDEzICsyNTM5LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHAp
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bj
b2RlSUQgb3Bjb2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykK
IHsKLQotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQg
PT0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogZnVuY3Rpb24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9j
b2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rp
b24tPnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNDk0LDE3ICsyNTcwLDE4IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklE
KiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2Rl
KiBmdW5jKQogewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19m
dW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNF
eHByTm9kZSogZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVj
dG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yKQorICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpcygpID09
IEdlbmVyYXRvclRoaXM6OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVy
KCkpOwogICAgIAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19h
cnJvd19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3Qs
IGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1MjIsNiArMjU5OSwxOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdp
c3RlcklEKiBkc3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVC
bG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChm
dW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBl
bHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJl
Z2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Cisg
ICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBl
eHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2Nh
bGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NDgsNiArMzgzOCwyNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0
ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCku
bmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0
ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVy
KDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJl
bD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1p
dElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAg
ICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2Jq
ZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9
IG5ld0xhYmVsKCk7CkBAIC0zODEzLDQgKzM5MjEsMjIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmludmFsaWRhdGVGb3JJbkNvbnRleHRGb3JMb2NhbChSZWdpc3RlcklEKiBsb2NhbFJlZ2lz
dGVyCiAgICAgfQogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSht
X2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
dGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBhcmd1bWVudCwg
ZmFsc2UpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0
b3JSZXN1bHQuZ2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhl
Y3V0aW5nKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAg
ZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKSk7CisgICAg
ZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAg
ICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRFcXVhbGl0
eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdp
c3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigyKSkpOworICAgIGVtaXRKdW1wSWZU
cnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8gUmV0dXJuLgor
ICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZW1pdE5l
d0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7
CisgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgIHJldHVyblJl
Z2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsK
KyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAgICAg
fQorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAg
ICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBUaHJv
dy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgZW1pdFRocm93KGdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3JtYWwuCisgICAgZW1pdExhYmVsKG5v
cm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOwor
fQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91cyA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRM
b2FkKHByZXZpb3VzLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICB7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1
bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVt
aXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVtaXRD
YWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBh
cmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkp
OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVs
KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbmV4dEVsZW1lbnQgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgICAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQo
KSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5leHRFbGVtZW50LmdldCgpKTsKKworICAgICAg
ICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAg
ZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBlbWl0TG9vcEhpbnQoKTsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxs
cHRyLCB2YWx1ZS5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bf
c2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JS
ZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwo
KTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisK
KyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKDApKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVh
bGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigyKSkpOworICAgICAgICAgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisK
KyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuSXRlcmF0b3JSZXN1
bHQgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFJldHVybi4KKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0
dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRl
cmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJn
dW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQo
KSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50
cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlM
aXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
UmVnaXN0ZXIgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxs
eUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9
IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdl
bmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVyblNlcXVlbmNlLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5J
dGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCByZXR1cm5Gcm9tR2Vu
ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFs
dWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFs
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3Iu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIo
KSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVy
bkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93LgorICAgICAgICAgICAgICAgIGVt
aXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2ROb3RGb3VuZCA9IG5ld0xhYmVsKCk7
CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LnRocm93S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhv
ZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRo
cm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1v
dmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHRocm93
TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRocm93QXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJl
dHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciBy
ZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUpOworICAgICAgICAg
ICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJEZWxlZ2F0ZWQgZ2Vu
ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iKSk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdE1vdmUocHJldmlv
dXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRl
cmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRH
ZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQor
ICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogdmFsdWUsIGJvb2wgZG9uZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0g
ZHN0OworICAgIGlmICghZHN0IHx8IGRzdCA9PSB2YWx1ZSkKKyAgICAgICAgcmVzdWx0ID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5ld09iamVjdChyZXN1bHQuZ2V0KCkpOworICAgIGVtaXRE
aXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUsIGVtaXRMb2Fk
KG51bGxwdHIsIGpzQm9vbGVhbihkb25lKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
ICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVl
LCB2YWx1ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBl
bWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsK
KyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExh
YmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBw
ZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHdlIGNhbm5vdCBlbWl0IGBicmVha2AuCisgICAgYmVnaW5Td2l0
Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3
aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBt
X3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9m
ZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQs
IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7Cisg
ICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAg
ICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUo
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5j
aE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcg
dGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbwor
ICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMK
KyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkp
OworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5i
aW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkMTkxZjk5ZjVmMDlhN2NlNDY2OTdhN2I5
MDQ5MGRkOTQ5YTQ3YWJhLi5jNjViMTdiY2QxNzkyNmI3OTczOTg4MjNkMWU4YTVjOGE0MTIwNWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEJ5dGVjb2RlR2VuZXJh
dG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsyODEsNyBAQAogCiAgICAgICAgIGJvb2wg
aXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9y
KCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0
b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJh
dG9yVGhpcygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoKTsKIApAQCAtMjk3
LDYgKzI5OSw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGVSZWdpc3RlcigpIHsgcmV0
dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJl
Z2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3RlcjsgfQorCiAgICAgICAgIC8vIFJl
dHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSByZWdpc3Rlci4gUmVnaXN0ZXJzIHJl
dHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSByZXF1aXJlIGEgbW9kaWZpZWQgZm9y
bSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAgICAvLyByZWdpc3RlciB3aXRoIGEg
cmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFibGUiLCBtZWFuaW5nIHRoYXQKQEAg
LTQ5OSwxMCArNTAzLDggQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5KFJlZ2lz
dGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgpOyAvLyBzdG9wcyBhdCBm
aXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lz
dGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25Db21tb24o
UmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJRCk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dG
dW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3Rl
cklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYsNiArNTk4LDcgQEAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAgICAgICB2b2lkIGVtaXRJdGVyYXRv
ckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSk7CiAKICAgICAgICAgYm9vbCBlbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZChj
b25zdCBWYXJpYWJsZSYpOwpAQCAtNjQyLDEyICs2NDUsMjUgQEAKICAgICAgICAgdm9pZCBiZWdp
blN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZv
aWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVz
c2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFu
Z2UpOwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAg
dm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3SXRlcmF0b3JSZXN1
bHQoUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBib29sKTsKKyAgICAgICAgdm9pZCBiZWdpbkdl
bmVyYXRvcihSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBk
ZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQorICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tz
KCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzOyB9CiAgICAgICAgIGJvb2wgc2hv
dWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAg
ICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2NSw2ICs2ODEsNyBAQAogICAgICAgICB2b2lkIGVt
aXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQp
OworICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJ
RCosIEJhc2VGdW5jRXhwck5vZGUqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBwdXNo
TGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVRE
WkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBudWxscHRy
KTsKQEAgLTc1NCw4ICs3NzEsMTEgQEAKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKICAgICAgICAg
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSkpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIEdlbmVyYXRvclRo
aXMgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5OworICAgICAgICAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXNDb25z
dHJ1Y3RvcigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvclRoaXMgPSBHZW5lcmF0b3JUaGlz
OjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGlu
RnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAg
cmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5v
ZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwg
Z2VuZXJhdG9yVGhpcywgdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC04MDIs
NiArODIyLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxs
cHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpA
QCAtODI1LDYgKzg0Niw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENv
bnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+
PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlD
b250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJl
c3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3Qg
eyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlh
YmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRv
SW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODczZjRhYjQ0MjQwNzBk
YzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uOTNiNmEzMWQ4MjRjNmNjZDY1OGVkNjlhYzE5YzM5
ZjhjZGY0YWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xNDUsNyAr
MTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgaWYgKG1f
c2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVyYXRvclRoaXMoKSA9
PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQpAQCAtMjU4MywxMyArMjU4NCwyNyBAQCB2b2lkIFJldHVybk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3Qg
PSAwOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/
IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuUmVnaXN0ZXIgPSBudWxscHRyOworICAgIGlmIChtX3ZhbHVlKSB7CisgICAgICAgIGlm
IChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X3ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpOworICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZp
bmVkKCkpOworCisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCByZXR1cm5SZWdpc3Rlci5nZXQoKSwgdHJ1ZSk7
CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxseUJsb2NrKCkpIHsKICAg
ICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
UG9wU2NvcGVzKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIDApOwogICAgIH0KIAorICAgIGlm
IChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KQorICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQp
KTsKKwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVDb250cm9sRmxvdyhlbmRPZmZzZXQoKSk7IApAQCAtMjk2NiwyNiArMjk4MSw3OSBAQCB2
b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3co
c3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRl
ckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3Rh
cnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVt
ZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9k
ZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAg
ICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4
cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVu
dE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9
IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJO
b2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50
IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAg
ICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0g
ICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8
QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBp
ZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJu
Tm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUq
PihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlO
b2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlk
KGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3Rh
dGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkluaXRpYWwpKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwogCi0gICAgLy8g
SWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgot
ICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRv
ci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3Iu
ZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8v
IERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQn
cyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQo
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTog
eworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsK
KyAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFi
ZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdl
dCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0
TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURh
dGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBj
YXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJh
dG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpLCB0cnVlKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0
b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUq
IHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1
cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4g
c3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBi
bG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlz
QmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxv
Y2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVt
ZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRl
bWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUg
PSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGlj
YWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNv
ZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5m
byBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2Ug
Y29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxG
cmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEg
KzMwODEsMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRF
eHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBj
b21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBn
ZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVk
IHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAg
ICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFy
Zy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAg
ICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJn
LmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQo
KSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGNkNjg2YjcyYWRkNGI0OGQ5YTYzNmMzNGZmMDlhYmZlYmQ4NDg1ZWUuLjVlMjU0
MTNiOGQ4NDg3YjVmNTU1ZGY5MjMyYTQyOGEyM2M3NWU1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTIxMyw2ICsyMTMsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRz
KQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3Bf
YXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKKyAgICAgICAgREVGSU5FX09QKG9w
X3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjU5LDYgKzI2MSw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuYykKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25l
d19nZW5lcmF0b3JfZnVuYykKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdl
eHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBlOTY4MjkyYWI3MDI0YThjMmFmZWFmZmQw
ZmU0NTkyY2M4NTM2NDcwLi4wOTE4NjQ3ZTZhMWEwNTdlYjc5NDgzZjRmZDNhMjM0YzZjNWE3YTgy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Myw2ICs0OTMsOCBAQAogICAgICAgICB2
b2lkIGVtaXRfb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Nh
dmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fycm93X2Z1
bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9u
Kik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0
cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRT
bG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBi
b29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGlu
dCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYzFiYjc0M2ZjYjdl
MmNkZmIwYTJkYzdkMWQ4ZDM5NDk3Zjg2MjBjOC4uZDI2ODM4YWRmMDgzNWQyZTJlMzUzNjhkYjEx
ZWMzOTRiYzBjN2E5OSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVn
ZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkUGF5bG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYKICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24t
PnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3Jf
ZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3
RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4LDExICsxMDMwLDI3
IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVnVDIpOwogI2VuZGlm
Ci0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9uZXdfZnVuYykKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0g
ICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1
Y3Rpb24pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29t
bW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJv
d19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRO
ZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTM5OSw2ICsxNDI3LDE4
IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDg3M2ExZGRkNjU3YTI4OTY4
YTBlNTFmOTA2MzZkMWRlMmZjZjgxNi4uY2FkOTM0NjljMWJjYmQyYjU3ZGNiNTIwMjNhYmU5Zjcy
M2Y3NDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTk4NywyMyArOTg4
LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlPgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25F
eGVjdXRhYmxlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2Nv
cGUpKTsKKyAgICBpZiAoaXNJbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0
YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5cGU6
OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVj
dXRhYmxlKSwgc2NvcGUpKTsKK30KKworZXh0ZXJuICJDIiB7CisKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIGZhbHNlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUp
CiB7Ci0gICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVj
dXRhYmxlOjppbmZvKCkpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVu
Y3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxl
KQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNT
Y29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBv
cGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgc3RhdGlj
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IGJvb2wgaXNJbnZhbGlkYXRlZCkKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2Vs
bCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJ
bnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhG
dW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0
YWJsZSk7CkBAIC0xMDE5LDEyICsxMDM5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlCiAg
ICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CisgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKIH0KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKKyAgICByZXR1
cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBmNmM1N2Yz
ZDFjYjdlNDU2MjI2MzYyYTkyYTBmZDA5OTQwNTk5ZDQ1Li5jYWUwNDJhMGEwYjQ1MDY5ZWIwNGMy
MGI1ZjQ3NWVlZWRkNDQyNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMjk5LDYgKzI5OSw4IEBACiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc2NWYxOTc5NTBlMzIzZjA1NjZlNzJjNzNiNGVlZDYz
ZTNiMjA4YzUuLjVmNWYyMTg0YzkzYjkyYzliMjNiZDIzZjdjN2QzNzkxNjc0OTZiZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMDQx
LDYgKzEwNDIsMTggQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRfUkVUVVJOKEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVy
YW5kKSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5
cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwg
ZXhlYy0+aGFzQWN0aXZhdGlvbigpKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9X
X1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2Vu
ZGlmCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9C
RUdJTigpOwpAQCAtMTA1Miw2ICsxMDY1LDE3IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAg
IExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7
CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2Vk
UihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFu
ZCk7CisKKyAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2Fycm93X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGUyNDQ4MjlmZGQxZTJmMTUw
NmEzNWQxMGE0ZWI4MWZjYmUzMmM1MzEuLjI3MTMyNGIxODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFi
NDU2NTk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC05OSw2ICs5OSw4IEBACiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19m
dW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5l
cmF0b3JfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3Ry
dWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCA4NDliMmQ3NTMzMjAzMWEwZTZjNzQ4ODUxMTEyMjBkYjJhN2QwOWE0
Li43YjY3M2QyOWRiNTJhMWZkODgxZjRlMDUyY2M5Y2U1YTdmZGRhZWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0x
MjI3LDYgKzEyMjcsMTIgQEAgX2xsaW50X29wX25ld19mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAK
IAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAg
IGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1
OCw2ICsxNDY0LDExIEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGlu
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAg
IGRpc3BhdGNoKDQpCisKIF9sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKQEAgLTE1NzMsNiArMTU4NCwxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRp
c3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMikKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA3Yzg1YWMwY2I4Mzg3NTI0MzgyMmQxYmQw
MTNhM2Y3OTNjZTdkOWE5Li44NmVkNDhlYjBhZjAwODJmMGY4YTMwOTRmZmE0OTFjZTZmYjgzZWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzQwLDkg
KzM0MCwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgbnVsbHB0ciwgLyogZGVsZWdhdGUgKi8g
ZmFsc2UpOwogICAgIH0KIAotICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBk
ZWxlZ2F0ZSkKKyAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRl
KTsKKyAgICAgICAgWWllbGRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgWWll
bGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVj
dG9yLApAQCAtMzYzLDEyICszNjUsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlv
bk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAot
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2Rl
IG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAg
ICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENv
bHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmlj
dENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMy
YzlmNmQzZDkzOTMzOGNlNTAuLjJkY2E3MjRjNjU5MWUxYjY5MjM1MDZlOWE1OTc4ZWJhYzUwYjA3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
CiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAg
ICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihl
bmRDb2x1bW4pCkBAIC0xNjMsNyArMTYzLDYgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2Vk
VmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAg
ICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQo
aXNJblN0cmljdENvbnRleHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b24oaXNBcnJvd0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBjZGU0OWE5YjZhNjA0NTY5OGVi
ZWJkNGQwOWE3ZWNiM2FlOTJmYzM0Li4xZTgyY2Q4NzhiODZhMDE4N2VhYmQ0ZWVhNmIzODY3NGI3
NDJhNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODEyLDcgKzE4
MTIsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29k
ZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4Mzgs
NyArMTgzOCw2IEBACiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0
T2Zmc2V0KQpAQCAtMTg2NSw3ICsxODY0LDYgQEAKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAg
ICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25lZCBt
X2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKQEAgLTE5MjcsNyArMTkyNSw3IEBACiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMzc0YmNiMmNiMzViMDU0N2JhNWQzOWY0
NTEzOTUzNzE3OTQzZjQxZC4uODI4MmQzYzgxOThhZDM5ZjdmMmQ5NzQzOTVlYjBiODUwMWVmYzNk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjQ3LDcgKzI0
NywxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsK
ICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAg
ICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJh
bWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7
CkBAIC0yNzEsOCArMjc0LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
QXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7
CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwg
cGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBw
YXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBh
cnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmlj
dE1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTQ1Niw2ICs0NjMsNDUg
QEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJj
ZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0
LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAg
IGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsK
KyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0
OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8u
bmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBh
cmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOzsKKyAgICBpbmZv
LnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OworICAgIGluZm8uc3RhcnRMaW5lID0gdG9r
ZW5MaW5lKCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3Rh
dGUsIHZhbHVlLCB0eXBlCisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0
b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2Nv
cGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwor
ICAgICAgICBTeW50YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0
PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNv
dXJjZUVsZW1lbnRzKGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFy
c2UgdGhlIGJvZHkgb2YgYSBnZW5lcmF0b3IiKTsKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9y
Qm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9Cisg
ICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsK
KyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5j
dGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZv
KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFy
dExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxp
bmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1l
bnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZl
TGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6
CkBAIC0xNTU0LDEzICsxNjAwLDEyIEBACiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5
VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBl
OjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xNTcyLDcgKzE2MTcsNyBAQAogICAgIGVsc2UKICAgICAgICAg
ZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0
cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5v
dCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRo
aXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVt
bigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQ
YXJzZU1vZGUgbW9kZSkKQEAgLTE1ODgsNiArMTYzMyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVy
biAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAg
ICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJl
dHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZToKQEAgLTE2NjYsNiArMTcxMywzNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisg
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0
ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAw
KTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2Vu
ZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKwor
ICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9y
VmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9u
LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8v
IEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVy
YXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1l
TW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0
aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
bmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE3NzYsMTIgKzE4NTQsMTAg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAg
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBl
bmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwg
CiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25z
dHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVu
Y3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNh
Y2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3Bl
LT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIHBv
cFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8p
OwpAQCAtMTc5NSw3ICsxODcxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51
bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAoaXNB
cnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8t
PmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlv
bkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE4MTcsMTQgKzE4OTMs
MjQgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25O
YW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7Ci0gICAgCi0gICAg
ZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0
aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVu
Y3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8gcGVyZm9ybVBhcnNp
bmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkJvZHko
Y29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1
bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAg
fTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlKSB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywg
cHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisgICAgICAgIHBvcFNjb3Bl
KGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdG
dW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZh
aWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9m
ZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5j
dGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9u
SW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZh
bGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAi
JyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9u
IG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xODkyLDcgKzE5NzgsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1
bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5u
b3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5u
YW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0yMDQzLDcg
KzIxMjksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRv
cikgewogICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAg
ICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1l
ZCAncHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRl
bnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBh
IGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBAIC0yNzg3
LDYgKzI4NzMsNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBmYWlsSWZUcnVlKG1fZnVuY3Rp
b25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1
c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwogCiAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gZGl2
b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVMRCkp
OwogICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBuZXh0
KCk7CkBAIC0yNzk0LDEzICsyODgxLDE0IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVnYXRl
ID0gY29uc3VtZShUSU1FUyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9IHRv
a2VuU3RhcnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAgICAg
ICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUs
IGRpdm90U3RhcnQsIGFyZ3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjk4OSw3ICszMDc3LDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAg
SlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5z
aWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNH
ZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQs
IG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhv
ZEluZm8pOwpAQCAtMzI0Miw3ICszMzMwLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZf
R0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywg
cGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1
bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBlMjEz
ZTA3MmZiODBlNzQ4Zjg1NjI1YTY3MzhjZDE3ZWNhMTZmMDkyLi41ODVmOGM0N2I0MWMyNjBkM2Nh
ZTBhYjNjMDdkZjBhNmZmMThiMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTI0Myw2ICsyNDMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAgICAgc3dp
dGNoIChtb2RlKSB7CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
MTEzLDYgKzExMTQsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRp
ZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsK
ICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAg
LTExNzUsNiArMTE3Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJl
cXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZk
ZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBj
MDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApA
QCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1h
bEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9u
TW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwK
QEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA1
ZDM5M2EzZGE3ZTdlNTlkYjg2ZTYzY2RiZmFkZmQ5OTVhNTFlOWM5Li5kZDBhMGUwNjE2YjNhMjhh
YTYwOWQ0N2ZhZTJjMTg2ODJiOWVhNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTc5LDEwICsxNzksMTAgQEAgY2xhc3MgU3ludGF4Q2hl
Y2tlciB7CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5TGV0RXhwcmVzc2lvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVu
dEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZ
aWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1
cm4gWWllbGRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIFlpZWxkRXhwcjsgfQogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1l
bnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVy
dHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVG
dW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rp
b25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGlu
dCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwg
Ym9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNy
ZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1
ZTBmNTZlYzBmNjljZGM3Y2JlZGYwZS4uYjM4YmY5NWVkOTAxNTE1ZjllYTRkZWI4NmJiYTE3NjAw
YzU0MGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0
YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhl
IEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVz
LCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFi
aWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpOb25F
bXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1l
VmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJp
bmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVl
KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNm
NjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2Nh
YjliMDI0OGYzZmQ4MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8o
RXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAor
ICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAg
ICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAog
ICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAg
bWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3Jv
KGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCBjNGY2YzIyYzc1NDg4OTE5MGNiZjExYjQ1YTQ5MTRiY2Fm
Nzk5OTExLi4yMmJjMzk1ZDYzYjVlNGFjZjBlZmIwYzgxYzJiOGExMmM5MmIwZDc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxp
bmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwz
NCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNo
ZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQg
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7Cisg
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IpOwor
ICAgIGlmIChnZW5lcmF0b3IuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBzbG90KSkKKyAgICAgICAgZnJhbWUgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihzbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgZWxzZSB7CisgICAgICAg
IGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgKGV4ZWMtPnJlZ2lz
dGVycygpIC0gMSkgLSBleGVjLT50b3BPZkZyYW1lKCkgKyAxKTsKKyAgICAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwor
ICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsK
KyAgICB9CisgICAgZnJhbWUtPnNhdmUoZXhlYyk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdl
bmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgZnJhbWUtPnJlc3VtZShl
eGVjKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGIwYmE5ZThkYTFlMTM1MGVj
ZWVhY2M4MWQyN2JjOGNhMmIzOWRkZGQuLjIxZGJlYTNmNGM3ZjU2ZmZhYjVhZjUwNDVmMzg5MWEz
MjY5OTQ2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNl
NTY0MTdkN2E0MGQzMjBlYzdjYTYwLi5kMTYxOTk4NDMzOGE5MWEyZDI4NzVjNmJkY2QzYmM2Njc3
MjRlNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtl
ZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVj
dXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJz
ZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZj
MGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li5kN2Y3NGE1YTk0NmNjN2NlOTc1NDk4ZTQxMGQy
NDRiYzI3MjgyMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
R2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcg
KzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5j
dGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7
IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBi
b29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0MmZh
NWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5iMGFiNmJmYzA5Mjk4NzAwOGMyNTVk
N2RiNWVhMTRiOTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENhbGxU
eXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1K
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24m
IHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZh
bERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0
aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlzR2VuZXJhdG9yKTsKIH0KIAogSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlz
dCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92
ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQg
b3ZlcnJpZGVMaW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIC8vIEhvdyB3ZSBz
dHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQot
ICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5z
dHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAg
ICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59
fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVy
YXRvcikgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChpc0dlbmVyYXRvcikKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFt
ZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2
LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjaygKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1K
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgQXJnTGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRvcikKIHsKLSAgICByZXR1cm4gY29u
c3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24o
KSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJn
cywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlv
bjo6bWluaW11bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4u
Mjc5NGNkMjBiNzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJmZDIyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYs
MTIgKzU2LDEyIEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsK
LUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEFyZ0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlv
biYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgYm9vbCBpc0dl
bmVyYXRvciA9IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25z
dCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBp
bnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkZWJhYzk1NjIzZjFmYzU4MGFjY2Ux
YzE1N2QwNDMzNzM2YjdhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCB2YXJpYWJsZXNTaXplKQorICAgIDogQmFz
ZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3ZhcmlhYmxl
c1NpemUodmFyaWFibGVzU2l6ZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdlbmVy
YXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+bV92YXJp
YWJsZXNTaXplKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3Qg
bnVtYmVyT2ZWYXJpYWJsZXMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAg
ICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxs
PEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyhudW1i
ZXJPZlZhcmlhYmxlcykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZWYXJp
YWJsZXMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFJlZ2lzdGVyKiByZWcgPSBleGVjLT5yZWdpc3RlcnMoKSAtIDE7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAgICAgdmFyaWFibGVBdChp
KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmVnWy1pXS5qc1ZhbHVlKCkpOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFJlZ2lzdGVyKiBy
ZWcgPSBleGVjLT5yZWdpc3RlcnMoKSAtIDE7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3ZhcmlhYmxlc1NpemU7ICsraSkKKyAgICAgICAgcmVnWy1pXSA9IHZhcmlhYmxlQXQoaSkuZ2V0
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcxOGEzNTQxMGEzNWIyZjU1N2Nj
NTY0MTUyNTIzMWIxMWIxYmFhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJh
bWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisj
aWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQg
Y2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZWYXJpYWJsZXMp
OworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogdmFyaWFibGVzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlZhcmlhYmxlcygpKTsKKyAgICB9CisK
KyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiB2YXJpYWJsZUF0KHNpemVfdCBpbmRleCkK
KyAgICB7CisgICAgICAgIHJldHVybiB2YXJpYWJsZXMoKVtpbmRleF07CisgICAgfQorCisgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZlZhcmlhYmxlcygpCisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihz
aXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mVmFyaWFibGUoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dE9mVmFyaWFibGVzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXModW5z
aWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZW
YXJpYWJsZXMoKSArIG51bWJlck9mVmFyaWFibGVzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUo
RXhlY1N0YXRlKik7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKik7CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgdmFyaWFibGVzU2l6ZSk7CisKKyAgICBzaXpl
X3QgbV92YXJpYWJsZXNTaXplOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
R2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
N2NkM2VkMDI1YmVhOTI3ZjYwNTM2YTM5OWJlZGM4MzcxMmEzOTY4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFs
RnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgIkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51
bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCAvKiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3Qg
YXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9u
KGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgp
LCBhcmdzLCAvKiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxs
RGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1
Y3RUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7
CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1
NmM0ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0
aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBn
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsK
KyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUzMWJk
MzExYjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRp
bkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKwor
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5
OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5o
ZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBl
OworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3
NGNhZTZhZDQ2NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNs
dWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBl
Lmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclBy
b3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRv
clByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkg
fTsKKworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5l
cmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IHRocm93ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwor
dm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0
cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVh
ZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jv
b2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVj
LCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVm
aW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFw
KSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRl
OgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRv
clByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yVGhpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
VGhpcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYzYWQyZWE2MzZjNTI0ZDk1ZjJkMDNmN2RkMDM0ZjhkNzU1ZGU4
MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JUaGlzLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAgQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBG
T1IgQU5ZCisgIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzX2gKKyNkZWZpbmUgR2VuZXJh
dG9yVGhpc19oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEdlbmVyYXRvclRoaXMg
OiB1bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9uRW1wdHkKK307CisKK30KKworI2VuZGlm
IC8vIEdlbmVyYXRvclRoaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBi
Li5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAg
ICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRjYmNlMDJkNjYyOTA1ZTBlY2I3
OGE3NmZjYzg1YTJlMmQxOTg4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2Vu
ZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5n
bG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNH
ZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAg
SlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5j
dGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlv
bi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKwor
SlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4
ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5u
b3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9y
IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVy
YXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MjNmM2VlN2E4OGVmZTIxNDU0YzZmYTAyZmRmNjA1ODdjZWNmNTgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRvckZ1
bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisK
K2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZH
OjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNl
bmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rp
b24gQmFzZTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAg
ICAgICAgQ29tcGxldGVkLAorICAgICAgICBFeGVjdXRpbmcsCisgICAgICAgIEluaXRpYWwKKyAg
ICB9OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGlj
IEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqKTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGlu
ZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwg
IWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0
aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0
aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0N2NjODY4
YjEyODkxLi43ZjFhOTIzNzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIzYzI4MDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01
MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1
LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4
NCw2ICszODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAg
ICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBF
X0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJh
dG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0
ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVf
Rk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxp
dGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3Ry
dWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklF
cnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhp
cywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAg
ICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsK
ICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKQEAgLTQyOCw2ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbiwgZnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwgZ2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5S
ZWdFeHAsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RXZhbEVycm9yLCBtX2V2
YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04MTcsNiArODI4LDggQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlw
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUp
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90
b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3Bl
U3RydWN0dXJlKTsKQEAgLTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNiODRkODUx
MDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiArNjMs
OCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKK2Ns
YXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xh
c3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiArMjMxLDgg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwog
ICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAg
IFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKKyAg
ICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9n
ZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9m
dW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRl
TmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVj
dHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKQEAgLTQ1
Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yUHJvdG90
eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3Rv
dHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaW50
ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09i
amVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4
NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2
MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZy
YW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBi
b29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2Nh
dG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNl
dCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRp
b25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNj
YTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5ZjI5OGUwYjhl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5m
ZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25S
YXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IDI4NWM1Zjk4ZjQ5NTM5MjhlNjc0MzNmOGMyNjZhOWJi
YTE1MGY3YTcuLmQ2NjhmODZmZmU4N2UzNWQ0MDE0YTgzY2Q4ZGRmYmUxYjEzNzUzYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcxNSw3ICs3MTUsNyBAQAogLSBwYXRo
OiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJh
eS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXku
ZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19p
dGVyYWJsZXMuanMKQEAgLTcyMyw3ICs3MjMsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGlj
X21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpm
YWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5j
dGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZy
b21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWls
CiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlv
bl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NDksNyArNzQ5LDcgQEAKIC0gcGF0aDog
ZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3Ry
dWN0dXJpbmdfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwpAQCAtNzU5LDcgKzc1OSw3IEBACiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX2l0
ZXJhdG9yX2Nsb3NpbmdfdGhyb3cuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2
L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNf
d2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvZm9yLi5vZl9sb29wc193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpA
QCAtNzk5LDU1ICs3OTksNTUgQEAKIC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVydHlf
dmFyaWFibGVzX2Z1bmN0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
JUdlbmVyYXRvclByb3RvdHlwZSUuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5y
ZXR1cm4uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS50aHJvdy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX2Jhc2ljX2Z1bmN0aW9uYWxpdHkuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jYW50X3VzZV90aGlzX3dpdGhf
bmV3LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
Y29ycmVjdF90aGlzX2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25fZXhw
cmVzc2lvbnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dl
bmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2Rz
X2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcl9t
ZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2FzdHJhbF9wbGFuZV9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5l
cmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX29u
X25vbi1pdGVyYWJsZXNfaXNfYV9ydW50aW1lX2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9zcGFyc2VfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfeWllbGRfb3BlcmF0b3JfcHJlY2VkZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xvc2luZy5q
cwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvTWFwX01hcFtTeW1ib2wuc3BlY2ll
c10uanMKQEAgLTExMDEsNyArMTEwMSw3IEBACiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJh
dG9yX3dpdGhfYXN0cmFsX3BsYW5lX3N0cmluZ3NfaW5fZnVuY3Rpb25fY2FsbHMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5l
cmF0b3JfaW5zdGFuY2VzX2luX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlc19pbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRo
OiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyaWNfaXRlcmFibGVzX2luX2FycmF5
cy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpp
bmRleCBhOGI5YjUzY2NjZmFlMWE1YjVhNjZjMTNiZDIzZThjYWU1MjdhYWE0Li45YTgyMTMyYTYw
ZmMwZTc5MTk3MmMwNDMxOGQwN2I5ZTI2MDA0YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxl
cy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9m
IGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rp
b24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRo
b2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5p
dGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3Ig
PSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQo
KSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydy
ZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9
IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVy
YXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIg
aXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNf
b2ZfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3NDUzOTMy
NmM4OTcyYjc0YTc2MWZmNGQ4ZjI5YjJhNWFlODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZjMTU0NDRh
M2I2NGViODZlNjNjNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2lu
c3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9i
YWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9f
Y3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8
fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0
b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0gewor
ICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRv
bmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJu
J10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsK
K2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7
IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJh
dG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2lu
Zy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKaW5kZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2OWFkZTQy
ZTgzYWViOGIwM2Q0Zi4uMzJkMzE3YzBiODBhZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRkZmFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCkBAIC0x
LDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGds
b2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0
aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0g
J2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5s
ZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwK
KyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJv
dyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0g
ZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1
bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmdfdmlhX3Rocm93LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKaW5kZXggNDRh
MDY1YTk2YTFjOWRlN2UyNmMzNjIwNmMxY2IzNjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3ZjVjZGEx
ZjkyNDhlOTU2YWZiYTU0MjkzODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhy
b3cuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKQEAgLTEsMyArMSwyNCBAQAor
aWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsK
K30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRo
b2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8
ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFy
IGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTog
YXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzog
bWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIg
aXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyBy
ZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgp
IHsKIAogdmFyIGNsb3NlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1
Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYThmM2Q4NjJiM2Q5Y2MxNGU4YmE1NjVlY2ZiMDkxNTIxMDMy
YjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw4IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworc2hvdWxk
QmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0b3JGdW5jdGlvbiwgJ2Z1bmN0aW9uJyk7CitzaG91bGRC
ZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVy
YXRvckZ1bmN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgR2VuZXJhdG9yRnVuY3Rpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265686</attachid>
            <date>2015-11-17 11:43:06 -0800</date>
            <delta_ts>2015-11-19 13:40:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151118044255.patch</filename>
            <type>text/plain</type>
            <size>188039</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li40NWE0MzAyMzk1ZWU5M2My
OTcxZWYxMTg1NjY5YjMwMWQwYzk5NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjAgQEAKKzIwMTUtMTEtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUlu
Zm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFs
dWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhw
ck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0NvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6
CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25F
eGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6dmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZhcmlhYmxlQXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZXMpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZWYXJpYWJsZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvclZhcmlhYmxlcyk6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXMuaDogQWRkZWQuCisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwpOgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJh
dG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAg
KF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9y
Lm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9f
Y3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgor
ICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRl
cmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToK
KyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1l
dGhvZHMtc3ludGF4LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50YXgpOgorICAgICAgICAo
dGVzdFN5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5Db2NvYSk6CisgICAg
ICAgICh0ZXN0U3ludGF4LkNvY29hLnByb3RvdHlwZS5vayk6CisgICAgICAgICh0ZXN0U3ludGF4
LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Eub2spOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJl
Zm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAg
ICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAoY2F0Y2gpOgorCiAyMDE1LTExLTExICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFpcjogd2UgaGF2ZSBtb3JlIHJl
Z2lzdGVyIHRoYW4gd2hhdCB0aGUgYWxsb2NhdG9yIGJlbGlldmVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggYWQwYjRiYTllZjYwYTgwYzVhNjE0M2M5ODU1YmY2N2U4YmYw
M2MxMy4uZGVjMTg1NGRjYjBjNzI3Yzk1OGU2NjlhN2U1ZDliZGE2NTAxZjYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYyLDYgKzU2MiwxMCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0lkZW50
aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MDEsNiArNjA1LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
CkBAIC03MzYsNiArNzQxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNF
UwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk0LDYgKzEyMDAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEz
Li5mOGFkM2I2ZDk5ZjUzNzg0YTU3YTVkYmNlZGE2ZDJmNWU0ODdkMjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1l
dGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1t
eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRv
clRoaXM6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJy
aWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5n
KCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJv
dG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNGFiNTBlYjlmY2Q3ZjZkNWIyNjMwZGVkNTlmYjU1N2Iy
NjI4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQodmFsdWUp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQu
QGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZh
bHVlLCAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRv
clRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgMSk7Cit9CisKK2Z1bmN0
aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
dGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlz
LkBnZW5lcmF0b3JTdGF0ZSwgZXhjZXB0aW9uLCAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBiZDI5YzU1YTM3MzU0ZGUz
ZWJhYTI5NTM4YWIxNzFjMjA5ZjEzMzEyLi5lOWFlZjYxODI0ZDU3YTQwYjZjYzIwNmJhZWIwZWFm
MjFlZDIyZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDog
NSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjgsNiArMTMwLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0b3Jf
Z2VuZXJpY19wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXgg
MzE1MTFlN2MxZDFmNWU5NzM5N2NkMmI0Y2Y0OWJhOGI0YzM4YjQwZS4uZDEyY2NmODU5ZTRiYTQ0
ZjMwOTdiMzEyOGIwZjI3MzYxNjlmNGU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDcgKzcwLDkgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAgICAgY2FzZSBv
cF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6IHsKKyAgICBj
YXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMyw2ICsxMjUs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoK
ICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19p
bmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAg
LTE1MSw2ICsxNTQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25l
d19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0
X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CkBAIC0yNTMsNiArMjU3LDggQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2Fz
ZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9w
X3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxMyw2ICszMTksOCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25l
d19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNl
IG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBj
YXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCAxOGZmYTA3MGVmY2M3ZTY5ZTg2N2RjZWRjYzVjNzg1OTcx
ODBlNDhmLi4yNjUxMThlMzY1N2QxNWZjNWNhNzA3ZmQ3OTk1NzAzNWIzZDRjYjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI4Niw2ICsx
Mjg2LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3Jf
ZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMwMyw2ICsxMzExLDE0IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYl
ZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjAp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5MSw2
ICsxNTA3LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtw
b2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJzYXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShnZW5l
cmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAicmVzdW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgK
aW5kZXggOTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1ZC4uN2MzMTE0YTk4
Nzk2ZTRhYjgwNDZhZGMwOGRiNjQxZGQyOWI3OGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI2LDE5ICsyNiwyMSBAQAogI2lm
bmRlZiBFeGVjdXRhYmxlSW5mb19oCiAjZGVmaW5lIEV4ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1
ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0Fj
dGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lz
U3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29u
c3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlv
bikKKyAgICAgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVy
YXRvclRoaXMpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJy
b3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpOwogICAgIH0KQEAgLTQ4LDggKzUwLDkgQEAgc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRo
aXMpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDog
MTsKQEAgLTU3LDggKzYwLDkgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25l
ZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dl
bmVyYXRvclRoaXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAg
ICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0Yjli
NTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li5lMWYyMDhkZThjNzJiOGFjMzg4MDU3
NDFmMTQwYTZlMDkzZDhjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY1LDEwICs2NSwxMSBAQAogICAgICwg
bV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
aW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93
RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzKCkpKQogICAgICwgbV9maXJz
dExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01B
WCkKKyAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVz
KDApCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3Vu
dCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBmYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi4y
MmE3MzI1MTEwMWMwYjM4NWY5MmViZDM5NmViNWNiMWE5YjI3NjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0
eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JUaGlzLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC0xMTYsNyArMTE3LDcgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKICAgICBib29sIG5lZWRz
RnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0K
IApAQCAtMjAyLDYgKzIwMyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9yVGhpcyk7IH0KIAogICAg
IHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTM4NywxMiArMzg5LDEzIEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0
dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwogCiAg
ICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAg
dW5zaWduZWQgbV9lbmRDb2x1bW47CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2Zm
MTEzN2UxZTQ3ZTlkNTliNi4uMmJmNmE4MjA5MWIwZTFjY2Y3YjJhNGJiZGE5N2I2ZjQyZTZjMDYx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01MCw3ICs1MCw3IEBACiBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKAogICAgIFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
Ci0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJy
b3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0
aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQog
ewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1
aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKQEAgLTY3LDcgKzY3LDcg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVh
dHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVu
Y3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24t
PmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9
PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCks
IGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVl
ZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RN
b2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJs
ZS0+Z2VuZXJhdG9yVGhpcygpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3Vs
dCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERa
VmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBp
ZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJp
ZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJh
dG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAg
ICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAg
ICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5LDcgKzk5LDcg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlv
bk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihub2Rl
LT5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZ2VuZXJhdG9yVGhpcykpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAg
IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7
CkBAIC0xODAsNyArMTgwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9y
KAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENv
ZGVGb3JDYWxsOgpAQCAtMTk2LDcgKzE5Niw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2lu
ZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAK
LSAgICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1v
ZGUpOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTky
OTNmNDFiYTQyZDljMWY4Li5iNWUxZjZmY2M2ZDQ3MjMzZDk1YzFkM2RlN2EwYzE2MTM5YzU3ZDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJl
c3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC02NSwxMCArNjYsMTAgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9u
bWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdl
bmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFw
KSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRG
dW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXMsIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC04Miw2ICs4Myw3IEBAIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7
IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVy
YXRvclRoaXMpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5zaWdu
ZWQgdW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9k
eVN0YXJ0Q29sdW1uOyB9CkBAIC05NSw3ICs5Nyw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJvb2wpOworICAgICAgICBQYXJzZXJFcnJvciYs
IFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRl
JiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSwxMCAr
MTI3LDkgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkp
OyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50
Jik7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTgsNyArMTU5
LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsg
Ly8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAg
IHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpcyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggOWVlNjExMWNjM2QwN2Y2
MzQ0Yzk1ZTA4ZjJkZWU5ZGZjODA2NTRjMi4uMTEwNGUxOGVkMzYwZGFmM2U4NzBkOTczOGUyMDFh
YWRlYTBkNDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCkBAIC0xOTgsNyArMTk5
LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgLy8g
b3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBhIGNhbGws
IHdoaWNoIGFyZSBub3QKICAgICAvLyBjb21wYXRpYmxlIHdpdGggdGFpbCBjYWxscyAod2UgaGF2
ZSBubyB3YXkgb2YgZW1pdHRpbmcgb3BfZGlkX2NhbGwpLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKLSAgICAsIG1faW5UYWlsUG9zaXRpb24o
T3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1f
c2hvdWxkRW1pdFByb2ZpbGVIb29rcykKKyAgICAvLworICAgIC8vIEluIGEgY29udGV4dCBvZiBh
IGdlbmVyYXRvciwgYWxsIHRoZSBjYWxscyBjYW5ub3QgYmUgdGFpbCBjYWxscyBiZWNhdXNlIGFs
bCB0aGUgcmVzdWx0cyB3aWxsIGJlIHdyYXBwZWQgYXMgYW4gaXRlcmF0b3IgcmVzdWx0LgorICAg
IC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWlzaW50
YWlscG9zaXRpb24KKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxz
KCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1pdFByb2ZpbGVIb29r
cyAmJiBwYXJzZU1vZGUoKSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCiB7CiAg
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0
ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTI1MSwyOSArMjU1
LDc1IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxs
b2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4
KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCi0gICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShm
dW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7Ci0g
ICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhj
b2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwotICAgICAg
ICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlk
ZW50KCkuaW1wbCgpKTsKLSAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Nj
b3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7Ci0gICAgICAgIGVtaXRQdXNoRnVuY3Rpb25O
YW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0Fz
Q2FwdHVyZWQpOwotICAgIH0KLSAgICAKLSAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRo
aW5ncykgewotICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7
Ci0gICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2Ug
ZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQotICAg
ICAgICAvLyBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucywgd2UgaGF2ZSB0byBob2xkIG9m
ZiBvbiBhbGxvY2F0aW5nIHRoZSAidmFyIiBlbnZpcm9ubWVudCBiZWNhdXNlCi0gICAgICAgIC8v
IHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0
ZXIgZW52aXJvbm1lbnQuCi0gICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1l
dGVyVmFsdWVzKCkpCi0gICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50
KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7Ci0gICAgfQogCi0gICAgLy8gTWFrZSBzdXJlIHRo
ZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ug
c3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5v
dGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGluaXRpYWxpemVO
ZXh0UGFyYW1ldGVyKCk7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNvZGVCbG9j
ay0+cGFyc2VNb2RlKCk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpIHsKKyAgICAgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRp
b24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9u
IGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisKKyAgICAgICAgLy8gQWxsIHRoZSBwYXJhbWV0ZXJzIGZv
ciBhIGdlbmVyYXRvciBzaG91bGQgbm8gYmVjb21lIGhlYXAgdmFyaWFibGUuIFNvIHdlIGNhbiBp
bml0aWFsaXplIHRoZW0gaGVyZS4KKyAgICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgYXJlIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUpLgorICAgICAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEp
OyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICAgICAgbV90aGlzUmVnaXN0ZXIuc2V0
SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworCisgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgJm1fcGFyYW1ldGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzKCkgPT0gR2Vu
ZXJhdG9yVGhpczo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhp
c1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBA
Z2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJh
dG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdl
IHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5n
IGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdz
IHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRg
IGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVy
YXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gQ29tcGxldGVkIHN0YXRlLgorICAg
ICAgICAvLyBXZSBqdW1wIHRvIHRoZSBtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsIGltbWVkaWF0
ZWx5IGJlY2F1c2Ugd2UgY2Fubm90IHVzZSBhbnkgdGVtcG9yYXJ5IHJlZ2lzdGVycyBoZXJlLgor
ICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBtX2dlbmVyYXRvckNv
bXBsZXRlZExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAobV9nZW5lcmF0b3JD
b21wbGV0ZWRMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgLy8gRXhlY3V0aW5nIHN0YXRlLgorICAg
ICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRl
LgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgICAgIGlmIChzaG91bGRDYXB0dXJl
U29tZU9mVGhlVGhpbmdzKSB7CisgICAgICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyID0gYWRkVmFyKCk7CisgICAgICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIi
IGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lv
bnMuIElmIHdlIGhhdmUKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Np
b25zLCB3ZSBoYXZlIHRvIGhvbGQgb2ZmIG9uIGFsbG9jYXRpbmcgdGhlICJ2YXIiIGVudmlyb25t
ZW50IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIi
IGVudmlyb25tZW50IGlzIHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBp
ZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQorICAgICAgICAgICAg
ICAgIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChmdW5jdGlvbk5hbWVJ
c0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9k
ZSgpKSkgeworICAgICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNj
b3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSk7CisgICAgICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJl
cyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGJvb2wgbWFya0Fz
Q2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOworICAg
ICAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCks
ICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgeworICAgICAgICAgICAgbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICAgICAgLy8gV2UgY2Fu
IGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQg
cGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCisgICAgICAgICAgICAvLyBkZWZhdWx0
IHBhcmFtZXRlciBleHByZXNzaW9ucywgd2UgaGF2ZSB0byBob2xkIG9mZiBvbiBhbGxvY2F0aW5n
IHRoZSAidmFyIiBlbnZpcm9ubWVudCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgcGFyZW50
IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25t
ZW50LgorICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1
ZXMoKSkKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQg
bWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgICAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJp
bmcgYXJlIG5vdGVkLgorICAgICAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUo
KSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICAgICAgbV90aGlzUmVnaXN0
ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KICAgICAKICAg
ICAvLyBGaWd1cmUgb3V0IHNvbWUgaW50ZXJlc3RpbmcgZmFjdHMgYWJvdXQgb3VyIGFyZ3VtZW50
cy4KICAgICBib29sIGNhcHR1cmVzQW55QXJndW1lbnRCeU5hbWUgPSBmYWxzZTsKQEAgLTQ2MCw3
ICs1MTAsMzYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2Rl
QmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAg
ICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOwor
ICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CisgICAgICAgICAgICBlbWl0TW92ZShtX25l
d1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAgaWYgKGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgICAgICAg
ICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAg
ICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEV2ZW4gaWYgaXQncyBub3QgY2FsbGVkIHdp
dGggYG5ld2AsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHByb2R1Y2VzIGEgZ2VuZXJhdG9yIHdpdGgg
YGNyZWF0ZV90aGlzYC4KKyAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
ICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIC8vIHx0aGlzfCBp
cyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewog
ICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVy
KTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQpCkBAIC00NzYsOSArNTU1LDggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAg
ICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlz
UmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJh
ZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1l
dGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC0yMjk0
LDEyICsyMzcyLDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXNzZXJ0
KFJlZ2lzdGVySUQqIGNvbmRpdGlvbiwgaW50IGxpbmUpCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KQogewogICAgIHNpemVfdCBi
ZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIuY3JlYXRlVGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiArIDMpOworICAgIG1f
c3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAz
KTsKIAogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CiAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7IAotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCi0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIHJldHVybiBkc3Q7CkBAIC0yNDUzLDIwICsyNTMxLDYg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJheShSZWdpc3RlcklE
KiBkc3QsIEVsZW1lbnROb2RlKiBlbGVtZW4KICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQotewotICAgIHJldHVybiBlbWl0TmV3RnVu
Y3Rpb25JbnRlcm5hbChkc3QsIG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0
aW9uKGZ1bmN0aW9uKSkpOwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCkKLXsK
LSAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3Rlcigp
LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwotICAgIHJldHVy
biBkc3Q7Ci19Ci0KIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UmVnRXhw
KFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiB7CiAgICAgZW1pdE9wY29kZShvcF9u
ZXdfcmVnZXhwKTsKQEAgLTI0NzUsMTMgKzI1MzksMjUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkK
ICAgICByZXR1cm4gZHN0OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVu
Y3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBmdW5jLCBPcGNv
ZGVJRCBvcGNvZGVJRCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBmdW5jKQog
ewotCi0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCB8fCBvcGNvZGVJRCA9
PSBvcF9uZXdfYXJyb3dfZnVuY19leHApOwotICAgIAogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBmdW5jdGlvbiA9IGZ1bmMtPm1ldGFkYXRhKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworCisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBvcF9uZXdfZnVuY19leHA7CisgICAgc3dpdGNoIChmdW5jdGlv
bi0+cGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hcnJvd19mdW5jX2V4
cDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIH0KICAgICAKICAgICBlbWl0T3Bjb2RlKG9wY29kZUlEKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTI0OTQsMTcgKzI1NzAsMTggQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQq
IGRzdCwgQmFzZUZ1bmNFeHByTm9kZSoKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUq
IGZ1bmMpCiB7Ci0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Z1
bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYyk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEFycm93RnVuY0V4
cHJOb2RlKiBmdW5jKQogeworICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKICAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvciA9IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0
b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIGlmIChpc0NsYXNzQ29uc3Ry
dWN0b3IpCisgICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvciB8fCBnZW5lcmF0b3JUaGlzKCkgPT0g
R2VuZXJhdG9yVGhpczo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlzUmVnaXN0ZXIo
KSk7CiAgICAgCi0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwg
ZnVuYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjUyMiw2ICsyNTk5LDE5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lz
dGVySUQqIGRzdCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJs
b2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgaWYgKGZ1
bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZSkKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVs
c2UKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVn
aXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKKyAg
ICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4
cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2Fs
bCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMzc0OCw2ICszODM4LDI0IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogaXRlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQoreworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQg
PSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5u
ZXh0KTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRy
LCAxKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRl
cmF0b3IpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIo
MCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0LmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQo
KSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVs
PiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAg
ICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmpl
Y3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBkb25lID0g
bmV3TGFiZWwoKTsKQEAgLTM4MTMsNCArMzkyMSwyMzkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6aW52YWxpZGF0ZUZvckluQ29udGV4dEZvckxvY2FsKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0
ZXIKICAgICB9CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKG1f
Z2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0
ZXJhdG9yUmVzdWx0ID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGFyZ3VtZW50LCBm
YWxzZSk7CisgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgZW1pdFJldHVybihpdGVyYXRv
clJlc3VsdC5nZXQoKSk7CisKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIGVt
aXRPcGNvZGUob3BfcmVzdW1lKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0
b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVj
dXRpbmcpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBl
bWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFs
TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJl
bC5nZXQoKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwor
ICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpU
aHJvd01vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dM
YWJlbC5nZXQoKSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7CisgICAgICAgIGlmIChpc0luRmluYWxseUJs
b2NrKCkpIHsKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9y
YXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMo
c2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVy
LmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBUaHJvdy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJl
bC5nZXQoKSk7CisgICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAg
ICAvLyBOb3JtYWwuCisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91
cyA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2FkKHByZXZpb3VzLmdldCgpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0
aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCks
IGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRv
ci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5k
aXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICB9CisKKyAgICAgICAgUmVm
UHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFJlZlB0cjxMYWJlbD4gbmV4dEVsZW1lbnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbWl0
TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1w
KG5leHRFbGVtZW50LmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3Rh
cnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7
CisgICAgICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5z
aXplKCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3Vs
dCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCB2YWx1ZS5nZXQoKSwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAg
ICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpH
ZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1p
dEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKSk7CisgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQo
KSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcigyKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybi4KKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5G
cm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwg
aXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jh
cnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0
aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVy
bkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCks
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0
Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JS
ZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TmV3SXRlcmF0b3JS
ZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCBy
ZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBv
cFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0
ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZW1p
dExhYmVsKHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVz
dWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IC8vIFRocm93LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhy
b3dNZXRob2ROb3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBp
dGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwg
dGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAg
ICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0
dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIHRocm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwg
cmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5v
dEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRl
cmF0b3IuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoQVNDSUlMaXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhy
b3cnIG1ldGhvZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
Tm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxl
bWVudC5nZXQoKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgp
LCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUu
Z2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcChs
b29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVtaXRM
YWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsK
K30KKworCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVz
dWx0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgZG9uZSkKK3sKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZHN0OworICAgIGlmICghZHN0IHx8IGRzdCA9
PSB2YWx1ZSkKKyAgICAgICAgcmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5ld09i
amVjdChyZXN1bHQuZ2V0KCkpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwg
cHJvcGVydHlOYW1lcygpLmRvbmUsIGVtaXRMb2FkKG51bGxwdHIsIGpzQm9vbGVhbihkb25lKSks
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3Vs
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlLCB2YWx1ZSwgUHJvcGVydHlOb2RlOjpLbm93
bkRpcmVjdCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKK30KKwordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAg
UmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JS
ZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29t
cGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9y
U3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFiZWwo
bGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRv
cihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHdlIGNhbm5v
dCBlbWl0IGBicmVha2AuCisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRj
aEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihM
YWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dp
dGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVM
YXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsg
MV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1
Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5i
aW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVC
bG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0g
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBq
dW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVs
cyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3Vs
ZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRv
clJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGks
IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7CisgICAgfQorCisgICAgZW1pdExhYmVsKG1fZ2VuZXJhdG9yQ29tcGxldGVk
TGFiZWwuZ2V0KCkpOworICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoY29u
ZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAvLyBSZXR1cm4uCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9
IGVtaXROZXdJdGVyYXRvclJlc3VsdChuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICAgICAgZW1pdFJldHVybihpdGVyYXRvclJl
c3VsdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgZW1p
dExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3YjkwNDkwZGQ5NDlhNDdhYmEuLjdlNGI3NzNk
MWNiMWRhMzdiNGMyNWVjM2NiNjBiMWQ3YzJmMmZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAt
MjgwLDYgKzI4MSw3IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0
cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCk7IH0KIAogICAgICAgICBQ
YXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiArMjk5LDggQEAKIAogICAgICAgICBS
ZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAK
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVy
YXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUg
dGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3
VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzog
YW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVy
ZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAtNDk5LDEwICs1MDMsOCBAQAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSos
IHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChS
ZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVu
Yyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0
ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwotICAg
ICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHBy
Tm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rp
b25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAg
LTU5Niw2ICs1OTgsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICBib29s
IGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJik7CkBAIC02NDIs
MTIgKzY0NSwyNSBAQAogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0
Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xh
dXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVs
dExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNo
YW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lz
dGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiwgUmVnaXN0ZXJJ
RCosIGJvb2wpOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKKyAg
ICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzJdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKwogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIAogICAg
ICAgICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQ
cm9maWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0
dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9
CisKKyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApAQCAt
NjY1LDYgKzY4MSw3IEBACiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQg
ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1
bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSopOwog
CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZp
cm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29u
c3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpAQCAtNzU0LDggKzc3MSwxMSBAQAog
ICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0
QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRh
ZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKICAgICAg
ICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworICAgICAgICAgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzID0gR2VuZXJh
dG9yVGhpczo6Tm9uRW1wdHk7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6OkVtcHR5OwogCi0gICAgICAgICAgICBy
ZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9k
ZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2
YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCB2YXJpYWJsZXNV
bmRlclREWik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERa
KFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTc3NCw2ICs3OTQsOCBAQAogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAKKyAgICAg
ICAgTGFiZWwqIGdlbmVyYXRvckNvbXBsZXRlZExhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9nZW5l
cmF0b3JDb21wbGV0ZWRMYWJlbC5nZXQoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2luc3Ry
dWN0aW9uczsKIApAQCAtODAyLDYgKzgyNCw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIG1fdG9w
TW9zdFNjb3BlIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2FyZ3VtZW50c1Jl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2xleGljYWxFbnZpcm9u
bWVudFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2dlbmVyYXRv
clJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVS
ZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RS
ZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdp
c3RlciB7IG51bGxwdHIgfTsKQEAgLTgyNSw2ICs4NDgsOCBAQAogICAgICAgICBWZWN0b3I8U3dp
dGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9y
PFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOworICAgICAgICBSZWZQdHI8TGFiZWw+IG1f
Z2VuZXJhdG9yQ29tcGxldGVkTGFiZWw7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBt
X2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlw
ZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlh
YmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBG
dW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBi
b29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODcz
ZjRhYjQ0MjQwNzBkYzdmZDg2NjMxYWM0NWExNGRjMTVlMTgyZi4uODU1YTMzODdjY2MzNThkMWM3
OWNhMzg3MTBlODNiYzQyNjYzZTNkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgi
CkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJ
RCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8
IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
CisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVy
YXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMjU4MywxMyArMjU4NCwyNyBAQCB2b2lkIFJl
dHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVy
ID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1
ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBudWxscHRyOworICAgIGlmIChtX3ZhbHVlKSB7
CisgICAgICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpOwor
ICAgIH0gZWxzZQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChk
c3QsIGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIHJldHVyblJlZ2lzdGVyID0g
Z2VuZXJhdG9yLmVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCByZXR1cm5SZWdpc3Rlci5n
ZXQoKSwgdHJ1ZSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJlZ2lz
dGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQsIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxseUJs
b2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0UG9wU2NvcGVzKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIDApOwogICAg
IH0KIAorICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRl
OjpDb21wbGV0ZWQpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNh
bGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhlbmRPZmZzZXQoKSk7IApAQCAtMjk2NiwyNiAr
Mjk4MSw4OCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwg
c3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5l
cmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSog
c2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9k
ZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAg
ICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7
CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8
RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9u
Tm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHIt
PmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3Rh
dGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1
cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmds
ZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNC
bG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0g
c3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgp
OwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxv
Y2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0
PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQo
KSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
aXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlz
IG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJl
dHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1
Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAs
IGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1p
dCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRo
ZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdGlhbCkpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUs
IGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgUHJv
ZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQg
ZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUg
dXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5l
U3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2
ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCks
IGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yQm9keUxh
YmVsLmdldCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNo
YW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JT
dGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZ2VuZXJh
dG9yLmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworICAgICAgICBUcnlE
YXRhKiB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgp
KTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZG9uZS5nZXQoKSk7CisK
KyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBnZW5lcmF0b3IuZW1pdExhYmVsKGdl
bmVyYXRvci5uZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4
Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBleGNl
cHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgY2F0Y2hIZXJl
LmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVy
bihnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSwgdHJ1ZSkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBk
ZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVT
dGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9kZSog
cmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVu
dCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCisg
ICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkp
IHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3Rh
dGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwor
ICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJs
b2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGlj
X2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5z
ZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CisgICAgICAgICAgICBSZWdpc3Rl
cklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rp
b25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRo
aXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisg
ICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxh
c3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogfQogCkBAIC0zMDEzLDExICszMDkwLDI0
IEBAIFJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIFJlZ2lzdGVySUQqIFlpZWxkRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGlu
ZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQgaXQuCi0gICAgZ2VuZXJhdG9y
LmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikp
OworICAgIGlmICghZGVsZWdhdGUoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJn
ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgIGFyZyA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFy
ZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCkp
OworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CisgICAgfQorICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREZWxlZ2F0ZVlpZWxkKGFyZy5nZXQoKSwg
dGhpcyk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBjZDY4NmI3MmFkZDRiNDhkOWE2MzZjMzRmZjA5YWJmZWJkODQ4NWVlLi41ZTI1NDEzYjhkODQ4
N2I1ZjU1NWRmOTIzMmE0MjhhMjNjNzVlNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yMTMsNiArMjEzLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50cykKICAgICAg
ICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkK
KyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9i
eV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI1OSw2ICsyNjEsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQog
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggZTk2ODI5MmFiNzAyNGE4YzJhZmVhZmZkMGZlNDU5MmNj
ODUzNjQ3MC4uMDkxODY0N2U2YTFhMDU3ZWI3OTQ4M2Y0ZmQzYTIzNGM2YzVhN2E4MiAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0
X29wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJ
bnN0cnVjdGlvbiopOwpAQCAtNTQxLDYgKzU0Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwpAQCAt
NjYwLDYgKzY2NCw3IEBACiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24q
LCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2Uo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vu
c2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MpOwogICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBpbnQgc2NvcGUs
IGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGMxYmI3NDNmY2I3ZTJjZGZiMGEy
ZGM3ZDFkOGQzOTQ5N2Y4NjIwYzguLmQyNjgzOGFkZjA4MzVkMmUyZTM1MzY4ZGIxMWVjMzk0YmMw
YzdhOTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTY3
LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwg
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbV9jb2RlQmxvY2stPnJlZ2V4cChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25l
d19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5l
d0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1w
IGxhenlKdW1wOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpAQCAtOTc4LDE0ICs5NzgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2VuZGlmCiAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5j
dGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworCisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBt
X3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29k
ZSk7CisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jKQorICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3Qs
IHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmNDb21t
b24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
ZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVt
aXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1
cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAxOCwxMSArMTAzMCwyNyBAQCB2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAjZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsKICNlbmRpZgotICAgIGVs
c2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3
X2Z1bmMpCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlv
bik7CisgICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTEzOTksNiArMTQyNywxOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkw
NjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQ
cm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlND
ZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUt
PmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cisg
ICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVu
Y3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUo
dm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSks
IHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAg
IEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1
bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29w
ZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihl
eGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAg
ICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlz
SW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5j
dGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0
ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpA
QCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBvcGVy
YXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZjZjNTdmM2QxY2I3ZTQ1
NjIyNjM2MmE5MmEwZmQwOTk0MDU5OWQ0NS4uY2FlMDQyYTBhMGI0NTA2OWViMDRjMjBiNWY0NzVl
ZWVkZDQ0MjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTI5OSw2ICsyOTksOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3Bl
KiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
RXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1
Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
SlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQy
LDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNj
b3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0g
RnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhh
c0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBj
WzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RS
QUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9S
RVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0u
dS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisg
ICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJv
d19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBh
NGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
OTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0
Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1
bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggODQ5YjJkNzUzMzIwMzFhMGU2Yzc0ODg1MTExMjIwZGIyYTdkMDlhNC4uN2I2NzNk
MjlkYjUyYTFmZDg4MWY0ZTA1MmNjOWNlNWE3ZmRkYWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIyNyw2ICsx
MjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGlu
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRj
aCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2
NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRj
aCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHAp
CkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgz
KQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Jl
c3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
cmVzdW1lKQorICAgIGRpc3BhdGNoKDIpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2M4NWFjMGNiODM4NzUyNDM4MjJkMWJkMDEzYTNmNzkz
Y2U3ZDlhOS4uODZlZDQ4ZWIwYWYwMDgyZjBmOGEzMDk0ZmZhNDkxY2U2ZmI4M2VlMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MCw5ICszNDAsMTEg
QEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsK
ICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUp
CisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAg
ICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5v
ZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAg
ICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJv
bm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAg
LTM2MywxMiArMzY1LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBt
X3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5
MzkzMzhjZTUwLi4yZGNhNzI0YzY1OTFlMWI2OTIzNTA2ZTlhNTk3OGViYWM1MGIwNzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZv
aWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2Rl
IG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1f
c3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1u
KQpAQCAtMTYzLDcgKzE2Myw2IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxl
cyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgICAgICwg
bV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJp
Y3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJy
b3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9y
S2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggY2RlNDlhOWI2YTYwNDU2OThlYmViZDRkMDlh
N2VjYjNhZTkyZmMzNC4uMWU4MmNkODc4Yjg2YTAxODdlYWJkNGVlYTZiMzg2NzRiNzQyYTYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgxMiw3ICsxODEyLDcgQEAK
ICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM4LDcgKzE4Mzgs
NiBAQAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwg
dW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkK
QEAgLTE4NjUsNyArMTg2NCw2IEBACiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9k
ZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93
RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0xOTI3LDcgKzE5MjUsNyBAQAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB9OwogCi0gICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFlpZWxkRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDM3NGJjYjJjYjM1YjA1NDdiYTVkMzlmNDUxMzk1Mzcx
Nzk0M2Y0MWQuLjgyODJkM2M4MTk4YWQzOWY3ZjJkOTc0Mzk1ZWIwYjg1MDFlZmMzZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0Nyw3ICsyNDcsMTAgQEAK
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CisgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAg
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhj
b250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjcx
LDggKzI3NCwxMiBAQAogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVu
Y3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAg
ICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9k
ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7CkBAIC00NTYsNiArNDYzLDQ1IEBACiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOworCisgICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0
b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50
IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTs7CisgICAgaW5mby5zdGFydE9m
ZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKKyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgp
OworICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1
ZSwgdHlwZQorCisgICAgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNj
b3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRT
b3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAg
U3ludGF4Q2hlY2tlciBnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1f
dm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVt
ZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBi
b2R5IG9mIGEgZ2VuZXJhdG9yIik7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29w
ZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8u
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5l
KCk7CisgICAgaW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgaW5m
by5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1dG8gZnVuY3Rpb25FeHBy
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5mbyk7CisgICAg
YXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlv
biwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKKyAg
ICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKwor
ICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwg
Y29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTU1
NCwxMyArMTYwMCwxMiBAQAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAog
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9k
eVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogewotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRh
cmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
OwogICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4
dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50
LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTU3Miw3ICsxNjE3LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2Rl
KSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2Ug
Ym9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93
IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRv
a2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29u
c3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0
ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCkBAIC0xNTg4LDYgKzE2MzMsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gIm1ldGhv
ZCI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAgICAgIHJl
dHVybiAiZ2VuZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFy
cm93IGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBA
IC0xNjY2LDYgKzE3MTMsMzcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0g
Y29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlv
biA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsK
KyAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24s
IHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisKKyAg
ICAvLyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0
YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBA
Z2VuZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJh
dG9yUmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1
bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDAp
OworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVp
cmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0lu
Q29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJp
bmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFy
c2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0xNzc2LDEyICsxODU0LDEwIEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVT
dGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1f
dG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAg
ICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JL
aW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAg
ZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAg
ICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZv
LT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9y
ZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShm
dW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE3
OTUsNyArMTg3MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90
b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0g
Y2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5j
dGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlB
cnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5j
dGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlw
ZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODE3LDE0ICsxODkzLDI0IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1v
ZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAg
ICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9u
SW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3Rh
cnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rp
b25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQs
IHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJv
ZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAg
ICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgewor
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29w
ZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkg
PSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0
b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0g
ZWxzZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25C
b2R5KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxz
ZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVu
Y3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0
aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFt
ZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5j
dGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5j
dGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTg5Miw3ICsxOTc4LDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlv
bk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVT
KSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOwor
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBG
dW5jdGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNl
IHRoaXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1
bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA0Myw3ICsyMTI5LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAg
ICAgICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAg
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3Rv
dHlwZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0
b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjc4Nyw2ICsyODcz
LDcgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQ
aGFzZSA9PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gd2l0aGluIHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBT
YXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAt
Mjc5NCwxMyArMjg4MSwxNCBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0ZSA9IGNvbnN1
bWUoVElNRVMpOworICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0
UG9zaXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAgICAgICByZXN0
b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZvdFN0
YXJ0LCBhcmd1bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTI5ODksNyArMzA3Nyw3IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5M
b2NhdGlvbiBtZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1l
dGhvZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVp
bGRlcj4gbWV0aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5l
cmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9y
ID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJ
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlz
IG1ldGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsK
QEAgLTMyNDIsNyArMzMzMCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9w
KEpTVG9rZW5UeXBlIHRva2VuKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRP
UlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9k
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbklu
Zm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZTIxM2UwNzJmYjgw
ZTc0OGY4NTYyNWE2NzM4Y2QxN2VjYTE2ZjA5Mi4uNTg1ZjhjNDdiNDFjMjYwZDNjYWUwYWIzYzA3
ZGYwYTZmZjE4YjAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0y
NDMsNiArMjQzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAobW9k
ZSkgewogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICAgICAg
ICAgIHNldElzR2VuZXJhdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTExMyw2ICsx
MTE0LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVC
dWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2
ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBk
aXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51
bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTc1LDYg
KzExNzcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5j
dGlvblJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFy
c2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNs
YXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVu
dHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEy
OWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEwYzAyOWNiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ3LDYg
KzQ3LDcgQEAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3JtYWxGdW5jdGlv
bk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlvbk1vZGUsCiAg
ICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUsCkBAIC02MSw2
ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToK
QEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNWQzOTNhM2Rh
N2U3ZTU5ZGI4NmU2M2NkYmZhZGZkOTk1YTUxZTljOS4uZGQwYTBlMDYxNmIzYTI4YWE2MDlkNDdm
YWUyYzE4NjgyYjllYTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKQEAgLTE3OSwxMCArMTc5LDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikg
eyByZXR1cm4gWWllbGRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxk
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVs
ZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkg
eyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50
YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJl
c3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsg
cmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFy
cm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZv
aWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1
bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMw
ZjY5Y2RjN2NiZWRmMGUuLmIzOGJmOTVlZDkwMTUxNWY5ZWE0ZGViODZiYmExNzYwMGM1NDBkZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTg4
LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1
bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVu
ZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlv
biBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8g
dmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1w
dHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENv
bnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGVt
cHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNl
dCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsK
IAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIw
MTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2EzYjMzYjEuLmRlMDdmMWM1MWI1NTEyZGNjYWI5YjAyNDhm
M2ZkODFiZjFiNGFiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBc
CiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNy
byhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8o
SW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTMgQEAKICAgICBtYWNy
byhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZs
b2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVyYXRvcikgXAorICAgIG1hY3JvKGdlbmVyYXRv
ck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRv
ckZyYW1lKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggYzRmNmMyMmM3NTQ4ODkxOTBjYmYxMWI0NWE0OTE0YmNhZjc5OTkxMS4u
MjJiYzM5NWQ2M2I1ZTRhY2YwZWZiMGM4MWMyYjhhMTJjOTJiMGQ3NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY0NCw2ICs2NDUsMzQgQEAgc3Rh
dGljIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGEqIHNldHVwQXJpdHlDaGVja0RhdGEo
Vk0mIHZtLCBpbnQgc2xvdHNUb0EKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NhdmUpCit7CisgICAgLy8gT25seSBzYXZlcyB2YXJpYWJsZXMgYW5kIHRlbXBvcmFy
eSByZWdpc3RlcnMuIHx0aGlzfCwgfHNjb3BlfCByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRo
ZW0uCisgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUg
Z2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVy
cyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KKyAgICBCRUdJTigpOworICAgIEpTVmFs
dWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFt
ZSA9IG51bGxwdHI7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yKTsKKyAgICBpZiAo
Z2VuZXJhdG9yLmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2Vu
ZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgc2xvdCkpCisgICAgICAgIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oc2xvdC5nZXRWYWx1ZShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIGVsc2UgeworICAgICAgICBmcmFtZSA9
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIChleGVjLT5yZWdpc3RlcnMoKSAt
IDEpIC0gZXhlYy0+dG9wT2ZGcmFtZSgpICsgMSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAg
YXNPYmplY3QoZ2VuZXJhdG9yKS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQor
ICAgIGZyYW1lLT5zYXZlKGV4ZWMpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3Ig
PSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIGZyYW1lLT5yZXN1bWUoZXhlYyk7Cisg
ICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiMGJhOWU4ZGExZTEzNTBlY2VlYWNjODFk
MjdiYzhjYTJiMzlkZGRkLi4yMWRiZWEzZjRjN2Y1NmZmYWI1YWY1MDQ1ZjM4OTFhMzI2OTk0NjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJl
dHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdh
NDBkMzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhhOTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0ZTc3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5
OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zv
cigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAog
ICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxv
Y2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1
Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+
aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkp
OwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0
YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRh
YmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5
NzEyNmI2MGZkN2IwYzM0MGEwNC4uZDdmNzRhNWE5NDZjYzdjZTk3NTQ5OGU0MTBkMjQ0YmMyNzI4
MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAt
NDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlw
dEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBu
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAg
CiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0
cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRv
clRoaXM6Ok5vbkVtcHR5LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1NDIsNyBA
QCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0
ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7
IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVj
dEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBj
b25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90
IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBh
cmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0
ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVlYTE0
Yjk2MjZhNWExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
bikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZp
ZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3Np
dGlvbiYgcG9zaXRpb24sIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxl
ZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBz
b3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUs
IHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Ms
IAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxp
bmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRl
TGluZU51bWJlciwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5
IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUw
LgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCks
ICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24g
IiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAg
ICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8g
IioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1
bmN0aW9uICIpOworICAgICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5n
KCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgs
OSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2so
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIGJvb2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFu
b255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAg
IHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpLCBpc0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
CmluZGV4IDIyZWNiNTdiOTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRjZDIw
Yjc2MzFjMTc5ZmRlMDJhYTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1Niwx
MiBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
fTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBB
cmdMaXN0Jik7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBib29s
IGlzR2VuZXJhdG9yID0gZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0b3Ig
PSBmYWxzZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3RyaW5n
JiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEp
OworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJy
aWRlTGluZU51bWJlciA9IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZGViYWM5NTYyM2YxZmM1ODBhY2NlMWMxNTdkMDQz
MzczNmI3YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFt
ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJh
dG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgdmFyaWFibGVzU2l6ZSkKKyAgICA6IEJhc2Uodm0sIHZt
LmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQorICAgICwgbV92YXJpYWJsZXNTaXplKHZh
cmlhYmxlc1NpemUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFt
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPm1fdmFyaWFibGVzU2l6
ZSk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0dlbmVy
YXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9m
VmFyaWFibGVzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQorICAgICAgICBuZXcg
KAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0
b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JWYXJpYWJsZXMobnVtYmVyT2ZWYXJp
YWJsZXMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBSZWdp
c3RlciogcmVnID0gZXhlYy0+cmVnaXN0ZXJzKCkgLSAxOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV92YXJpYWJsZXNTaXplOyArK2kpCisgICAgICAgIHZhcmlhYmxlQXQoaSkuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIHJlZ1staV0uanNWYWx1ZSgpKTsKK30KKwordm9pZCBHZW5lcmF0b3JG
cmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBSZWdpc3RlciogcmVnID0gZXhl
Yy0+cmVnaXN0ZXJzKCkgLSAxOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJs
ZXNTaXplOyArK2kpCisgICAgICAgIHJlZ1staV0gPSB2YXJpYWJsZUF0KGkpLmdldCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MThhMzU0MTBhMzViMmY1NTdjYzU2NDE1MjUy
MzFiMTFiMWJhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKKwor
I2luY2x1ZGUgIkpTQ2VsbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9y
RnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJM
RShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZy
aWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZN
OworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5l
cmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mVmFyaWFibGVzKTsKKworICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHZhcmlhYmxlcygpCisgICAgeworICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZWYXJpYWJsZXMoKSk7CisgICAgfQorCisgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiYgdmFyaWFibGVBdChzaXplX3QgaW5kZXgpCisgICAgewor
ICAgICAgICByZXR1cm4gdmFyaWFibGVzKClbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZWYXJpYWJsZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdl
bmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZh
cmlhYmxlKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlZhcmlh
YmxlcygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yVmFyaWFibGVzKHVuc2lnbmVkIG51
bWJlck9mVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mVmFyaWFibGVz
KCkgKyBudW1iZXJPZlZhcmlhYmxlcyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBzYXZlKEV4ZWNTdGF0
ZSopOworICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSopOworCitwcml2YXRlOgorICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgc2l6ZV90IHZhcmlhYmxlc1NpemUpOworCisgICAgc2l6ZV90IG1fdmFy
aWFibGVzU2l6ZTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
K3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRv
ckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdjZDNlZDAy
NWJlYTkyN2Y2MDUzNmEzOTliZWRjODM3MTJhMzk2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUg
IkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9Owor
CitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
ICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2Yg
YXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhl
Yyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBh
c0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywg
LyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7
CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIz
ZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisj
ZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwor
CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisg
ICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4ZjJlMzFiZDMxMWI5MmU0
Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3
NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitw
cml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0
NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5
cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8q
IFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJv
dG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAg
ICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2Vu
ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdT
eW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsK
KyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVy
YXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJh
dG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5l
cmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVy
YXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBH
ZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5
cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clRoaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42M2FkMmVhNjM2YzUyNGQ5NWYyZDAzZjdkZDAzNGY4ZDc1NWRlODBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhp
cy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisg
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWQor
ICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc19oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNf
aAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBHZW5lcmF0b3JUaGlzIDogdW5zaWdu
ZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5l
cmF0b3JUaGlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBj
MGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAg
ICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOworICAgICAgICAg
ICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5
cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAg
ICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdl
dERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmli
dXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Y2JjZTAyZDY2MjkwNWUwZWNiNzhhNzZmY2M4
NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0
aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dl
bmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1
bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9y
RnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJh
dG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0s
IGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVj
dHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJh
dG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0
b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxl
LCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3Jp
dGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlv
biIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5j
dGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNT
Y29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNj
b3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVhOWQzOTU2
MWMyN2I1OTY3Yzk4YTczOTJjYTk3YzAxOTI2MTBjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9o
CisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBK
U0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3Vs
YXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAg
ICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7
CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7CisgICAgICAgIENv
bXBsZXRlZCwKKyAgICAgICAgRXhlY3V0aW5nLAorICAgICAgICBJbml0aWFsCisgICAgfTsKKwor
ICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBO
b3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSwKKyAgICAgICAgVGhyb3dNb2RlCisg
ICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRp
YyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxp
bmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHks
ICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3JGdW5j
dGlvbik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5j
dGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSlNHZW5lcmF0b3JGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
KTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNH
ZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2JhNWFjMWFhMDU4YWMzOWVlNmU5NjI1MjVhNDdjYzg2
OGIxMjg5MS4uN2YxYTkyMzcyYjgzMmM0NDI2ZjBkMWRkYWI1NzQ4YjJiM2MyODA5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3
NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90
b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0z
ODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAg
ICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQ
RV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBF
X0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxMSBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iu
c2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5h
dGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlM
aXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZl
RXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVy
YWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJ
RXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAog
ICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7
CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250
RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24sIGZ1bmN0
aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVuY3Rpb24sIGdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkV2YWxFcnJvciwgbV9l
dmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwpAQCAtODE3LDYgKzgyOCw4IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2Nv
cGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29w
ZVN0cnVjdHVyZSk7CkBAIC04NDksNiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1
MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYz
LDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
OwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7Citj
bGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNs
YXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsK
ICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7Cisg
ICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1f
Z2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1
Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNj
b3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1f
ZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1
Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00
NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90
eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0
KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3Rv
dHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90
b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVT
dHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAg
IFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRi
ODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQz
NjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNp
bmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMg
Ym9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9j
YXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVU
YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKKyAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0
aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywg
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkz
Y2E2MjllOGU2OGQyYjgxZTYuLjU1NzdhODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGlu
ZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9u
UmFyZURhdGFTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCAyODVjNWY5OGY0OTUzOTI4ZTY3NDMzZjhjMjY2YTli
YmExNTBmN2E3Li5kNjY4Zjg2ZmZlODdlMzVkNDAxNGE4M2NkOGRkZmJlMWIxMzc1M2I4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC03MTUsNyArNzE1LDcgQEAKIC0gcGF0
aDogZXM2L0FycmF5X2lzX3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwog
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJy
YXkuZnJvbV9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNf
aXRlcmFibGVzLmpzCkBAIC03MjMsNyArNzIzLDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21faXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVu
Y3Rpb25fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5m
cm9tX21hcF9mdW5jdGlvbl9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rp
b25faW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtNzQ5LDcgKzc0OSw3IEBACiAtIHBhdGg6
IGVzNi9kZXN0cnVjdHVyaW5nX25lc3RlZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0
cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwK
IC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVy
YWJsZXMuanMKQEAgLTc1OSw3ICs3NTksNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19p
dGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3Bz
X3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMK
QEAgLTc5OSw1NSArNzk5LDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5
X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
XyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUu
cmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRo
X25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4
cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9n
ZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9k
c19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0b3Jf
bWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJs
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9v
bl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3Npbmcu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNp
ZXNdLmpzCkBAIC0xMTAxLDcgKzExMDEsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVy
YXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNt
ZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dl
bmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJh
eXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMK
aW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2
MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJs
ZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVv
ZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0
aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0
aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wu
aXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9y
ID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0
KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sn
cmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUg
PSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRl
cmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFy
IGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2Vz
X29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1Mzkz
MjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0
YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
bnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xv
YmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBf
X2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMg
fHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJh
dG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsK
KyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBk
b25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVy
biddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307
CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9y
OyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVy
YXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0
MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpAQCAt
MSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBn
bG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1l
dGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09
ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIu
bGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0s
CisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhy
b3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9
IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBm
dW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9j
bG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0
YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2Rh
MWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Ro
cm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQgQEAK
K2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7
Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0
aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8
fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3Zh
ciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6
IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6
IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFy
IGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsg
cmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1z
eW50YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2NWNlYjFmNDM2YzAyZTM2ZDhiMGFjNWJhN2RlMzI1NTU3
NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1
bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3Jp
cHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9m
IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIg
KyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihz
Y3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5n
KGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBDb2NvYSB7CisgICAgKmNv
bnN0cnVjdG9yKCkKKyAgICB7CisgICAgfQorfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVj
bGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InLmApOworCit0ZXN0U3ludGF4KGAK
K2NsYXNzIENvY29hIHsKKyAgICAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
fQorfQorYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgIHN0YXRpYyAqb2so
KQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhOGYzZDg2MmIzZDljYzE0ZThi
YTU2NWVjZmIwOTE1MjEwMzJiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAt
MCwwICsxLDggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcgRnVuY3Rpb24oInJldHVybiB0
aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVyYXRvckZ1bmN0aW9uLCAnZnVu
Y3Rpb24nKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24p
Oworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBHZW5l
cmF0b3JGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNh
bGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEyMTdmNzJjODdjMDg5OGU1OTA5YWJhZjM4NWJmMjA4OTkz
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDEyIEBACitm
dW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQor
CitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdl
bigpOworZy5yZXR1cm4oIkhlbGxvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1m
aXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0
MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIw
IEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIp
OworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIg
ZyA9IGdlbigpOwordmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51
bGw7Cit0cnkgeworICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93
biA9IGU7Cit9CitpZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265895</attachid>
            <date>2015-11-19 13:40:59 -0800</date>
            <delta_ts>2015-11-20 07:45:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151120064046.patch</filename>
            <type>text/plain</type>
            <size>212717</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li41ZDNiOWFmZjkwYmQyNjhh
OWRmOTI4ZmIxODRkYWIxYzIxZGM2MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMTUtMTEtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTGl2
ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5m
bzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6Om51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtl
ZENvZGVCbG9ja0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rp
b25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVs
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25D
b21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpcyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yQ29tcGxldGVkTGFiZWwpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdE5ld0Z1bmNDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1
bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24p
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6cHJvcGFnYXRlQXJndW1lbnRzVXNlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxl
bWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJv
ZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldElzRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTY29wZTo6
c2V0SXNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVy
YXRvcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6Omlz
RnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6Cisg
ICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRh
eENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0
aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpz
YXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZWdpc3Rl
ckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlw
ZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9y
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBs
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6
ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChp
dGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAg
ICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVy
YXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0
KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4
dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVh
dGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
ZzEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50
YXguanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4
RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RT
eW50YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgor
ICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNo
b3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlv
bi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVk
LgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChjYXRjaCk6CisK
IDIwMTUtMTEtMTEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gQWlyOiB3ZSBoYXZlIG1vcmUgcmVnaXN0ZXIgdGhhbiB3aGF0IHRoZSBhbGxv
Y2F0b3IgYmVsaWV2ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZjdhYWIyYTA2MmI0NjNlYzM2NWEzOTI3YWRjNjhkM2Y4MjE3
MDJlOC4uMzA0ZjEzYzQwYzhkNGUyNjM3MmI0YjExMzQ1ZjY3N2I2ZjliMTUyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNS0xMS0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNldEJpdCk6CisKIDIwMTUtMTEt
MTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCMyBzaG91bGQg
YmUgYWJsZSB0byBjb21waWxlIGFuZCBjYW5vbmljYWxpemUgTXVsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggYWQwYjRiYTllZjYwYTgwYzVhNjE0M2M5ODU1YmY2N2U4YmYw
M2MxMy4uZGVjMTg1NGRjYjBjNzI3Yzk1OGU2NjlhN2U1ZDliZGE2NTAxZjYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYyLDYgKzU2MiwxMCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0lkZW50
aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MDEsNiArNjA1LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
CkBAIC03MzYsNiArNzQxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNF
UwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk0LDYgKzEyMDAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEz
Li5mOGFkM2I2ZDk5ZjUzNzg0YTU3YTVkYmNlZGE2ZDJmNWU0ODdkMjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1l
dGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1t
eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRv
clRoaXM6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJy
aWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5n
KCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJv
dG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNGFiNTBlYjlmY2Q3ZjZkNWIyNjMwZGVkNTlmYjU1N2Iy
NjI4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQodmFsdWUp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQu
QGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZh
bHVlLCAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRv
clRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgMSk7Cit9CisKK2Z1bmN0
aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
dGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlz
LkBnZW5lcmF0b3JTdGF0ZSwgZXhjZXB0aW9uLCAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBiZDI5YzU1YTM3MzU0ZGUz
ZWJhYTI5NTM4YWIxNzFjMjA5ZjEzMzEyLi5kM2JhYmFhNzE1NzJmYjUyNjIzNWRiM2JkNDU2ZmI2
MTg4NWVhYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDog
NSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCkBA
IC0xMjgsNiArMTMwLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VudW1lcmF0b3Jf
Z2VuZXJpY19wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXgg
MzE1MTFlN2MxZDFmNWU5NzM5N2NkMmI0Y2Y0OWJhOGI0YzM4YjQwZS4uZGU3OGM2YThlMmFkZGE1
ZGY4NzQ1NmNjMzRiNDk4MWY2NmY2ZjllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDcgKzcwLDggQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAgICAgY2FzZSBv
cF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6IHsKKyAgICBj
YXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIzLDYgKzEyNCw3IEBAIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
OgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1
bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9w
X25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBj
YXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAtMTUxLDYgKzE1Myw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoK
ICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CisgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAg
IGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6IHsKQEAgLTIzMiw2ICsyMzUsMTQgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBjb25zdCBGYXN0Qml0VmVj
dG9yJiB2ZWN0b3IgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIHZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNTMs
NiArMjY0LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVf
ZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19l
cnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBv
cF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxMyw2ICszMjUsOCBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25ld19m
dW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRv
cl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9w
X25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNl
IG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzg4LDcgKzQwMiwxNSBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm1fbnVtVmFy
czsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0
dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiB2ZWN0b3IgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNB
dFlpZWxkKGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIHZlY3Rvci5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
Lm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggMThmZmEwNzBlZmNjN2U2OWU4NjdkY2VkY2M1Yzc4NTk3MTgw
ZTQ4Zi4uMzNiMjllYTY4MDk2YzJmNjZlNjg4MmJlY2U3Mjk5ZDhlYjk1ZWFlNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyODYsNiArMTI4
NiwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1
bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEzMDMsNiArMTMxMSwxNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cDogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAgICAgICAgcHJpbnRDYWxsT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0OTEsNiAr
MTUwNywyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9p
bnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgcmVnaXN0ZXJO
YW1lKGdlbmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpLCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBj
b25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CkBAIC0xNzEyLDYgKzE3NDIsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIp
CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRh
YmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzOworICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMp
OwpAQCAtMTg2Nyw2ICsxODk4LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
ICAgICAgICAgZGVzdFRhYmxlLm1pbiA9IHNvdXJjZVRhYmxlLm1pbjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorCisgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgpKSB7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmdyb3coY291bnQpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGRbaV0gPSB1bmxpbmtl
ZENvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICAvLyBBbGxvY2F0ZSBtZXRhZGF0YSBidWZmZXJzIGZvciB0aGUgYnl0ZWNvZGUK
QEAgLTMwNDEsNiArMzA3OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtN
b2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVj
YXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRh
Ymxlcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBjMWRmMTg3YzEyMjBkMmY3ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4MmVjLi4xYTBiOThmMGNkYjJj
MTVkNjAwMmFmYzQ5YTQyYWRiYTAzYmRiMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTE0MSw2ICsxNDIsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVy
czsgfQogICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCisgICAgaW50
IG51bUNhbGxlZVJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OyB9CisKICAgICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1Q
YXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9
CiAKQEAgLTY1NCw2ICs2NTcsMTAgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07IH0KIAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisg
ICAgaW50MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChGYXN0Qml0VmVjdG9yIHZl
Y3RvcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rvcik7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSAtIDE7IH0KKyAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnQgaW5kZXgpIHsgUkVMRUFT
RV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNo
ZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9l
dmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtOTAwLDYgKzkwNyw4
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2lt
cGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdK
dW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAgICAgICBWZWN0b3I8RmFz
dEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZDsKKwogICAgICAgICBFdmFs
Q29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4
MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjdjMzExNGE5ODc5NmU0YWI4MDQ2YWRjMDhkYjY0MWRk
MjliNzhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCkBAIC0yNiwxOSArMjYsMjEgQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAog
I2RlZmluZSBFeGVjdXRhYmxlSW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAj
aW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBFeGVj
dXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJv
b2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9u
LCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBH
ZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAg
ICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2Rl
KQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1f
aXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0
b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKICAgICAgICAgLCBt
X2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkK
LSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwg
bV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0
b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9
CkBAIC00OCw4ICs1MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXND
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9
CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2MCw5IEBAIHN0
cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwog
ICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4
ZWU4ZmE4YjU3Ni4uZTFmMjA4ZGU4YzcyYjhhYzM4ODA1NzQxZjE0MGE2ZTA5M2Q4Y2RiZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC02NSwxMCArNjUsMTEgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMo
ZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNv
bnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1
bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
Zm8uZ2VuZXJhdG9yVGhpcygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVD
b3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShp
bmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShj
b2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2
YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uMTdhNWViZWExNWE1MjMwNDg4ZWY0NzIy
ODY3OWQzMzIyZmUxNzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2Rl
VHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNz
aW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhh
bmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2LDcg
KzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQor
ICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9k
ZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDQsNyBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3Ry
dWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVy
YXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dl
bmVyYXRvclRoaXMpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMjMs
NiArMjI2LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsK
ICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9u
SW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ0
LDYgKzI0OCwxMSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFT
U0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlp
ZWxkIHBvaW50cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkLnNpemUoKSA6IDA7IH0KKyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBl
bmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWll
bGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgdW5z
aWduZWQgYWRkRnVuY3Rpb25EZWNsKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuKQogICAg
IHsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7CkBAIC0z
ODcsMTIgKzM5NiwxMyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQg
bV9nZW5lcmF0b3JUaGlzIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVu
c2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCisgICAgU291
cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwog
ICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKQEAgLTQzNiw2ICs0NDYsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8VW5saW5rZWRT
aW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAg
VmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisKICAg
ICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Np
b25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLjJiZjZhODIwOTFi
MGUxY2NmN2IyYTRiYmRhOTdiNmY0MmU2YzA2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cApAQCAtNTAsNyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAg
ICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1
bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1
aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVp
bHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAg
IEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENv
bnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJs
ZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJl
ZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUs
Ci0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4
ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAg
RXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNl
c0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+
Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMoKSwgcGFyc2VNb2Rl
KSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRv
cj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBn
ZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQm
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5m
ZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2NvbnN0
cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVj
dG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQot
ICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBt
X2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQogewog
ICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9k
ZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3
YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2Jh
bENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAot
ICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJN
b2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3Im
IGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lh
bGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTYsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhp
cywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rp
b24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5k
ZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uYjVlMWY2ZmNjNmQ0
NzIzM2Q5NWMxZDNkZTdhMGMxNjEzOWM1N2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVj
dEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAg
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25t
ZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7
CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3Vy
Y2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBnZW5lcmF0b3JUaGlzLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAg
fQpAQCAtODIsNiArODMsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9u
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlv
bk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogCiAgICAgdW5zaWduZWQg
dW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5j
dGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTcs
NyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBi
b29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVj
dComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEyNyw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVj
dG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJy
b3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRl
cj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJh
dG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE1OSw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1
bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAx
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYyZGVlOWRmYzgwNjU0YzIuLmI0
NGQxNTk1MzRlNmE2N2NjN2EwNTM5MjZmYjk4MTc4NjUzMTQ5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgpAQCAtMTk4LDcgKzE5OSwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBh
aXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CiAgICAgLy8gY29tcGF0
aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9j
YWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
ODE5Ci0gICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFp
c0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCisgICAg
Ly8KKyAgICAvLyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0b3IsIGFsbCB0aGUgY2FsbHMgY2Fu
bm90IGJlIHRhaWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJlc3VsdHMgd2lsbCBiZSB3cmFwcGVk
IGFzIGFuIGl0ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisgICAgLCBtX2luVGFpbFBv
c2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgp
ICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFyc2VNb2RlKCkgIT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3Rl
ciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3Rl
ciA9IG51bGxwdHI7CkBAIC0yMjQsOSArMjI4LDIyIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsKICAgICBib29sIHNob3VsZENh
cHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZU
aGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwo
KTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRz
KCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworCisgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHBy
b3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZl
ZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIG5lZWRzQXJndW1l
bnRzID0gZmFsc2U7CisKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgICAgIC8vIEdlbmVy
YXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5l
cmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KKyAgICAgICAgLy8gVGhpcyBpcyBi
ZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSBzdGFydGluZyBpdC4KKyAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUg
dGhlc2UgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5j
dGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICBzaG91bGRD
YXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAoc2hvdWxkQ2Fw
dHVyZUFsbE9mVGhlVGhpbmdzKQogICAgICAgICBmdW5jdGlvbk5vZGUtPnZhckRlY2xhcmF0aW9u
cygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAgICAgCkBAIC0yNTEsMjkgKzI2OCw3
NCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGFsbG9j
YXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChK
U1N0YWNrOjpDYWxsZWUpOwotICAgIAotICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVu
Y3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewotICAg
ICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29k
ZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAg
Ym9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVu
dCgpLmltcGwoKSk7Ci0gICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29w
ZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwotICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFt
ZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0Nh
cHR1cmVkKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MpIHsKLSAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOwot
ICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRv
bid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKLSAgICAg
ICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYg
b24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQotICAgICAgICAvLyB0
aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVy
IGVudmlyb25tZW50LgotICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzRGVmYXVsdFBhcmFtZXRl
clZhbHVlcygpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwotICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUg
Y29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1
cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3Rl
ZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNl
cnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFs
aXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQotICAgICAgICBpbml0aWFsaXplTmV4
dFBhcmFtZXRlcigpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlKSB7CisgICAgICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9u
LCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBh
IGdlbmVyYXRvcidzIHN0YXRlLgorCisgICAgICAgIC8vIEFsbCB0aGUgcGFyYW1ldGVycyBmb3Ig
YSBnZW5lcmF0b3Igc2hvdWxkIG5vIGJlY29tZSBoZWFwIHZhcmlhYmxlLiBTbyB3ZSBjYW4gaW5p
dGlhbGl6ZSB0aGVtIGhlcmUuCisgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGFyZSAoQGdlbmVy
YXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVN
b2RlKS4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsg
Ly8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAgIG1fdGhpc1JlZ2lzdGVyLnNldElu
ZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKworICAgICAgICBtX2dlbmVyYXRvclJl
Z2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
ICZtX3BhcmFtZXRlcnNbMV0pOworICAgICAgICBpZiAoZ2VuZXJhdG9yVGhpcygpID09IEdlbmVy
YXRvclRoaXM6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNS
ZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRjaF9pbW0gYmFzZWQgb24gQGdl
bmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRpbmUgc3R5bGVkIGdlbmVyYXRv
ciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBjYWxsaW5nIGBuZXh0KClgLCB3ZSB3
b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGluc3RlYWQgb2YganVtcGluZyBi
YXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KKyAgICAgICAgLy8gSXQncyBz
dWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlubGluZXMgb25lIGBuZXh0YCBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBiZWdpbkdlbmVyYXRvcihnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIENvbXBsZXRlZCBzdGF0ZS4KKyAgICAg
ICAgLy8gV2UganVtcCB0byB0aGUgbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCBpbW1lZGlhdGVs
eSBiZWNhdXNlIHdlIGNhbm5vdCB1c2UgYW55IHRlbXBvcmFyeSByZWdpc3RlcnMgaGVyZS4KKyAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgbV9nZW5lcmF0b3JDb21w
bGV0ZWRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wKG1fZ2VuZXJhdG9yQ29t
cGxldGVkTGFiZWwuZ2V0KCkpOworCisgICAgICAgIC8vIEV4ZWN1dGluZyBzdGF0ZS4KKyAgICAg
ICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9y
KCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4K
KyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsKKworICAgICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncykgeworICAgICAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
ciA9IGFkZFZhcigpOworICAgICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBl
bnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25z
LiBJZiB3ZSBoYXZlCisgICAgICAgICAgICAvLyBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9u
cywgd2UgaGF2ZSB0byBob2xkIG9mZiBvbiBhbGxvY2F0aW5nIHRoZSAidmFyIiBlbnZpcm9ubWVu
dCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBl
bnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50LgorICAgICAgICAgICAgaWYg
KCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXMoKSkKKyAgICAgICAgICAgICAg
ICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJ
blNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUo
KSkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29w
ZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMo
ZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CisgICAgICAgICAgICBib29sIG1hcmtBc0Nh
cHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKKyAgICAg
ICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAm
bV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAgICAgICAgICAgIG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIC8vIFdlIGNhbiBh
bGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBh
cmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAgICAgICAgLy8gZGVmYXVsdCBw
YXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0
aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHBhcmVudCBz
Y29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBhcmFtZXRlciBlbnZpcm9ubWVu
dC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZhdWx0UGFyYW1ldGVyVmFsdWVz
KCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1h
a2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKKyAgICAgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5n
IGFyZSBub3RlZC4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkg
KyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAgIG1fdGhpc1JlZ2lzdGVy
LnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICB9CiAgICAgCiAgICAg
Ly8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMu
CiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CkBAIC00NjAsNyAr
NTIyLDM2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
fQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAgIGlmICghY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAg
ICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAg
ICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdU
YXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmIChjb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgICAgICAgICAg
ZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0J3Mgbm90IGNhbGxlZCB3aXRo
IGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGBj
cmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAm
bV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRv
clJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhpc3wgaXMg
YWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAg
ICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7
CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpE
ZXJpdmVkKQpAQCAtNDc2LDkgKzU2Nyw4IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1Jl
Z2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIC8vIEFsbCAiYWRk
VmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRl
clZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtODM3LDYg
KzkyNywyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3VGVtcG9yYXJ5KCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkKK3sKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOwor
ICAgIEZhc3RCaXRWZWN0b3IgdmVjdG9yOworICAgIHZlY3Rvci5yZXNpemUobV9jYWxsZWVSZWdp
c3RlcnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3Rl
cklEJiByZWcgOiBtX2NhbGxlZVJlZ2lzdGVycykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50
KCkpCisgICAgICAgICAgICB2ZWN0b3Iuc2V0KGkpOworICAgICAgICArK2k7CisgICAgfQorICAg
IHJldHVybiB2ZWN0b3I7Cit9CisKKwogTGFiZWxTY29wZVB0ciBCeXRlY29kZUdlbmVyYXRvcjo6
bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUpCiB7CiAgICAgLy8gUmVjbGFpbSBmcmVlIGxhYmVsIHNjb3Blcy4KQEAgLTIyOTQsMTIgKzIz
OTksMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0
ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0g
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVh
dGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NTMsMjAgKzI1NTgsNiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwg
RWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbklu
dGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVu
Y3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVu
Y3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVt
aXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsK
LX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0
ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdl
eHApOwpAQCAtMjQ3NSwxMyArMjU2NiwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJl
dHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNv
bW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9w
Y29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAg
ICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25l
d19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0
aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2Nr
LT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJz
ZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjQ5NCwxNyArMjU5NywxOCBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBC
YXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykK
IHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHAp
OworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICBy
ZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fy
cm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUq
IGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0
cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQo
KSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0
b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKICAg
ICAKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfYXJyb3dfZnVu
Y19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsK
ICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNTIyLDYgKzI2MjYsMTkgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIGZ1bmN0aW9uKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFk
ZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICBpZiAoZnVuY3Rpb24t
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQor
ICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZQorICAg
ICAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3Rlcigp
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIHJldHVy
biBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRG
dW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3Qs
IGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CkBAIC0zNzQ4LDYgKzM4NjUsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBp
dGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5leHQpOwor
ICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwor
ICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7
CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFs
dWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpKTsKKyAgICB9CisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJ
c09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVj
dChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQo
KSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOwpAQCAtMzgxMyw0ICszOTQ4LDI0NSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnZh
bGlkYXRlRm9ySW5Db250ZXh0Rm9yTG9jYWwoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlcgogICAg
IH0KIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JS
ZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgYXJndW1lbnQsIGZhbHNlKTsK
KyAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRM
aXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgIGVt
aXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVl
UmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOwor
CisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3Vt
ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgp
OworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBSZWZQ
dHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3Ry
aWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRK
dW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgUmVm
UHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChv
cF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBl
bWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworICAgIC8v
IFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3Rl
ciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCksIHRydWUpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAg
ICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rl
ci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7
CisgICAgICAgIH0KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQp
KTsKKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisg
ICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRU
aHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAgIGVt
aXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0
ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jh
cnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAg
IHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CisgICAg
ICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAgICAg
ICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUg
PSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRF
bGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1
ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpz
VW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7
CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExv
b3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9y
U3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JS
ZXN1bHQobnVsbHB0ciwgdmFsdWUuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAg
IGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAg
ICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAg
ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9w
X3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAg
ZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKSk7CisgICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5n
ZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcigyKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBuZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybi4KKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1
cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1w
b3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRz
KCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJl
dHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIo
MCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TmV3SXRlcmF0
b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21w
bGV0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0
ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9y
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9y
UmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vIFRocm93LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgp
KTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4g
dGhyb3dNZXRob2ROb3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jhcnko
KSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxs
cHRyKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwo
cmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIHRocm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0
KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgp
KSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhv
ZE5vdEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2Uo
aXRlcmF0b3IuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoQVNDSUlMaXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAn
dGhyb3cnIG1ldGhvZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Ly8gTm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVl
UmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0
RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJh
dG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdl
dCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERv
bmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1
ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVt
cChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVt
aXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQo
KTsKK30KKworCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9y
UmVzdWx0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgZG9uZSkKK3sK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZHN0OworICAgIGlmICghZHN0IHx8IGRz
dCA9PSB2YWx1ZSkKKyAgICAgICAgcmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdE5l
d09iamVjdChyZXN1bHQuZ2V0KCkpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLmRvbmUsIGVtaXRMb2FkKG51bGxwdHIsIGpzQm9vbGVhbihkb25l
KSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXREaXJlY3RQdXRCeUlkKHJl
c3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlLCB2YWx1ZSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKK30KKwordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7Cisg
ICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwg
Y29tcGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7
CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFi
ZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVy
YXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHdlIGNh
bm5vdCBlbWl0IGBicmVha2AuCisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3
aXRjaEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRv
cihMYWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1f
c3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1v
dmVMYXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5z
dHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVs
LT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZz
ZXQgKyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2Nv
ZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNz
ID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAg
ICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMu
c2l6ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxh
YmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNo
b3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVy
YXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRk
KGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRj
aEFkZHJlc3MgKyAzKSk7CisgICAgfQorCisgICAgZW1pdExhYmVsKG1fZ2VuZXJhdG9yQ29tcGxl
dGVkTGFiZWwuZ2V0KCkpOworICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVs
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5l
d1RlbXBvcmFyeSgpOworICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUo
Y29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAvLyBSZXR1cm4u
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3Vs
dCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWQobnVsbHB0
ciwganNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICAgICAgZW1pdFJldHVybihpdGVyYXRv
clJlc3VsdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAg
ZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3coZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3YjkwNDkwZGQ5NDlhNDdhYmEuLjYxMGE3
NzUwMTVhZThlYmYwMGMyMmY4MGVjN2JmNGVmYzE2YTI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpA
QCAtMjgwLDYgKzI4MSw3IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNv
bnN0cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCk7IH0KIAogICAgICAg
ICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiArMjk5LDggQEAKIAogICAgICAg
ICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9
CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dl
bmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFi
bGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8g
bmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGlu
ZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNp
ZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAtNDk5LDEwICs1MDMsOCBAQAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9k
ZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5h
bChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSog
ZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVn
aXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwot
ICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNF
eHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVu
Y3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAK
QEAgLTU5Niw2ICs1OTgsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICBi
b29sIGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJik7CkBAIC02
NDIsMTIgKzY0NSwyNSBAQAogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBT
d2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3Qg
Y2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVm
YXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0
ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJl
Z2lzdGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiwgUmVnaXN0
ZXJJRCosIGJvb2wpOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsK
KyAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzWzJdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKwogICAg
ICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIAog
ICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVt
aXRQcm9maWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsg
cmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
OyB9CisKKyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApA
QCAtNjY1LDYgKzY4MSw4IEBACiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFy
ZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZv
aWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSop
OworICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVDYWxsZWVSZWdpc3RlcnMoKTsKIAogICAgIHB1
YmxpYzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnRO
b2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3lt
Ym9sVGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTc1NCw4ICs3NzIsMTEgQEAKICAgICAgICAg
ICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6
OkNhbkNvbnN0cnVjdDsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1v
ZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCiAgICAgICAgICAgICAg
ICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
KyAgICAgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6
Ok5vbkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAgIGdlbmVy
YXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJj
ZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVz
VW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGlu
RnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgdmFyaWFibGVzVW5kZXJURFop
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJs
ZUVudmlyb25tZW50Jik7CkBAIC03NzQsNiArNzk1LDggQEAKIAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCisgICAgICAgIExhYmVs
KiBnZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yQ29t
cGxldGVkTGFiZWwuZ2V0KCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9pbnN0cnVjdGlvbnM7
CiAKQEAgLTgwMiw2ICs4MjUsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBtX3RvcE1vc3RTY29w
ZSB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hcmd1bWVudHNSZWdpc3RlciB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9nZW5lcmF0b3JSZWdpc3Rl
ciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIg
eyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIg
eyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBu
dWxscHRyIH07CkBAIC04MjUsNiArODQ5LDggQEAKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+
IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZv
ckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250
ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBtX2dlbmVyYXRv
ckNvbXBsZXRlZExhYmVsOworICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50
OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9Owog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25W
YXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25l
ZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDg3M2Y0YWI0NDI0
MDcwZGM3ZmQ4NjYzMWFjNDVhMTRkYzE1ZTE4MmYuLjg1NWEzMzg3Y2NjMzU4ZDFjNzljYTM4NzEw
ZTgzYmM0MjY2M2UzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTQ1
LDcgKzE0Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgIGlm
IChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5lcmF0b3JUaGlz
KCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hl
Y2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKQEAgLTI1ODMsMTMgKzI1ODQsMjcgQEAgdm9pZCBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ZHN0ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFs
dWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVyblJlZ2lzdGVyID0gbnVsbHB0cjsKKyAgICBpZiAobV92YWx1ZSkgeworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSkKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV92YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0g
Z2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1Vu
ZGVmaW5lZCgpKTsKKworICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRv
ci5lbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCksIHRy
dWUpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQo
KSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7
CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFBvcFNjb3BlcyhnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCAwKTsKICAgICB9CiAKKyAg
ICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxl
dGVkKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUs
IGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5l
cmF0b3IuZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlQ29udHJvbEZsb3coZW5kT2Zmc2V0KCkpOyAKQEAgLTI5NjYsMjYgKzI5ODEsODgg
QEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xG
bG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlk
RW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGlu
ZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJldHVybk5vZGUqIHJldHVy
bk5vZGUgPSAwOworICAgIHN3aXRjaCAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpKSB7CisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0
ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAg
ICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAg
ICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0
ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4
cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNF
eHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0
PEZ1bmNFeHByTm9kZSo+KGV4cHIpOwogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRl
bWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2su
Ci0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkg
ewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19j
YXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAgICAg
ICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1Jl
dHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5O
b2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1
cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0gICAgaWYgKCFyZXR1cm5Ob2Rl
KSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5
cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVz
c2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidz
IHNvdXJjZSBjb2RlLgorICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkluaXRpYWwpKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFs
U3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIFByb2ZpbGVUeXBl
Qnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Np
b24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBz
b3VyY2UgY29kZS4KICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zm
c2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJh
bWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwotICAgICAgICByZXR1cm47CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU6IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQo
KSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNv
bXBsZXRlZCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGdlbmVyYXRvci5nZW5l
cmF0b3JDb21wbGV0ZWRMYWJlbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKyAgICAgICAgVHJ5RGF0YSogdHJ5
RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpOworICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGRvbmUuZ2V0KCkpOworCisgICAgICAg
IFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZ2VuZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3Iu
bmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25S
ZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIGdlbmVyYXRvci5wb3BUcnlBbmRFbWl0Q2F0Y2godHJ5RGF0YSwgZXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCksIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCksIGNhdGNoSGVyZS5nZXQoKSwg
SGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGRvbmUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRl
Q2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJh
dG9yLmVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5lcmF0b3IuZW1pdExvYWQobnVs
bHB0ciwganNVbmRlZmluZWQoKSksIHRydWUpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVuZEdlbmVy
YXRvcihkb25lLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDog
eworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmln
bm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50
ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIFJldHVybk5vZGUqIHJldHVybk5v
ZGUgPSAwOworCisgICAgICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhl
IGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgorICAgICAgICBp
ZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7CisgICAg
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0
PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKKyAgICAgICAg
ICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNS
ZXR1cm5Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJl
dHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUu
CisgICAgICAgIGlmICghcmV0dXJuTm9kZSkgeworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcjAg
PSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJu
U3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2Zp
bGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICAg
ICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgp
LCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihyMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIH0KIH0KIApAQCAtMzAxMywxMSArMzA5MCwyNCBAQCBSZWdp
c3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBzdHViLiBXaGVuIGNvbXBsZXRpbmcgRVM2IEdl
bmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1wbGVtZW50IGl0LgotICAgIGdlbmVyYXRvci5lbWl0VGhy
b3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQgeWV0LiIpKTsKKyAgICBp
ZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IG51bGxw
dHI7CisgICAgICAgIGlmIChhcmd1bWVudCgpKSB7CisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdl
dCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcmcgPSBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICAg
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGVsZWdhdGVZaWVsZChhcmcuZ2V0KCksIHRoaXMpOwog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENsYXNzRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2Q2ODZi
NzJhZGQ0YjQ4ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVlZS4uNWUyNTQxM2I4ZDg0ODdiNWY1NTVk
ZjkyMzJhNDI4YTIzYzc1ZTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEz
LDYgKzIxMyw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklO
RV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAg
IERFRklORV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0yNTksNiArMjYxLDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1
ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5j
KQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAg
REVGSU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9u
ZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IGU5NjgyOTJhYjcwMjRhOGMyYWZlYWZmZDBmZTQ1OTJjYzg1MzY0NzAu
LjA5MTg2NDdlNmExYTA1N2ViNzk0ODNmNGZkM2EyMzRjNmM1YTdhODIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2Vy
dChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rp
b24qKTsKQEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5
X2J1ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2
NjQsNyBAQAogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBp
c1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7
CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAg
ICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjMWJiNzQzZmNiN2UyY2RmYjBhMmRjN2QxZDhk
Mzk0OTdmODYyMGM4Li5iYmFmZTliMmYxNTcyZTc1NGQ4OTY0MWE5ZDFhMmY2ZjNiMGE3NWU2IDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk2Nyw3ICs5Njcs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29t
bW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBsYXp5SnVt
cDsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3
OCwxNCArOTc4LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY0V4ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRz
dCwgcmVnVDAsIGZ1bmNFeGVjKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAg
ICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwg
ZnVuY0V4ZWMpOworICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhw
ckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdG
dW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVu
Y0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKTsKQEAgLTEwMTgsMTEgKzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVt
aXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vs
c2UgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0
LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7CiAjZW5kaWYKLSAgICBlbHNlCi0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0
aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4
cCkKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob3Bj
b2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlv
bik7CisgICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTEzOTksNiArMTQyNywxOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkw
NjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQ
cm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlND
ZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUt
PmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cisg
ICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVu
Y3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUo
dm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSks
IHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAg
IEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1
bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29w
ZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihl
eGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAg
ICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlz
SW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5j
dGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0
ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25F
eGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpA
QCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBvcGVy
YXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZjZjNTdmM2QxY2I3ZTQ1
NjIyNjM2MmE5MmEwZmQwOTk0MDU5OWQ0NS4uY2FlMDQyYTBhMGI0NTA2OWViMDRjMjBiNWY0NzVl
ZWVkZDQ0MjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTI5OSw2ICsyOTksOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3Bl
KiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
RXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1
Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
SlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQy
LDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNj
b3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0g
RnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhh
c0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBj
WzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RS
QUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9S
RVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0u
dS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisg
ICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJv
d19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBh
NGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
OTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0
Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1
bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggODQ5YjJkNzUzMzIwMzFhMGU2Yzc0ODg1MTExMjIwZGIyYTdkMDlhNC4uYjkzZTRj
MzEyY2QzYzhlYzg2Y2UxNTEwZjc0OWY1OGJkZmRjNzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIyNyw2ICsx
MjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGlu
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRj
aCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2
NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRj
aCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHAp
CkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgz
KQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jl
c3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
cmVzdW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggN2M4NWFjMGNiODM4NzUyNDM4MjJkMWJkMDEzYTNmNzkz
Y2U3ZDlhOS4uMjRmNjA5Y2NmM2FlYTViODBlNjZiM2Q0ZGRjZDU0Y2QzMjAwOGI5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MCw5ICszNDAsMTEg
QEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsK
ICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUp
CisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAg
ICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5v
ZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAg
ICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJv
bm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAg
LTM2MywxMiArMzY1LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBt
X3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODU1LDYgKzg1Nyw5
IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3RhcnRPZmZz
ZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkg
eyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1
YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5Nzhl
YmFjNTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9y
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
Q29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlv
bikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5k
Q29sdW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpz
ZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xv
c2VkVgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0
Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGNkZTQ5YTliNmE2
MDQ1Njk4ZWJlYmQ0ZDA5YTdlY2IzYWU5MmZjMzQuLjFlODJjZDg3OGI4NmEwMTg3ZWFiZDRlZWE2
YjM4Njc0Yjc0MmE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4
MTIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
biwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApA
QCAtMTgzOCw3ICsxODM4LDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENv
bnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCkBAIC0xODY1LDcgKzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQg
OiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVu
c2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkyNyw3ICsxOTI1LDcg
QEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUg
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUg
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNzRiY2IyY2IzNWIwNTQ3
YmE1ZDM5ZjQ1MTM5NTM3MTc5NDNmNDFkLi4zNjNjODZjZmQ0ZWUxZGM3ZmJhYTYyNTVkNjQ4YjUy
NDE1MDY0NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0y
NDcsNyArMjQ3LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9
IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAg
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8p
OworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAg
ICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vy
cm9yKCkpIHsKQEAgLTI3MSw4ICsyNzQsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhj
b250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkK
ICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNr
Rm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtMjk5LDcg
KzMwNiwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNj
b3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJl
ZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVy
ZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAg
IHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAg
aWYgKHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
LmltcGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpOwor
ICAgIH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsK
ICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0
TW9kZUZlYXR1cmU7CkBAIC0zMDksMTAgKzMyMywxMCBAQAogICAgICAgICBmZWF0dXJlcyB8PSBN
b2RpZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkQXJndW1lbnRzKQogICAg
ICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7CisKKwogICAgIFZlY3Rv
cjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwot
ICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRvIGFsbG93IGJ1
aWx0aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAgIElkZW50aWZpZXIg
aWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkpOwpA
QCAtNDU2LDYgKzQ3MCw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgor
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VF
bGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVk
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlv
biBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3Rh
cnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRv
a2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9j
YXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+
IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlm
aWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5m
by5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsg
Ly8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1Bv
cFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAg
IGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25D
b250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZh
aWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBt
b2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBw
b3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJs
ZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5D
b2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpbmZvLnBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAg
IGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tl
bi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47
CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0
YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVF
eHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRv
a2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNl
RWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVu
c2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlz
IGRvY3VtZW50ZWQgaGVyZToKQEAgLTE1NTQsMTMgKzE2MDcsMTIgQEAKICAgICBUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3Rh
cnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7
CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExv
Y2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJv
d0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NzIsNyArMTYyNCw3IEBACiAg
ICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENo
ZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBh
cnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCks
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTU4OCw2ICsxNjQwLDggQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5l
cmF0b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTY2Niw2ICsxNzIwLDM3IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhl
clR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQor
eworICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlz
dCgpOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Cisg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAg
IC8vIEBnZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBnZW5lcmF0b3IsIDApOworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSk7CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yU3RhdGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Cisg
ICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxv
Y2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFs
dWUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1l
dGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUp
OworICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2Rl
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1
bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAt
MTc3NiwxMiArMTg2MSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRP
ZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
OwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlv
bkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAg
IHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1u
LCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8t
PnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQs
IG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNv
bnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9u
Qm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAg
ICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJ
bmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRz
RnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzk1LDcgKzE4NzgsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBt
X2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAg
ZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0Owog
Ci0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlU
eXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpA
QCAtMTgxNywxNCArMTkwMCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFt
ZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3Rh
dGUoKTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNv
bnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5j
dGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAg
YXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBw
YXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNv
bnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRv
ckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29w
ZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7Cisg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsK
KworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3Rp
dmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9k
ZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKyAgICAgICAgcG9wU2NvcGUo
Z2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1
bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFp
bElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zm
c2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlm
IChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0
aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICIn
IiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24g
bmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyArMTk4OSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3Vt
ZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5v
dCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5h
bWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwNDMsNyAr
MjE0MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9y
KSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAg
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVk
ICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEg
Z2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3ODcs
NiArMjg4NCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlv
blBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVz
ZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZv
dFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7
CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQo
KTsKQEAgLTI3OTQsMTMgKzI4OTIsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUg
PSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9r
ZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAg
ICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwg
ZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yOTg5LDcgKzMwODgsNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBK
U1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNp
Z25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dl
bmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
byhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwg
bWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFy
c2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9k
SW5mbyk7CkBAIC0zMjQyLDcgKzMzNDEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlz
VW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
ID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9H
RU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBw
YXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lv
biIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVu
Y3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGUyMTNl
MDcyZmI4MGU3NDhmODU2MjVhNjczOGNkMTdlY2ExNmYwOTIuLjE2ZWI1YjFhMGRhMzkzZjM2MDBh
NjRkNzEzZWE4MTQ3YmI0MWMzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGlj
YWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAg
ICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVu
dHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERl
cHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAg
ICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lz
RnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9p
c1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hh
c0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhz
Lm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgp
CiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAt
MjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0
b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0
aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0
dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0y
NjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFy
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dl
bmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFz
QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQg
c2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0g
dHJ1ZTsKQEAgLTQ3MCwxNiArNDc4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBt
X3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0
OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAg
ICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+
bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIp
IHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAg
ICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0
ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNj
b3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5t
X2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3Vs
ZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChu
ZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3Vt
ZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFy
aWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQo
aW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlh
YmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNh
cHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEg
bGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFu
ZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlh
YmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9z
ZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVz
dGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3Nl
ZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xv
c2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndh
cmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU3MCwxNCArNTgyLDIyIEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBt
X2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1
ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9
IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAg
eworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVl
OworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0
SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9o
YXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAg
LTU5OSw2ICs2MTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29w
ZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lz
VmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBp
bnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTExMTMsNiArMTEz
NCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRl
ciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVp
bGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVM
aXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGly
ZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0g
Y2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE3NSw2ICsx
MTk3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rp
b25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdT
Y29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNl
TW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsK
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFz
c0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
LCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjli
ZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0
Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25N
b2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAg
IEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiAr
NjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBA
IC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNl
dHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDVkMzkzYTNkYTdl
N2U1OWRiODZlNjNjZGJmYWRmZDk5NWE1MWU5YzkuLmYxY2NjZmFiMTk0ODU4MTYwN2Q4Mjc1YTM2
NTlhMmRiMDQwYjY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCkBAIC0xNzksMTAgKzE3OSwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRF
eHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsg
cmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4
Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1
bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGlu
dCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJl
dHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJv
d0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lk
IHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1l
bnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CkBAIC0zNTYsNiArMzU2LDggQEAgY2xh
c3MgU3ludGF4Q2hlY2tlciB7CiAgICAgaW50IGVuZE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0K
ICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAorICAgIHZvaWQgcHJvcGFn
YXRlQXJndW1lbnRzVXNlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgaW50IG1fdG9wQmluYXJ5RXhw
cjsKICAgICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1ZTBmNTZlYzBmNjljZGM3
Y2JlZGYwZS4uYjM4YmY5NWVkOTAxNTE1ZjllYTRkZWI4NmJiYTE3NjAwYzU0MGRmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xODgsNyArMTg4
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25F
eGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRp
b24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0
cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJs
ZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZh
cmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0
YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0
cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0
QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZW1wdHlURFpW
YXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAg
bV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2
MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4MWJm
MWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBt
YWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVy
YXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBc
CiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVpbnQz
MkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFy
cmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkg
XAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCBjNGY2YzIyYzc1NDg4OTE5MGNiZjExYjQ1YTQ5MTRiY2FmNzk5OTExLi40YTlkMDAw
MWU1NjVhYmZhYWMwNjdmNjMxZDcwZWMxNDdhZDcyZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwzNyBAQCBzdGF0aWMgQ29t
bW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0s
IGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lz
dGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IpOworICAgIGlmIChnZW5lcmF0
b3IuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lLCBzbG90KSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPihzbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgoKGV4ZWMt
PnJlZ2lzdGVycygpIC0gMSkgLSBleGVjLT50b3BPZkZyYW1lKCkgKyAxKSA9PSBleGVjLT5jb2Rl
QmxvY2soKS0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBmcmFtZSA9IEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVS
ZWdpc3RlcnMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1
ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9y
KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQorICAgIGludCBsaXZlQ2FsbGVl
UmVnaXN0ZXJzSW5kZXggPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnNhdmUoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVS
ZWdpc3RlcnNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRv
ckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgg
PSBwY1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4
KSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiMGJhOWU4ZGExZTEzNTBlY2Vl
YWNjODFkMjdiYzhjYTJiMzlkZGRkLi4yMWRiZWEzZjRjN2Y1NmZmYWI1YWY1MDQ1ZjM4OTFhMzI2
OTk0NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93
UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
YXZlKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2
NDE3ZDdhNDBkMzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhhOTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0
ZTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
QEAgLTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5k
LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0
YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRF
eGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBm
ZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uZDdmNzRhNWE5NDZjYzdjZTk3NTQ5OGU0MTBkMjQ0
YmMyNzI4MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAg
ICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdl
bmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1
NDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVF
dmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25t
ZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUu
Z2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rp
b25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNv
bnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9v
bCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0K
ICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2Vk
RXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAg
c2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAK
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVm
ZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdk
YjVlYTE0Yjk2MjZhNWExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlw
ZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tp
cHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25O
YW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92
ZXJyaWRlTGluZU51bWJlciwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3Ry
aW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJp
bGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3Ry
aW5nKCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVu
Y3Rpb24gIiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCks
ICIoKSB7XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCks
ICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0i
KTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0
b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgie2Z1bmN0aW9uICIpOworICAgICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUu
c3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5
ICsxMjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIGJvb2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkp
OworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpLCBpc0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCmluZGV4IDIyZWNiNTdiOTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3
OTRjZDIwYjc2MzFjMTc5ZmRlMDJhYTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEy
ICs1NiwxMiBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24gewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1K
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBBcmdMaXN0Jik7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rp
b25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24m
LCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5l
cmF0b3IgPSBmYWxzZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVy
ID0gLTEpOworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50
IG92ZXJyaWRlTGluZU51bWJlciA9IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZmY5NzIxZTc4M2ZkN2ZkZTllZjI0OTJl
ZWIxYTQ4NmIwMjMyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
KworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJh
bWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1l
KSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVSZWdpc3RlcnMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMobnVtYmVyT2ZD
YWxsZWVSZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JG
cmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmRWYWx1ZXModGhpc09iamVjdC0+cmVnaXN0ZXJzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZD
YWxsZWVSZWdpc3RlcnMpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNp
emVfdCBudW1iZXJPZlJlZ2lzdGVycykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0K
KyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yUmVnaXN0ZXJz
KG51bWJlck9mUmVnaXN0ZXJzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJP
ZlJlZ2lzdGVycyk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7CisgICAgLy8gT25s
eSBzYXZlIGNhbGxlZSByZWdpc3RlcnMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBp
cyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7ICsraSkg
eworICAgICAgICAvLyBXZSBvbmx5IHNhdmVzIGxpdmUgY2FsbGVlIHJlZ2lzdGVycy4gVGhpcyBl
bnN1cmVzIHRoYXQgYWxsIHRoZSByZWdpc3RlcnMgYXJlIHZhbGlkIEpTIHZhbHVlcy4KKyAgICAg
ICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gZW1pdCBjb3JyZWN0IHdyaXRlIGJhcnJpZXJzIGFuZCBn
dWFyYW50ZWVzIHRoYXQgR0MgbWFya2VyIG1hcmtzIHRoZW0gYXMgSlMgdmFsdWVzLgorICAgICAg
ICBpZiAoaSA8IGxpdmVDYWxsZWVSZWdpc3RlcnMubnVtQml0cygpICYmIGxpdmVDYWxsZWVSZWdp
c3RlcnMuZ2V0KGkpKQorICAgICAgICAgICAgcmVnaXN0ZXJBdChpKS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSkuanNWYWx1
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVnaXN0ZXJBdChpKS5jbGVhcigpOwor
ICAgIH0KK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5
IHJlc3VtZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3Ig
aXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzOyArK2kp
IHsKKyAgICAgICAgaWYgKGkgPCBsaXZlQ2FsbGVlUmVnaXN0ZXJzLm51bUJpdHMoKSAmJiBsaXZl
Q2FsbGVlUmVnaXN0ZXJzLmdldChpKSkKKyAgICAgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpID0gcmVnaXN0ZXJBdChpKS5nZXQoKTsKKyAgICAgICAg
cmVnaXN0ZXJBdChpKS5jbGVhcigpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZDUxNzAyN2E4Y2UwMWFjNTM3NDVkODA2MDk3MThjNTQyNDY1MzI5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApA
QCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJh
bWVfaAorI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOwor
I2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5k
IGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0
YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVn
aXN0ZXJzKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZ2lzdGVycygpCisg
ICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZSZWdpc3RlcnMoKSk7Cisg
ICAgfQorCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgcmVnaXN0ZXJBdChzaXplX3Qg
aW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKClbaW5kZXhdOworICAgIH0K
KworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZSZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlJlZ2lzdGVyKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRPZlJlZ2lzdGVycygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yUmVnaXN0
ZXJzKHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9m
ZnNldE9mUmVnaXN0ZXJzKCkgKyBudW1iZXJPZlJlZ2lzdGVycyAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9p
ZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3Rl
cnMpOworICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVSZWdpc3RlcnMpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZyYW1lKFZNJiwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKworICAgIHNpemVfdCBtX251bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2Vu
ZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2Nk
M2VkMDI1YmVhOTI3ZjYwNTM2YTM5OWJlZGM4MzcxMmEzOTY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5j
bHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
IH07CisKK0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgIkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJl
ciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxs
ZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCAvKiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJn
cyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4
ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBh
cmdzLCAvKiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RU
eXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7Cisg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0
ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
X2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9u
OworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAg
ICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUzMWJkMzEx
YjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMz
MTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFw
KSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3NGNh
ZTZhZDQ2NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3Rv
dHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclBy
b3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0
b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRo
cm93ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9p
ZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9u
bHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wg
R2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBn
ZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5l
IEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRv
clByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkg
R2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgor
ICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
ICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclBy
b3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yVGhpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhp
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzYWQyZWE2MzZjNTI0ZDk1ZjJkMDNmN2RkMDM0ZjhkNzU1ZGU4MGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JUaGlzLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAgQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1Ig
QU5ZCisgIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzX2gKKyNkZWZpbmUgR2VuZXJhdG9y
VGhpc19oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIEdlbmVyYXRvclRoaXMgOiB1
bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9uRW1wdHkKK307CisKK30KKworI2VuZGlmIC8v
IEdlbmVyYXRvclRoaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5i
ZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0
aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkg
ewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHBy
b3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAgICAg
ICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBl
LCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVj
dC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBh
dHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRjYmNlMDJkNjYyOTA1ZTBlY2I3OGE3
NmZjYzg1YTJlMmQxOTg4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJh
dG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9i
YWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5l
cmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNH
ZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlv
bih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+
c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNH
ZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dl
bmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3Rp
ZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1
bmN0aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJs
ZSwgc2NvcGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWE5
ZDM5NTYxYzI3YjU5NjdjOThhNzM5MmNhOTdjMDE5MjYxMGM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRvckZ1bmN0
aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisKK2Ns
YXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpT
cGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRp
ZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24g
QmFzZTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAgICAg
ICAgQ29tcGxldGVkLAorICAgICAgICBFeGVjdXRpbmcsCisgICAgICAgIEluaXRpYWwKKyAgICB9
OworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAg
ICAgIE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBSZXR1cm5Nb2RlLAorICAgICAgICBUaHJvd01v
ZGUKKyAgICB9OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
c3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90
IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBh
Y2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRv
ckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhK
U0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmE1YWMxYWEwNThhYzM5ZWU2ZTk2MjUyNWE0
N2NjODY4YjEyODkxLi43ZjFhOTIzNzJiODMyYzQ0MjZmMGQxZGRhYjU3NDhiMmIzYzI4MDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcy
LDYgKzc1LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJW
TVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIK
QEAgLTM4NCw2ICszODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
Z2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9U
T1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBB
U0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBu
YXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJ
TGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJVUklFcnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2
bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmdldCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRF
bnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKQEAgLTQyOCw2ICs0MzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+T2JqZWN0LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbiwg
ZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5HZW5lcmF0b3JGdW5jdGlvbiwgZ2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5SZWdFeHAsIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RXZhbEVycm9y
LCBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CkBAIC04MTcsNiArODI4
LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0
aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg0OSw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29y
ZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNi
ODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMs
NiArNjMsOCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlw
ZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVy
OwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiAr
MjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90
eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBl
OwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlw
ZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlw
ZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZz
ZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9w
cml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsK
QEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQ
cm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlw
ZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9y
UHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
clByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhT
Y29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJl
Z0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAy
MjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4
NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0
YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxl
QWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVk
VHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVk
VHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0
dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBl
eGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2Ux
NzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5ZjI5
OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcg
QEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVu
Y3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IDI4NWM1Zjk4ZjQ5NTM5MjhlNjc0MzNmOGMy
NjZhOWJiYTE1MGY3YTcuLmQ2NjhmODZmZmU4N2UzNWQ0MDE0YTgzY2Q4ZGRmYmUxYjEzNzUzYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcxNSw3ICs3MTUsNyBAQAog
LSBwYXRoOiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWlu
LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9k
c19BcnJheS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNf
QXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2ZfZ2Vu
ZXJpY19pdGVyYWJsZXMuanMKQEAgLTcyMyw3ICs3MjMsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlf
c3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21h
cF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0Fy
cmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9m
dW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NDksNyArNzQ5LDcgQEAKIC0g
cGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2luc3RhbmNlc19vZl9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwpAQCAtNzU5LDcgKzc1OSw3IEBACiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xv
b3BzX2l0ZXJhdG9yX2Nsb3NpbmdfdGhyb3cuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2Zf
bG9vcHNfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxl
cy5qcwpAQCAtNzk5LDU1ICs3OTksNTUgQEAKIC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJv
cGVydHlfdmFyaWFibGVzX2Z1bmN0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90
eXBlJS5yZXR1cm4uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS50aHJvdy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX2Jhc2ljX2Z1bmN0aW9uYWxpdHkuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jYW50X3VzZV90aGlz
X3dpdGhfbmV3LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnMuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfY29ycmVjdF90aGlzX2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rp
b25fZXhwcmVzc2lvbnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRo
YW5kX2dlbmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9t
ZXRob2RzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVy
YXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hcnJheXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2FzdHJhbF9wbGFuZV9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0
ZXJhYmxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX29uX25vbi1pdGVyYWJsZXNfaXNfYV9ydW50aW1lX2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9zcGFyc2VfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfb3BlcmF0b3JfcHJlY2VkZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xv
c2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvTWFwX01hcFtTeW1ib2wu
c3BlY2llc10uanMKQEAgLTExMDEsNyArMTEwMSw3IEBACiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4u
X29wZXJhdG9yX3dpdGhfYXN0cmFsX3BsYW5lX3N0cmluZ3NfaW5fZnVuY3Rpb25fY2FsbHMuanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0
aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dp
dGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyaWNfaXRlcmFibGVzX2lu
X2FycmF5cy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxl
cy5qcwppbmRleCBhOGI5YjUzY2NjZmFlMWE1YjVhNjZjMTNiZDIzZThjYWU1MjdhYWE0Li45YTgy
MTMyYTYwZmMwZTc5MTk3MmMwNDMxOGQwN2I5ZTI2MDA0YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0
ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAo
dHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQor
ZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMg
PSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5
bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRl
cmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIu
c2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRo
b2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVy
YWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVy
biBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewog
CiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0
YW5jZXNfb2ZfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3
NDUzOTMyNmM4OTcyYjc0YTc2MWZmNGQ4ZjI5YjJhNWFlODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZj
MTU0NDRhM2I2NGViODZlNjNjNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVv
ZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0
aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0
aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wu
aXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9y
ID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0
KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sn
cmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUg
PSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRl
cmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFy
IGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKaW5kZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2
OWFkZTQyZTgzYWViOGIwM2Q0Zi4uMzJkMzE3YzBiODBhZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRk
ZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
CkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewor
dmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFy
ciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJv
bCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30K
K2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsK
KyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2Rz
Wyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0
b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9
CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKaW5k
ZXggNDRhMDY1YTk2YTFjOWRlN2UyNmMzNjIwNmMxY2IzNjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3
ZjVjZGExZjkyNDhlOTU2YWZiYTU0MjkzODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192
aWFfdGhyb3cuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKQEAgLTEsMyArMSwy
NCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0g
dGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7
CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rp
b24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsr
OwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2
YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0
dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307
Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlv
bigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24g
dGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24u
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVu
dHMtZnJvbS1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNiY2Q5YTdlMTg4MzcwNzBjYWVlOGRm
OGJjYjE2OWI3NTU1NjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKQEAgLTAs
MCArMSwzMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcnJheShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoYWN0dWFsLmxlbmd0aCwgZXhwZWN0ZWQubGVu
Z3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBzaG91bGRCZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ld
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBwcmludChKU09OLnN0cmluZ2lm
eShhY3R1YWwpKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9Cit9CisK
KworZnVuY3Rpb24gKmdlbihhLCBiLCBjKQoreworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICByZXR1cm4gdGVzdDsKK30K
KworbGV0IGcgPSBnZW4oMSwgMiwgMyk7CitsZXQge3ZhbHVlOiBmdW5jfSA9IGcubmV4dCgpOwor
c2hvdWxkQmUoZnVuYygpLmxlbmd0aCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjI2NDc4ZmEyM2U0YmUzM2FiYWFmMTQ0NzI5MmE0NTliN2I4NmQxYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50
cy5qcwpAQCAtMCwwICsxLDEwNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAs
IDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwg
YiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOwor
ICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBj
ID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9
IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVl
KSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0Miku
dmFsdWUpLCBgeyIwIjo0MiwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSks
IGB7IjAiOjQyLCIxIjo0MiwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
Mik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAi
OjQyLCIxIjo0MiwiMiI6NDJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2
YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgp
LnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5j
dGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5
aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOwor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGZ1bmN0aW9uICpnMShh
LCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIx
IjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9
IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2
NWNlYjFmNDM2YzAyZTM2ZDhiMGFjNWJhN2RlMzI1NTU3NzAwYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhv
ZHMtc3ludGF4LmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9y
KSB7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93
biIpOworCisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50
YXhFcnJvcihgCitjbGFzcyBDb2NvYSB7CisgICAgKmNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAg
fQorfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAn
Y29uc3RydWN0b3InLmApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICAqb2so
KQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CisKK3Rlc3RTeW50YXgo
YAorY2xhc3MgQ29jb2EgeworICAgIHN0YXRpYyAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQg
NDI7CisgICAgfQorfQorYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MzdmMzc4YjBkNmU4YTMzYzlmYzU1M2Q3Nzk5ODI3MDFiOGVjM2QzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0
aG9kcy5qcwpAQCAtMCwwICsxLDY2IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxz
ZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3Ip
fWApOworfQorCitjbGFzcyBBIHsKKyAgICAqZ2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRo
aXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgKnN0YXRpY0dlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAg
ICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfQoreworICAgIGxldCBh
ID0gbmV3IEEoKTsKKyAgICBsZXQgZyA9IGEuZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUp
OworfQoreworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBsZXQgZyA9IG5ldyBhLmdlbigpOwor
ICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgZy5uZXh0KCk7CisgICAgfSwgYFJlZmVy
ZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9CisKK3sKKyAgICBsZXQgZyA9IEEuc3Rh
dGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIGxldCBnID0gbmV3
IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLm5leHQo
KTsKKyAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS5gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4ZjNkODYyYjNk
OWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9y
LmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigi
cmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rp
b24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBG
dW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUuY29uc3RydWN0
b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk2YTIxN2Y3MmM4N2MwODk4ZTU5MDlhYmFmMzg1
YmYyMDg5OTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEs
MTIgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5H
Iik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3Zh
ciBnID0gZ2VuKCk7CitnLnJldHVybigiSGVsbG8iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxs
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ct
YmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVh
YzBkOWEzZTQxODc5ZWRkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0w
LDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9
CisKK3ZhciBnID0gZ2VuKCk7Cit2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhy
b3duID0gbnVsbDsKK3RyeSB7CisgICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNoIChlKSB7Cisg
ICAgdGhyb3duID0gZTsKK30KK2lmICh0aHJvd24gIT09IGVycm9yKQorICAgIHVucmVhY2hhYmxl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBl
ZDU2Njg4YTZhMjk4Yy4uYjdjMDU4OThmMWRlMmM1N2FmZmZlNDExNDUyNGMzODVmY2Y4M2RmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBjbGFzcyBGYXN0Qml0
VmVjdG9yIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdF9jYXN0PEZhc3RCaXRWZWN0b3Iq
Pih0aGlzKS0+Zm9yRWFjaFNldEJpdChmdW5jdG9yKTsKKyAgICB9CiAgICAgCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265954</attachid>
            <date>2015-11-20 07:45:12 -0800</date>
            <delta_ts>2015-11-22 05:23:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151121004458.patch</filename>
            <type>text/plain</type>
            <size>217516</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Y2NjY2RlZGUzZTFiZDM4Y2VjNTZlNmVkMmEzMWNjNGRjOGE4M2Y4Li4xNmMxYjdjOGJmMGY2NWMy
NDExNjMxOGM4MGQ4YzBjN2JmZmY0NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTggQEAKKzIwMTUtMTEtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTGl2
ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5m
bzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6Om51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtl
ZENvZGVCbG9ja0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rp
b25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVs
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25D
b21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpcyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yQ29tcGxldGVkTGFiZWwpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgor
ICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZl
Q2VsbCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNDb21tb24pOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbmV3X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4
cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9y
ZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
WWllbGQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6cHJvcGFnYXRlQXJndW1lbnRzVXNlKToKKyAg
ICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JG
dW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5
TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25F
eHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNj
b3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgor
ICAgICAgICAoSlNDOjpTY29wZTo6aGFzQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvcik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAo
SlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9k
ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3Bl
cmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxv
Y2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpyZWdpc3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9m
ZnNldE9mUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9m
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVG
b3JSZWdpc3RlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpj
YWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVu
Y3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0
aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgor
ICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJs
ZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJv
bC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAg
KiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMu
anM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAg
ICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6
CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAg
ICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3Ip
OgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
Y2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6Cisg
ICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29h
KToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRl
c3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGlj
R2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZp
cnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2Vu
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1j
YWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgIChjYXRjaCk6CisKIDIwMTUtMTEtMTEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWlyOiB3ZSBoYXZlIG1vcmUgcmVnaXN0ZXIg
dGhhbiB3aGF0IHRoZSBhbGxvY2F0b3IgYmVsaWV2ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjdhYWIyYTA2MmI0NjNlYzM2
NWEzOTI3YWRjNjhkM2Y4MjE3MDJlOC4uYzQ4YzBjOTY2NjZhY2Q3YWMxY2EyNDQ3Y2RjZTNjN2Fk
ZWI1M2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQv
QmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNl
dEJpdCk6CisKIDIwMTUtMTEtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCMyBzaG91bGQgYmUgYWJsZSB0byBjb21waWxlIGFuZCBjYW5vbmljYWxpemUgTXVs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWQwYjRiYTllZjYwYTgwYzVh
NjE0M2M5ODU1YmY2N2U4YmYwM2MxMy4uZGVjMTg1NGRjYjBjNzI3Yzk1OGU2NjlhN2U1ZDliZGE2
NTAxZjYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYyLDYgKzU2
MiwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9G
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAK
ICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3Bw
CkBAIC02MDEsNiArNjA1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNv
cmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNw
cAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwCkBAIC03MzYsNiArNzQxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0x
MTk0LDYgKzEyMDAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5q
cwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpz
CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVh
ZWFiMmY5Mzk0YzY4YmRjMGEzLi5mOGFkM2I2ZDk5ZjUzNzg0YTU3YTVkYmNlZGE2ZDJmNWU0ODdk
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzCiAgICAgfQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1
bW15VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVj
dEFiaWxpdHksIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RG
Ojptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1l
VmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5j
dGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNGFiNTBlYjlmY2Q3ZjZk
NWIyNjMwZGVkNTlmYjU1N2IyNjI4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1
bmN0aW9uIG5leHQodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRo
aXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgdGhpcy5A
Z2VuZXJhdG9yU3RhdGUsIHZhbHVlLCAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBj
YWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1
ZSwgMSk7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0aGlzLkBnZW5lcmF0
b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgZXhjZXB0aW9uLCAyKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
biBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRl
eCBiZDI5YzU1YTM3MzU0ZGUzZWJhYTI5NTM4YWIxNzFjMjA5ZjEzMzEyLi5kM2JhYmFhNzE1NzJm
YjUyNjIzNWRiM2JkNDU2ZmI2MTg4NWVhYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAi
bGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5j
X2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIs
ICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwg
Imxlbmd0aCIgOiA5IH0sCkBAIC0xMjgsNiArMTMwLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5n
dGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDog
MyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfQogICAg
ICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKaW5kZXggMzE1MTFlN2MxZDFmNWU5NzM5N2NkMmI0Y2Y0OWJhOGI0YzM4YjQw
ZS4uZGU3OGM2YThlMmFkZGE1ZGY4NzQ1NmNjMzRiNDk4MWY2NmY2ZjllMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDcgKzcw
LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVx
X251bGw6CiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2Fz
ZSBvcF9pbmM6IHsKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIzLDYgKzEyNCw3
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2lu
ZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAt
MTUxLDYgKzE1Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBj
YXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKQEAgLTIzMiw2ICsyMzUsMTQgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiB2ZWN0b3IgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkKGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIHZlY3Rvci5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yNTMsNiArMjY0LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNl
IG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9h
c3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxMyw2ICsz
MjUsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoK
ICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNh
c2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxf
dmFyYXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzg4LDcgKzQwMiwx
NSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBj
b2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNl
dCgpKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3Vt
ZTogeworICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiB2ZWN0b3IgPSBjb2RlQmxvY2stPmxp
dmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAg
ICAgIHZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMThmZmEwNzBlZmNjN2U2OWU4
NjdkY2VkY2M1Yzc4NTk3MTgwZTQ4Zi4uMzNiMjllYTY4MDk2YzJmNjZlNjg4MmJlY2U3Mjk5ZDhl
Yjk1ZWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTEyODYsNiArMTI4NiwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywg
ZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBm
MCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19h
cnJvd19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEzMDMsNiArMTMx
MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDogeworICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0OTEsNiArMTUwNywyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hv
b2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRl
eCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVkIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlUmVnaXN0
ZXJzSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsK
ICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNzEyLDYgKzE3NDIsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcs
IENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJz
ID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRh
YmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3Ro
ZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOworICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5tX2Nv
ZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMTg2Nyw2ICsxODk4LDEyIEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgZGVzdFRhYmxlLm1pbiA9IHNvdXJjZVRhYmxlLm1p
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChzaXplX3QgY291bnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgp
KSB7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
Lmdyb3coY291bnQpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGRbaV0gPSB1bmxpbmtlZENvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQo
aSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSBtZXRhZGF0YSBidWZmZXJz
IGZvciB0aGUgYnl0ZWNvZGUKQEAgLTMwNDEsNiArMzA3OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpz
aHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRh
KSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5z
aHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0
ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0
IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2lu
dGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBjMWRmMTg3YzEyMjBkMmY3ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4
MmVjLi4xYTBiOThmMGNkYjJjMTVkNjAwMmFmYzQ5YTQyYWRiYTAzYmRiMDQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02OSw2ICs2OSw3IEBACiAj
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2lu
Y2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTE0MSw2ICsxNDIsOCBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3
VmFsdWUpOwogCisgICAgaW50IG51bUNhbGxlZVJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzOyB9CisKICAgICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMo
KSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBt
X251bVBhcmFtZXRlcnMpOyB9CiAKQEAgLTY1NCw2ICs2NTcsMTAgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hK
dW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5n
SnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFT
RV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBh
dCB5aWVsZCBwb2ludHMuCisgICAgaW50MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZChGYXN0Qml0VmVjdG9yIHZlY3RvcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rvcik7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSAtIDE7
IH0KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChp
bnQgaW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgRXZhbENvZGVD
YWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUg
ewpAQCAtOTAwLDYgKzkwNyw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAor
ICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZDsKKwogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4
IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjdjMzExNGE5ODc5NmU0
YWI4MDQ2YWRjMDhkYjY0MWRkMjliNzhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwxOSArMjYsMjEgQEAKICNpZm5kZWYg
RXhlY3V0YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxlSW5mb19oCiAKKyNpbmNsdWRlICJH
ZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBu
ZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlz
Q29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0
aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisg
ICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JU
aGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVu
Y3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OCw4ICs1MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9k
ZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1
Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsg
fQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0K
KyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBA
IC01Nyw4ICs2MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9p
c1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAg
dW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0
b3JUaGlzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNl
TW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0
NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uZTFmMjA4ZGU4YzcyYjhhYzM4ODA1NzQxZjE0
MGE2ZTA5M2Q4Y2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCArNjUsMTEgQEAKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8u
aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0
aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpcygpKSkKICAgICAsIG1fZmlyc3RMaW5l
KDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisg
ICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQog
ICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uMTdhNWVi
ZWExNWE1MjMwNDg4ZWY0NzIyODY3OWQzMzIyZmUxNzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIK
ICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhp
cy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTE2LDcgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDQs
NyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9
CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBH
ZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxH
ZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0
KCkKICAgICB7CkBAIC0yMjMsNiArMjI2LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJz
LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjQ0LDYgKzI0OCwxMSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdT
d2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7
IH0KICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGlu
dCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxs
ZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZMaXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSA6IDA7IH0KKyAgICBpbnQz
Ml90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBBU1NFUlQobV9yYXJl
RGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2lu
ZGV4XTsgfQorCiAgICAgdW5zaWduZWQgYWRkRnVuY3Rpb25EZWNsKFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBuKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fZnVuY3Rpb25E
ZWNscy5zaXplKCk7CkBAIC0zODcsMTIgKzM5NiwxMyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
OiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6
IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKIAogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0
dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKQEAgLTQzNiw2ICs0
NDYsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAg
ICAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lz
dGVyc0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBv
c2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5
ZDU5YjYuLjJiZjZhODIwOTFiMGUxY2NmN2IyYTRiYmRhOTdiNmY0MmU2YzA2MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQAogc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBh
cnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rp
b24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDog
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1
bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUo
JnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVk
c0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1v
ZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVu
Y3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlv
bigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRv
clRoaXMoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygp
KSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZh
cmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZl
cnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0
cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUt
PmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1
bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdl
bmVyYXRvclRoaXMpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNj
b3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcg
KzE4MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rp
b24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewog
ICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoK
QEAgLTE5Niw3ICsxOTYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVy
cm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5
YzFmOC4uYjVlMWY2ZmNjNmQ0NzIzM2Q5NWMxZDNkZTdhMGMxNjEzOWM1N2Q4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgog
I2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJ
bmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUs
MTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJp
ZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlz
LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3Vy
Y2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
LCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0cmlj
dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVu
Y3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0
aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsg
fQogCiAgICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2Vk
Qm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVt
bjsgfQpAQCAtOTUsNyArOTcsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAg
ICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJz
ZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xv
YmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEyNyw5IEBAIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJv
b2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3Rv
cktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3Bh
cmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJl
ZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZp
cm9ubWVudCYpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJl
KiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVy
cmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE1OSw3IEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
dW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9u
TW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBt
X2dlbmVyYXRvclRoaXMgOiAxOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDllZTYxMTFjYzNkMDdmNjM0NGM5NWUwOGYy
ZGVlOWRmYzgwNjU0YzIuLmI0NGQxNTk1MzRlNmE2N2NjN2EwNTM5MjZmYjk4MTc4NjUzMTQ5M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtMTk4LDcgKzE5OSwxMCBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIC8vIG9wX3dpbGxfY2Fs
bCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUg
bm90CiAgICAgLy8gY29tcGF0aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9m
IGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5Ci0gICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVz
ZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQ
cm9maWxlSG9va3MpCisgICAgLy8KKyAgICAvLyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0b3Is
IGFsbCB0aGUgY2FsbHMgY2Fubm90IGJlIHRhaWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJlc3Vs
dHMgd2lsbCBiZSB3cmFwcGVkIGFzIGFuIGl0ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRwOi8v
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9u
CisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0Nv
bnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25l
ICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFyc2VN
b2RlKCkgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAoYXV0
byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAg
ICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC0yMjQsOSArMjI4LDIyIEBAIFBhcnNl
ckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsK
ICAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gZnVuY3Rpb25O
b2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworCisgICAgLy8g
R2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVu
Y2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUu
CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisg
ICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CisKKyAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7
CisgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0
ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KKyAg
ICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQg
YmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KKyAgICAgICAgLy8gVG8gd29ya2Fyb3Vu
ZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBw
aW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9y
LgorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9CisK
ICAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzKQogICAgICAgICBmdW5jdGlvbk5v
ZGUtPnZhckRlY2xhcmF0aW9ucygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAgICAg
CkBAIC0yNTEsMjkgKzI2OCw3NCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxsZWVS
ZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwotICAgIAotICAgIGlmIChmdW5jdGlv
bk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0
aW9uTW9kZSgpKSkgewotICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1l
U2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKTsKLSAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMo
ZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7Ci0gICAgICAgIGJvb2wgbWFya0FzQ2FwdHVy
ZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwotICAgICAgICBl
bWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVl
UmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3VsZENh
cHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKLSAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlciA9IGFkZFZhcigpOwotICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVu
dmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMu
IElmIHdlIGhhdmUKLSAgICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdl
IGhhdmUgdG8gaG9sZCBvZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVj
YXVzZQotICAgICAgICAvLyB0aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVu
dCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50LgotICAgICAgICBpZiAoIXBhcmFtZXRlcnMu
aGFzRGVmYXVsdFBhcmFtZXRlclZhbHVlcygpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxl
eGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwotICAgIH0KIAotICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0
cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNp
emUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rl
ci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKQotICAg
ICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIC8vIEJlZm9yZSBlbWl0dGlu
ZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFp
bnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorCisgICAgICAgIC8vIEFsbCB0
aGUgcGFyYW1ldGVycyBmb3IgYSBnZW5lcmF0b3Igc2hvdWxkIG5vIGJlY29tZSBoZWFwIHZhcmlh
YmxlLiBTbyB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGVtIGhlcmUuCisgICAgICAgIC8vIFRoZSBwYXJh
bWV0ZXJzIGFyZSAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlKS4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1l
dGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgICAgIG1f
dGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkp
OyAvLyB0aGlzCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKworICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGVtaXRNb3ZlKG1f
Z2VuZXJhdG9yUmVnaXN0ZXIsICZtX3BhcmFtZXRlcnNbMV0pOworICAgICAgICBpZiAoZ2VuZXJh
dG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1vdmVF
bXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRj
aF9pbW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRp
bmUgc3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBjYWxs
aW5nIGBuZXh0KClgLCB3ZSB3b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGlu
c3RlYWQgb2YganVtcGluZyBiYXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4K
KyAgICAgICAgLy8gSXQncyBzdWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlu
bGluZXMgb25lIGBuZXh0YCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBiZWdp
bkdlbmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIENvbXBs
ZXRlZCBzdGF0ZS4KKyAgICAgICAgLy8gV2UganVtcCB0byB0aGUgbV9nZW5lcmF0b3JDb21wbGV0
ZWRMYWJlbCBpbW1lZGlhdGVseSBiZWNhdXNlIHdlIGNhbm5vdCB1c2UgYW55IHRlbXBvcmFyeSBy
ZWdpc3RlcnMgaGVyZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAg
ICAgbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRK
dW1wKG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkpOworCisgICAgICAgIC8vIEV4ZWN1
dGluZyBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAg
ZW1pdFRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICAgICAg
Ly8gSW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsKKworICAgICAgICBp
ZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgeworICAgICAgICAgICAgbV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICAgICAgLy8gV2UgY2FuIGFs
bG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFy
YW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCisgICAgICAgICAgICAvLyBkZWZhdWx0IHBh
cmFtZXRlciBleHByZXNzaW9ucywgd2UgaGF2ZSB0byBob2xkIG9mZiBvbiBhbGxvY2F0aW5nIHRo
ZSAidmFyIiBlbnZpcm9ubWVudCBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgcGFyZW50IHNj
b3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVyIGVudmlyb25tZW50
LgorICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmhhc0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXMo
KSkKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25O
b2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUg
PSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNh
cHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CisgICAgICAg
ICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5h
bWVDYXB0dXJlZDsKKyAgICAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rp
b25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKKyAg
ICAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9u
J3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQorICAgICAg
ICAgICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBv
ZmYgb24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAg
ICAgLy8gdGhlIHBhcmVudCBzY29wZSBvZiB0aGUgInZhciIgZW52aXJvbm1lbnQgaXMgdGhlIHBh
cmFtZXRlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVycy5oYXNEZWZh
dWx0UGFyYW1ldGVyVmFsdWVzKCkpCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGlj
YWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIg
cGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKKyAgICAgICAgLy8gbmVl
ZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICAgICAgbV9wYXJhbWV0ZXJzLmdyb3co
cGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAg
ICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmlu
ZGV4KCkpOyAvLyB0aGlzCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsK
KyAgICB9CiAgICAgCiAgICAgLy8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFi
b3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0g
ZmFsc2U7CkBAIC00NjAsNyArNTIyLDM2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgfQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigp
OwotICAgIGlmICghY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
OiB7CisgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpKQorICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlz
UmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0
ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAg
ICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
CisgICAgICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1Jl
Z2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX3Ro
aXNSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFdmVuIGlmIGl0
J3Mgbm90IGNhbGxlZCB3aXRoIGBuZXdgLCBhIGdlbmVyYXRvciBmdW5jdGlvbiBwcm9kdWNlcyBh
IGdlbmVyYXRvciB3aXRoIGBjcmVhdGVfdGhpc2AuCisgICAgICAgICAgICBlbWl0TW92ZShtX2dl
bmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBlbWl0Q3Jl
YXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAg
ICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0Nv
bnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIs
ICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQpAQCAtNDc2LDkgKzU2Nyw4IEBAIFBhcnNlckVycm9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygp
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5j
dGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0K
IAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFs
aXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlz
IGNhbGxlZApAQCAtODM3LDYgKzkyNywyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6bmV3VGVtcG9yYXJ5KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitGYXN0Qml0VmVjdG9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkKK3sKKyAgICByZWNsYWlt
RnJlZVJlZ2lzdGVycygpOworICAgIEZhc3RCaXRWZWN0b3IgdmVjdG9yOworICAgIHZlY3Rvci5y
ZXNpemUobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAg
Zm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZVJlZ2lzdGVycykgeworICAgICAg
ICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICB2ZWN0b3Iuc2V0KGkpOworICAgICAg
ICArK2k7CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisKKwogTGFiZWxTY29wZVB0ciBC
eXRlY29kZUdlbmVyYXRvcjo6bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlIHR5cGUsIGNv
bnN0IElkZW50aWZpZXIqIG5hbWUpCiB7CiAgICAgLy8gUmVjbGFpbSBmcmVlIGxhYmVsIHNjb3Bl
cy4KQEAgLTIyOTQsMTIgKzIzOTksMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAg
ICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJv
cGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsg
Myk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgp
LCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90
aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkp
OyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NTMs
MjAgKzI1NTgsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5
KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9
CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJu
IGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVk
IGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29w
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7
Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0
T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ3NSwxMyArMjU2NiwyNSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4
cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUq
IGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5v
ZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8
IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9u
KSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0
Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjQ5NCwxNyAr
MjU5NywxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24o
UmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1
bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5j
LCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24o
ZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwg
QXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCkt
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlz
Q2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRv
clRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRo
aXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5j
LCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25D
b21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNTIyLDYgKzI2MjYs
MTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3Ry
dWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRz
dCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQoreworICAgIHVuc2lnbmVkIGluZGV4
ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsK
KyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVu
Yyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
aW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVk
RnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0
Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNzQ4LDYgKzM4NjUsMjQgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVy
dHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMuYXJndW1l
bnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICB9CisgICAgeworICAgICAgICBS
ZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0Lmdl
dCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgZW1pdExhYmVs
KHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8TGFi
ZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzgxMyw0ICszOTQ4LDI0NSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjppbnZhbGlkYXRlRm9ySW5Db250ZXh0Rm9yTG9jYWwoUmVnaXN0ZXJJRCog
bG9jYWxSZWdpc3RlcgogICAgIH0KIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwg
YXJndW1lbnQsIGZhbHNlKTsKKyAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9
IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVn
aXN0ZXJzKCkpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0
b3JSZXN1bHQuZ2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlUmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0
aW5nKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1p
dEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1v
ZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwu
Z2V0KCkpOworCisgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAg
ICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhy
b3dNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFi
ZWwuZ2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5SZWdpc3RlciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5l
cmF0b3JWYWx1ZVJlZ2lzdGVyKCksIHRydWUpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9j
aygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFy
eSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNj
b3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRl
Q2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5n
ZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwu
Z2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAg
Ly8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJu
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmlu
ZWQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRv
clN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhp
cywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBh
cmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3Iu
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0
cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExv
YWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChu
ZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOwor
ICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQg
PSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgdmFsdWUuZ2V0KCksIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJs
b2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkp
OworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5k
ZXgpOworICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAg
ICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKDApKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdl
dCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+
IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9w
KG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigyKSkpOworICAgICAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBu
ZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFJldHVybi4KKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPExhYmVsPiByZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1
cm5LZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJ
c1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuRnJv
bUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRz
LmFyZ3VtZW50UmVnaXN0ZXIoMCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0
dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3Jh
cnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0
ZXIgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2Nr
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRN
b3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRS
ZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBy
ZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRv
clJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9y
LmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0
KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29t
cGxldGVkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJh
dG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93LgorICAgICAgICAgICAgICAgIGVtaXRMYWJl
bCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2ROb3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93
S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVm
aW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZv
dW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJn
dW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodGhy
b3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9k
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRocm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgp
LCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0
ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9y
IGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iKSk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbChu
b3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0
KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3Iu
Z2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlk
KHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJl
dHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFs
dWUsIGJvb2wgZG9uZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZHN0Owor
ICAgIGlmICghZHN0IHx8IGRzdCA9PSB2YWx1ZSkKKyAgICAgICAgcmVzdWx0ID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgZW1pdE5ld09iamVjdChyZXN1bHQuZ2V0KCkpOworICAgIGVtaXREaXJlY3RQ
dXRCeUlkKHJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUsIGVtaXRMb2FkKG51bGxw
dHIsIGpzQm9vbGVhbihkb25lKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVt
aXREaXJlY3RQdXRCeUlkKHJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlLCB2YWx1
ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsK
K30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGlu
dDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBl
bWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBs
YWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxh
YmVsKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICAvLyBGSVhN
RTogTWFrZSBzdXJlIHdlIGNhbm5vdCBlbWl0IGBicmVha2AuCisgICAgYmVnaW5Td2l0Y2goc3Rh
dGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3aXRjaElu
Zm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRj
aENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJ
bmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1w
VGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCAr
IDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50
MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1w
VGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNl
dHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1
bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBh
ZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAg
ICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAg
ICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAg
ICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3
aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgfQorCisgICAgZW1pdExhYmVs
KG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkpOworICAgIHsKKyAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBlbWl0RXF1YWxpdHlPcChv
cF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKwor
ICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChuZXdUZW1wb3Jhcnko
KSwgZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICAgICAg
ZW1pdFJldHVybihpdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBUaHJvdy4KKyAgICAgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICBl
bWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQxOTFmOTlmNWYwOWE3Y2U0NjY5N2E3YjkwNDkw
ZGQ5NDlhNDdhYmEuLjYxMGE3NzUwMTVhZThlYmYwMGMyMmY4MGVjN2JmNGVmYzE2YTI0ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3Jf
aAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNp
bmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw3IEBACiAKICAgICAgICAgYm9vbCBpc0Nv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsg
fQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdlbmVyYXRvclRo
aXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JU
aGlzKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiAr
Mjk5LDggQEAKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1cm4g
bV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVnaXN0
ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0dXJu
cyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0dXJu
ZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3JtIG9m
IHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSByZWZj
b3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAtNDk5
LDEwICs1MDMsOCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJ
RCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0
IGVsaXNpb24KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJ
RCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZh
dWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdp
c3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNF
eHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQq
IGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5Niw2ICs1OTgsNyBAQAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xv
c2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlKTsKIAogICAgICAgICBib29sIGVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0
IFZhcmlhYmxlJik7CkBAIC02NDIsMTIgKzY0NSwyNSBAQAogICAgICAgICB2b2lkIGJlZ2luU3dp
dGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBl
bmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9u
Tm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7
CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lk
IGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdJdGVyYXRvclJlc3VsdChS
ZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIGJvb2wpOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJh
dG9yKFJlZ2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1
bHRMYWJlbCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbNF07IH0KKwogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZVR5cGU7IH0KIAogICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7
IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRF
bWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpOyB9CisKKyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWls
dGluRnVuY3Rpb247IH0KIApAQCAtNjY1LDYgKzY4MSw4IEBACiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
Y29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7Cisg
ICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwg
QmFzZUZ1bmNFeHByTm9kZSopOworICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVDYWxsZWVSZWdp
c3RlcnMoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZh
cmlhYmxlRW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0
ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTc1NCw4ICs3
NzIsMTEgQEAKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKICAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSkpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhp
cyA9IEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpFbXB0eTsKIAotICAg
ICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwg
bV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0
QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBt
ZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDog
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywg
dmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJs
ZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC03NzQsNiArNzk1LDggQEAKIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigp
OwogCisgICAgICAgIExhYmVsKiBnZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCk7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gbV9pbnN0cnVjdGlvbnM7CiAKQEAgLTgwMiw2ICs4MjUsNyBAQAogICAgICAgICBSZWdpc3Rl
cklEKiBtX3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9h
cmd1bWVudHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
bV9nZW5lcmF0b3JSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9l
bXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xv
YmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3
VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC04MjUsNiArODQ5LDggQEAKICAgICAgICAg
VmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAg
ICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKKyAgICAgICAgUmVmUHRy
PExhYmVsPiBtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsOworICAgICAgICBWZWN0b3I8UmVmUHRy
PExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25W
YXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVu
Y3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsK
ICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDg3M2Y0YWI0NDI0MDcwZGM3ZmQ4NjYzMWFjNDVhMTRkYzE1ZTE4MmYuLjg1NWEzMzg3
Y2NjMzU4ZDFjNzljYTM4NzEwZTgzYmM0MjY2M2UzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFi
ZWxTY29wZS5oIgpAQCAtMTQ1LDcgKzE0Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAK
IFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRU
RFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkKQorICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVy
YXRvci5nZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTI1ODMsMTMgKzI1ODQsMjcg
QEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKICAgICAgICAgZHN0ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihk
c3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbnVsbHB0cjsKKyAgICBpZiAo
bV92YWx1ZSkgeworICAgICAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBt
X3ZhbHVlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChnZW5lcmF0b3IucGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICByZXR1cm5S
ZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgcmV0dXJu
UmVnaXN0ZXIuZ2V0KCksIHRydWUpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShy
ZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3Rh
dGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJ
bkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFBvcFNjb3BlcyhnZW5lcmF0b3Iuc2NvcGVSZWdpc3Rlcigp
LCAwKTsKICAgICB9CiAKKyAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coZW5kT2Zmc2V0KCkpOyAKQEAg
LTI5NjYsMjYgKzI5ODEsODggQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0
T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRzQnl0
ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRl
bWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAg
IFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworICAgIHN3aXRjaCAoZ2VuZXJhdG9yLnBhcnNl
TW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5n
bGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3Rh
dGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0
YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7CisgICAgICAgIEFT
U0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5j
RXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOwogCi0gICAgLy8gQ2hlY2sg
Zm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQg
b2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0
ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50
SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RT
dGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0
ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBz
dGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUs
IG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAgICAvLyBJ
ZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0g
ICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9y
LmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5l
bWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShyMCwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8g
RG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdz
IG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICBSZWdpc3RlcklEKiBpbml0
aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkluaXRpYWwp
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJh
dG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVBy
aXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lz
dGVyKCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERv
IG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBu
b3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0
KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JS
ZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBnZW5lcmF0b3JC
b2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVy
YXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wKGdlbmVyYXRvci5nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKyAg
ICAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KGdlbmVyYXRvckJvZHlM
YWJlbC5nZXQoKSk7CisKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3Is
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGRvbmUu
Z2V0KCkpOworCisgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZ2VuZXJhdG9yLmVt
aXRMYWJlbChnZW5lcmF0b3IubmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5wb3BUcnlBbmRFbWl0Q2F0Y2godHJ5
RGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCks
IGNhdGNoSGVyZS5nZXQoKSwgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkRmluYWxseSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKKworICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSksIHRydWUpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgZGVmYXVsdDogeworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgU3RhdGVtZW50Tm9k
ZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIFJl
dHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworCisgICAgICAgIC8vIENoZWNrIGZvciBhIHJldHVy
biBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xl
IGJsb2NrLgorICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+
aXNCbG9jaygpKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5C
bG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0
ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3Rh
dGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuTm9k
ZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0
aWNhbGx5IGluc2VydCBvbmUuCisgICAgICAgIGlmICghcmV0dXJuTm9kZSkgeworICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgorICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zm
c2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2Fs
bEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIH0KIApAQCAtMzAxMywx
MSArMzA5MCwyNCBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVs
ZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBzdHViLiBXaGVu
IGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1wbGVtZW50IGl0LgotICAg
IGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50
ZWQgeWV0LiIpKTsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQo
YXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwor
ICAgIH0KKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGVsZWdhdGVZaWVsZChh
cmcuZ2V0KCksIHRoaXMpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3Qs
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdl
dCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENsYXNzRGVjbE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKaW5kZXggMjA3ZTBiMzNlOTgyMzllZTRiNDJhNTU1ZDQ5ZjQxYWQ3NDc0ZTg4NS4uZTBm
ZWFkM2QyMjAwYTkyMDI0NjJjMDA5ODJiYjQxZmQ5ZjQwZWUzOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaApAQCAtOTYsNiArOTYsOCBAQCBjbGFzcyBIZWFwIHsKICAgICAvLyBvdXIgc2Nh
biB0byBydW4gZmFzdGVyLiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc190aW1lQ2hlY2tS
ZXNvbHV0aW9uID0gMTY7CiAKKyAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogb3BhcXVl
UG9pbnRlcik7CisKICAgICBzdGF0aWMgYm9vbCBpc0xpdmUoY29uc3Qgdm9pZCopOwogICAgIHN0
YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCB0ZXN0QW5k
U2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IGY0YWNmMjVlNjBlMTg5MzhhNjhhN2I4ZGI5NTk1NGQ2YTI1MDJiMjQuLmI4
ZjdkNzZmZmZjZDAwMDY0ZThkZWNiNjUxYzlhZmFjYWJjYjc3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtNzAsNiArNzAsMzYgQEAgaW5saW5lIEhlYXAq
IEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2KQogICAgIHJldHVybiBoZWFwKHYuYXNDZWxsKCkp
OwogfQogCitpbmxpbmUgYm9vbCBIZWFwOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCit7Cisg
ICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBMb29rIHVwIGJlbG9u
Z2luZyBNYXJrZWRCbG9jayBhbmQgZmlsdGVyIG91dCBpZiBpdCBpcyBub3QgYWxsb2NhdGVkLgor
ICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBtX29iamVjdFNwYWNlLmJsb2NrcygpLmZpbHRl
cigpOworICAgIE1hcmtlZEJsb2NrKiBjYW5kaWRhdGUgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3Io
cCk7CisgICAgaWYgKGZpbHRlci5ydWxlT3V0KHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oY2FuZGlk
YXRlKSkpIHsKKyAgICAgICAgQVNTRVJUKCFjYW5kaWRhdGUgfHwgIW1fb2JqZWN0U3BhY2UuYmxv
Y2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIHBvaW50ZXIgaXMgQXRvbUFsaWduZWQuIElm
IG5vdCwgdGhpcyBwb2ludGVyIGlzIG5vdCBwb2ludGluZyB0byBhIGhlYWQgb2YgYSBjZWxsLgor
ICAgIGlmICghTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIFRlc3QgdGhhdCB0aGUgZ2l2ZW4gY2FuZGlkYXRlIE1hcmtlZEJsb2Nr
IGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBpbiBWTSdzIEhlYXAuCisgICAgLy8gVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCB0aGUgY2FuZGlkYXRlIE1hcmtlZEJsb2NrIGRlZmluaXRlbHkgZXhpc3RzLgor
ICAgIGlmICghbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5jb250YWlucyhjYW5kaWRhdGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgcG9pbnRlciBjYW4gYmUgdXNl
ZCBhcyBvbmUgb2YgY2VsbHMuIE5vdCBwb2ludGluZyB0byBtZXRhZGF0YSwgb3IgbWlkZGxlIG9m
IGNlbGxzLgorICAgIGlmICghY2FuZGlkYXRlLT5pc0F0b20ocCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIFRoZSBjZWxsIHBvaW50ZXIgaXMgbm90IHphcHBlZC4gSXQgbWVhbnMg
dGhpcyBjZWxsIGlzIGFjdHVhbGx5IHVzZWQuCisgICAgcmV0dXJuICFyZWludGVycHJldF9jYXN0
PGNvbnN0IEpTQ2VsbCo+KHApLT5pc1phcHBlZCgpOworfQorCiBpbmxpbmUgYm9vbCBIZWFwOjpp
c0xpdmUoY29uc3Qgdm9pZCogY2VsbCkKIHsKICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmJsb2Nr
Rm9yKGNlbGwpLT5pc0xpdmVDZWxsKGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKaW5kZXggZDViMTQ5MmFlN2Y1M2RlNmNhNjU1MTljNTcyZWI2MWVlYjM5ZTMw
ZS4uNTQ2OTcxY2U4ZjUzOGI5ZTMzNWNmZmZiMjg0NzMzYmQ5NjE1NGUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0xNTUsNiArMTU1LDcgQEAKICAgICAg
ICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCBpc0xp
dmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7
CisgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCBpc01hcmtl
ZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2Vk
KGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CkBA
IC0zODgsNyArMzg5LDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCisgICAgaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsKICAgICAgICAgc2l6ZV90
IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHApOwpAQCAtMzk5LDcgKzQwMCwxMyBAQAog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXRvbU51bWJlciA+PSBtX2Vu
ZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50byBpbnZhbGlkIGNlbGxzIG91dCBvZiB0aGUg
cmFuZ2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KIAorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZv
aWQqIHApCisgICAgeworICAgICAgICBpZiAoIWlzQXRvbShwKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwq
PihwKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2Q2ODZiNzJh
ZGQ0YjQ4ZDlhNjM2YzM0ZmYwOWFiZmViZDg0ODVlZS4uNWUyNTQxM2I4ZDg0ODdiNWY1NTVkZjky
MzJhNDI4YTIzYzc1ZTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEzLDYg
KzIxMyw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9P
UChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERF
RklORV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0yNTksNiArMjYxLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZl
cikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQor
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVG
SU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
b2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IGU5NjgyOTJhYjcwMjRhOGMyYWZlYWZmZDBmZTQ1OTJjYzg1MzY0NzAuLjA5
MTg2NDdlNmExYTA1N2ViNzk0ODNmNGZkM2EyMzRjNmM1YTdhODIgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVf
b3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5
X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24q
KTsKQEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1
ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQs
NyBAQAogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vu
c2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAK
KyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAg
ICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjMWJiNzQzZmNiN2UyY2RmYjBhMmRjN2QxZDhkMzk0
OTdmODYyMGM4Li5iYmFmZTliMmYxNTcyZTc1NGQ4OTY0MWE5ZDFhMmY2ZjNiMGE3NWU2IDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsK
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3OCwx
NCArOTc4LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y0V4ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmNFeGVjKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y0V4ZWMpOworICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNv
bW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5j
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4
cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKQEAgLTEwMTgsMTEgKzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXRO
ZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vsc2Ug
CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7CiAjZW5kaWYKLSAgICBlbHNlCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9u
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVn
VDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob3Bjb2Rl
SUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7
CisgICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50
SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJD
b21tb24oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTEzOTksNiArMTQyNywxOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkwNjM2
ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9m
aWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
Ym9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmlu
aGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAg
aWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rp
b25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29w
ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBm
YWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAgIEFT
U0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5m
bygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICBy
ZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
LCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52
YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlv
bkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQp
CiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVj
dXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpAQCAt
MTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZjZjNTdmM2QxY2I3ZTQ1NjIy
NjM2MmE5MmEwZmQwOTk0MDU5OWQ0NS4uY2FlMDQyYTBhMGI0NTA2OWViMDRjMjBiNWY0NzVlZWVk
ZDQ0MjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTI5OSw2ICsyOTksOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li41
ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNT
dGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQyLDE4
IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3Bl
KSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVu
Y3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0Fj
dGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJd
LnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExM
SU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAg
LTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRV
Uk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5v
cGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisgICAg
TExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGVi
ODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTks
NiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hf
c3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggODQ5YjJkNzUzMzIwMzFhMGU2Yzc0ODg1MTExMjIwZGIyYTdkMDlhNC4uYjkzZTRjMzEy
Y2QzYzhlYzg2Y2UxNTEwZjc0OWY1OGJkZmRjNzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIyNyw2ICsxMjI3
LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0
KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwx
MSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0
KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBA
IC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQog
CiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc3Vt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVz
dW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKaW5kZXggN2M4NWFjMGNiODM4NzUyNDM4MjJkMWJkMDEzYTNmNzkzY2U3
ZDlhOS4uMjRmNjA5Y2NmM2FlYTViODBlNjZiM2Q0ZGRjZDU0Y2QzMjAwOGI5OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MCw5ICszNDAsMTEgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlp
ZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAg
ICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisg
ICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAg
IFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUo
bG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2
MywxMiArMzY1LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQs
IGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3Bh
cnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODU1LDYgKzg1Nyw5IEBA
IGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3RhcnRPZmZzZXQo
b2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB1
c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1YWQ2
M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5NzhlYmFj
NTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFy
dCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikK
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29s
dW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRD
bG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2Vk
VgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29u
dGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGNkZTQ5YTliNmE2MDQ1
Njk4ZWJlYmQ0ZDA5YTdlY2IzYWU5MmZjMzQuLjFlODJjZDg3OGI4NmEwMTg3ZWFiZDRlZWE2YjM4
Njc0Yjc0MmE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTIs
NyArMTgxMiw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAt
MTgzOCw3ICsxODM4LDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25l
ZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5l
U3RhcnRPZmZzZXQpCkBAIC0xODY1LDcgKzE4NjQsNiBAQAogICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAx
OwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkyNyw3ICsxOTI1LDcgQEAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzNzRiY2IyY2IzNWIwNTQ3YmE1
ZDM5ZjQ1MTM5NTM3MTc5NDNmNDFkLi4zNjNjODZjZmQ0ZWUxZGM3ZmJhYTYyNTVkNjQ4YjUyNDE1
MDY0NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNDcs
NyArMjQ3LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZh
bHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAg
UGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwor
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkK
KyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5jdGlv
blBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBt
X3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9y
KCkpIHsKQEAgLTI3MSw4ICsyNzQsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250
ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250
ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50
cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9y
U3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtMjk5LDcgKzMw
NiwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNjb3Bl
LT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJlZFZh
cmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQo
ZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgIHNj
b3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgaWYg
KHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpOworICAg
IH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAg
ICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9k
ZUZlYXR1cmU7CkBAIC0zMDksMTAgKzMyMywxMCBAQAogICAgICAgICBmZWF0dXJlcyB8PSBNb2Rp
ZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkQXJndW1lbnRzKQogICAgICAg
ICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7CisKKwogICAgIFZlY3RvcjxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwotICAg
ICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRvIGFsbG93IGJ1aWx0
aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkpOwpAQCAt
NDU2LDYgKzQ3MCw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVt
ZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBz
dGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9u
LnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRp
b24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGlu
Zm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
OworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5z
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8g
Z2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdl
bmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250
ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2Rl
KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BT
Y29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1
bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpbmZvLnBhcmFtZXRl
ckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGlu
Zm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5t
X2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisK
KyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0
TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHBy
U3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2Vu
RW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxl
bWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
VHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2ln
bmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRv
Y3VtZW50ZWQgaGVyZToKQEAgLTE1NTQsMTMgKzE2MDcsMTIgQEAKICAgICBUcmVlQnVpbGRlciYg
Y29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1
bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0Up
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NzIsNyArMTYyNCw3IEBACiAgICAg
ZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNr
ZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBh
cnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVt
biA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNl
TW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTU4OCw2ICsxNjQwLDggQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0
b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTY2Niw2ICsxNzIwLDM3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQorewor
ICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgp
OworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8v
IEBnZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3IsIDApOworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7
CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
U3RhdGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRl
cigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAg
YXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUs
IDApOworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwor
ICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJp
dmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0
aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTc3
NiwxMiArMTg2MSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0Owog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0
YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBi
b2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0
cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1v
ZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0
cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9k
eVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZv
KTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CkBAIC0xNzk1LDcgKzE4NzgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xl
eGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVu
Y3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0g
ICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBl
ID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAt
MTgxNywxNCArMTkwMCwyOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9
IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUo
KTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlv
bkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0
byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJz
ZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0
cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50
LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+
c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAg
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKwor
ICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUs
IGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4K
KyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKyAgICAgICAgcG9wU2NvcGUoZ2Vu
ZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0
aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElm
RmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAi
LCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0
KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChm
dW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZv
Lm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQg
ZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwg
ZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFt
ZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE4OTIsNyArMTk4OSw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShU
SU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4
dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBw
YXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUs
ICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwNDMsNyArMjE0
MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7
CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsK
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdw
cm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2Vu
ZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3ODcsNiAr
Mjg4NCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBh
cnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0
YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsK
QEAgLTI3OTQsMTMgKzI4OTIsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBj
b25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5T
dGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2
b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yOTg5LDcgKzMwODgsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rv
a2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25l
ZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJl
ZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlz
R2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVy
YXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhj
b250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0
aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
dGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5m
byk7CkBAIC0zMjQyLDcgKzMzNDEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5h
cnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5F
UkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJz
ZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIp
OwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rp
b25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGUyMTNlMDcy
ZmI4MGU3NDhmODU2MjVhNjczOGNkMTdlY2ExNmYwOTIuLjE2ZWI1YjFhMGRhMzkzZjM2MDBhNjRk
NzEzZWE4MTQ3YmI0MWMzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxT
Y29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAg
ICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMo
ZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRo
KDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwg
bV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVu
Y3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1Zh
bGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0Fy
Z3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1f
bG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAg
ICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2
LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3Io
KTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9u
KCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVy
TW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgs
NiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0
SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1
ZTsKQEAgLTQ3MCwxNiArNDc4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3Vz
ZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0Ojpp
dGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAg
ICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91
c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8
IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAg
ICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRT
Y29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3Bl
LT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xl
eGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBi
ZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0
ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50
cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFi
bGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1w
bCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxl
IHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1
cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4
aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAi
Y2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxl
cyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRW
YXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVk
U2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZh
cmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2Vk
VmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRz
IHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU3MCwxNCArNTgyLDIyIEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lz
RnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsK
ICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZh
bHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgewor
ICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOwor
ICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNG
dW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNB
cmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU5
OSw2ICs2MTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6
IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFs
aWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQg
bV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTExMTMsNiArMTEzNCw3
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYs
IFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRl
ciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRl
cmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0
aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xh
c3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE3NSw2ICsxMTk3
LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5F
VkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25S
ZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29w
ZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9k
ZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4
cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQ
YXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjliZDcx
NTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0Nyw3
IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2Rl
LAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAgIEdl
dHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiArNjIs
NyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0x
MDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDVkMzkzYTNkYTdlN2U1
OWRiODZlNjNjZGJmYWRmZDk5NWE1MWU5YzkuLmYxY2NjZmFiMTk0ODU4MTYwN2Q4Mjc1YTM2NTlh
MmRiMDQwYjY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCkBAIC0xNzksMTAgKzE3OSwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0
dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHBy
OyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Np
b25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0
dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hl
Y2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwg
U291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7
IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwg
Q29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbklu
Zm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lkIHNl
dEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRz
KCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CkBAIC0zNTYsNiArMzU2LDggQEAgY2xhc3Mg
U3ludGF4Q2hlY2tlciB7CiAgICAgaW50IGVuZE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KICAg
ICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAorICAgIHZvaWQgcHJvcGFnYXRl
QXJndW1lbnRzVXNlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgaW50IG1fdG9wQmluYXJ5RXhwcjsK
ICAgICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1ZTBmNTZlYzBmNjljZGM3Y2Jl
ZGYwZS4uYjM4YmY5NWVkOTAxNTE1ZjllYTRkZWI4NmJiYTE3NjAwYzU0MGRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVj
dXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24o
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVj
dG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMg
d2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlh
YmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2
bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJp
bGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZW1wdHlURFpWYXJp
YWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9z
b3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2MmJl
ZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4MWJmMWI0
YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNy
byhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVyYXRv
ckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAg
ICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVpbnQzMkFy
cmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5
KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAor
ICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCBjNGY2YzIyYzc1NDg4OTE5MGNiZjExYjQ1YTQ5MTRiY2FmNzk5OTExLi40YTlkMDAwMWU1
NjVhYmZhYWMwNjdmNjMxZDcwZWMxNDdhZDcyZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwzNyBAQCBzdGF0aWMgQ29tbW9u
U2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0sIGlu
dCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2
ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVy
cy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAgICAv
LyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2gg
Z2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0
b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0
cjsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IpOworICAgIGlmIChnZW5lcmF0b3Iu
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lLCBzbG90KSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJh
bWUqPihzbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgoKGV4ZWMtPnJl
Z2lzdGVycygpIC0gMSkgLSBleGVjLT50b3BPZkZyYW1lKCkgKyAxKSA9PSBleGVjLT5jb2RlQmxv
Y2soKS0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZy
YW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVSZWdp
c3RlcnMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwg
UHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQorICAgIGludCBsaXZlQ2FsbGVlUmVn
aXN0ZXJzSW5kZXggPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnNhdmUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdp
c3RlcnNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5q
c1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSkpOworICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBw
Y1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KSk7
CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiMGJhOWU4ZGExZTEzNTBlY2VlYWNj
ODFkMjdiYzhjYTJiMzlkZGRkLi4yMWRiZWEzZjRjN2Y1NmZmYWI1YWY1MDQ1ZjM4OTFhMzI2OTk0
NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0
aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZl
KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3
ZDdhNDBkMzIwZWM3Y2E2MC4uZDE2MTk5ODQzMzhhOTFhMmQyODc1YzZiZGNkM2JjNjY3NzI0ZTc3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAg
LTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9j
a0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2Rl
QmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBk
ZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVj
dXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJj
MjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uZDdmNzRhNWE5NDZjYzdjZTk3NTQ5OGU0MTBkMjQ0YmMy
NzI4MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApA
QCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAg
ICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVy
YXRvclRoaXM6Ok5vbkVtcHR5LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1NDIs
NyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50
U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0
KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25N
b2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0
cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBp
c0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6
ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBw
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2
MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVl
YTE0Yjk2MjZhNWExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBG
dW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rp
b25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1l
LCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlk
ZUxpbmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJy
aWRlTGluZU51bWJlciwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5n
aWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0
eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5n
KCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rp
b24gIiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJv
Z3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsK
KyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3Ip
ID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
e2Z1bmN0aW9uICIpOworICAgICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3Ry
aW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFw
cGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsx
MjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIGJvb2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVj
dEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpLCBpc0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCmluZGV4IDIyZWNiNTdiOTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRj
ZDIwYjc2MzFjMTc5ZmRlMDJhYTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1
NiwxMiBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0Jik7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBi
b29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0
b3IgPSBmYWxzZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0g
LTEpOworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92
ZXJyaWRlTGluZU51bWJlciA9IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZWM2NDdkNDZmOGEyZTdmY2ZiOGQzZjIxZDdh
ZDNhMjg4N2E4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1l
IiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkg
fTsKKworR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJl
ck9mQ2FsbGVlUmVnaXN0ZXJzKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUuZ2V0KCkpCisgICAgLCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKG51bWJlck9mQ2Fs
bGVlUmVnaXN0ZXJzKQoreworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsgKytpKQorICAgICAgICBy
ZWdpc3RlckF0KGkpLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2
bSwgc2l6ZV90IG51bWJlck9mUmVnaXN0ZXJzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1
bHQgPQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JSZWdp
c3RlcnMobnVtYmVyT2ZSZWdpc3RlcnMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51
bWJlck9mUmVnaXN0ZXJzKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAv
LyBPbmx5IHNhdmUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJh
dG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2Vk
LgorICAgIEFTU0VSVChsaXZlQ2FsbGVlUmVnaXN0ZXJzLm51bUJpdHMoKSA8PSBtX251bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQo
WyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAg
ICAgLy8gU2luY2UgQyBzdGFjayBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29y
cmVjdCB2YWx1ZSBmb3IgYSBqcyB2YWx1ZSBtYXkgZXhpc3QKKyAgICAgICAgLy8gaW4gYSBub24t
aW5pdGlhbGl6ZWQgKGJ1dCBhbGxvY2F0ZWQpIEpTIHJlZ2lzdGVyLgorICAgICAgICAvLworICAg
ICAgICAvLyBGb3IgZXhhbXBsZSwKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWdpc3RlckEgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgLy8gICAgIC4u
LgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgYWJvdmUgY2FzZSwgcmVnaXN0ZXJBIGlz
IGFsbG9jYXRlZC4gQnV0IGl0cyBjb250ZW50IG1heSBub3QgYmUgY29ycmVjdCBqcyB2YWx1ZS4K
KyAgICAgICAgLy8gQXMgYSByZXN1bHQsIEpTQ2VsbCBwb2ludGluZyB0byB0aGUgaW5jb3JyZWN0
IG1lbW9yeSByZWdpb24gbWF5IGV4aXN0LgorICAgICAgICAvLyBQZXJmb3JtaW5nIGEgd3JpdGUg
YmFycmllciAoJiBTbG90VmlzaXRvcidzIG1hcmtpbmcpIG9uIHRoZXNlIGluY29ycmVjdCBjZWxs
cyBjYXVzZXMgaW52YWxpZCBkZXJlZmVyZW5jZXMuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMg
c2l0dWF0aW9uLCB3ZSB0ZXN0IGEgZ2l2ZW4gY2VsbCBsaWtlIHBvaW50ZXIgaXMgdHJ1bHkgY2Vs
bC4KKyAgICAgICAgaWYgKHJhd1ZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4
ZWMtPnZtKCkuaGVhcC5pc0xpdmVDZWxsKHJhd1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9u
LWNlbGwgdmFsdWUgbWF5IGJlIHN0b3JlZC4gKGUuZy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQg
dGFnIGluIDMyYml0IGVudmlyb25tZW50KS4KKyAgICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJl
IG5vdCByZWNvZ25pemVkIGFzIGEgY2VsbCwgd3JpdGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5v
dCBjYXVzZSBhbnkgcHJvYmxlbXMuCisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVj
LT52bSgpLCB0aGlzLCByYXdWYWx1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJh
bWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVSZWdpc3RlcnMpCit7CisgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAg
ICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFt
ZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFj
aFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOwor
ICAgICAgICByZWdpc3RlckF0KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQg
YXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyh0aGlzT2JqZWN0LT5yZWdpc3RlcnMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxl
ZVJlZ2lzdGVycyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjlj
ZjI2MmM3OTVhYTQ1ODdjNTU0YjBiOTFhMWZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yRnJhbWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RC
aXRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xh
c3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJh
bWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mUmVnaXN0ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4mIHJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAg
IHJldHVybiByZWdpc3RlcnMoKVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZlJlZ2lzdGVycygpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9y
RnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIo
c2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkg
KyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZS
ZWdpc3RlcnMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51
bWJlck9mUmVnaXN0ZXJzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUo
RXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisK
K3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVS
ZWdpc3RlcnMpOworCisgICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU3Y2QzZWQwMjViZWE5MjdmNjA1MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisg
ICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigx
KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9u
KGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICov
IHRydWUpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
QXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisK
K0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJi
NDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKwor
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Zl
OGYyZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
YTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRi
N2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQ
cm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAm
Z2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJl
Z2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5k
CisqLworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
K30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJh
c2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90
eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2Ew
MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBl
X2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0
aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+
KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOwor
ICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisK
K3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQo
R2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JUaGlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JUaGlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNhZDJlYTYzNmM1MjRkOTVmMmQwM2Y3ZGQwMzRm
OGQ3NTVkZTgwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclRoaXMuaApAQCAtMCwwICsxLDM3IEBACisvKgorICBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIgorICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhPTERFUj4gQkUg
TElBQkxFIEZPUiBBTlkKKyAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIEdlbmVyYXRvclRoaXNfaAorI2RlZmlu
ZSBHZW5lcmF0b3JUaGlzX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgR2VuZXJh
dG9yVGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBOb25FbXB0eQorfTsKKworfQor
CisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2
OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBi
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQo
dm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNl
dChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAg
ICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAgICAgICAg
dGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQg
PSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5
MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlv
bjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
c2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKQorewor
fQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBs
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkK
K3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVy
YXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRv
ckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9u
OworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQor
eworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1w
bCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0
aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBn
ZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisK
K0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZt
LCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJlYTlkMzk1NjFjMjdiNTk2N2M5OGE3MzkyY2E5N2MwMTkyNjEwYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2Vu
ZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zm
c2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsK
KyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBp
bGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYg
SlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGludDMy
X3QgeworICAgICAgICBDb21wbGV0ZWQsCisgICAgICAgIEV4ZWN1dGluZywKKyAgICAgICAgSW5p
dGlhbAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQz
Ml90IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJldHVybk1vZGUsCisgICAg
ICAgIFRocm93TW9kZQorICAgIH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9u
KiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9m
KEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3Jl
YXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNiYTVhYzFhYTA1OGFjMzll
ZTZlOTYyNTI1YTQ3Y2M4NjhiMTI4OTEuLjdmMWE5MjM3MmI4MzJjNDQyNmYwZDFkZGFiNTc0OGIy
YjNjMjgwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
clByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJ
dGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5oIgpAQCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRl
ICJKU0RvbGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBF
KENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3Bl
cnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYg
Q1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0
MjUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhF
cnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9y
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVj
dHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhp
cywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBB
U0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZt
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25D
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNDI4LDYgKzQzOCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PkZ1bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkdlbmVyYXRvckZ1bmN0aW9u
LCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNvbnN0
cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPlJlZ0V4cCwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5FdmFsRXJyb3IsIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKQEAg
LTgxNyw2ICs4MjgsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
dGVyYXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODQ5LDYgKzg2Miw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNh
ZDNjYzc4MTg5M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3
NjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJh
dG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsK
QEAgLTIyOSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1f
YXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdF
eHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJh
dG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJh
dG9yUHJvdG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQ
cm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9j
b25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVn
RXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0K
ICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAg
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAg
ICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiArNTEzLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBz
eW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUxMzVm
NDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3ZjE5
NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQsNiAr
MjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3Im
IGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhp
cywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFy
ZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQzMTk0
MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQzYjUy
N2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMw
NCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4g
ewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlv
blN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggMjg1YzVmOThmNDk1Mzky
OGU2NzQzM2Y4YzI2NmE5YmJhMTUwZjdhNy4uZDY2OGY4NmZmZTg3ZTM1ZDQwMTRhODNjZDhkZGZi
ZTFiMTM3NTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE1LDcg
KzcxNSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90
b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0
YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0
aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3Rh
bmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzIzLDcgKzcyMyw3IEBACiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0Fy
cmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGlj
X21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc0OSw3ICs3
NDksNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6
IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9p
bnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNt
ZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2Vz
X29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NTksNyArNzU5LDcgQEAKIC0gcGF0aDogZXM2
L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVy
aWNfaXRlcmFibGVzLmpzCkBAIC03OTksNTUgKzc5OSw1NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rp
b25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuY29uc3RydWN0
b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5l
cmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUl
LnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rpb25hbGl0eS5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Nh
bnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2Vu
ZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNz
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVy
YXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRpbmcuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRf
Z2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3N0cmluZy1rZXllZF9zaG9y
dGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FycmF5cy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3MuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2Zf
aXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19pc19hX3J1bnRpbWVfZXJyb3IuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01hcF9p
dGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBf
TWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAKIC0gcGF0aDogZXM2
L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5jdGlv
bl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9v
cGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5f
b3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJpY19p
dGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVy
aWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2NmYWUxYTViNWE2NmMxM2JkMjNlOGNhZTUy
N2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEs
MjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9
IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykg
eworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0
aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgr
KzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsg
dmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3Jl
dHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9
OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rp
b24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpz
CmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUy
ZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9p
dGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBA
CitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlz
OworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21l
dGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicg
fHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2
YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVl
OiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4n
OiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3Zh
ciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7
IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0
KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwppbmRleCA2ZjY4MmY1YTE2
Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlh
Yzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRl
ZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFi
bGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0
eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0
dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5n
dGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJv
dyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5
bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBp
dGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9ICcnOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90
aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4x
ZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpA
QCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3Zh
ciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIs
IG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wg
IT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9Cith
cnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07Cisg
IH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sn
dGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9y
XSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQor
CiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJv
bS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2JjZDlhN2UxODgz
NzA3MGNhZWU4ZGY4YmNiMTY5Yjc1NTU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlv
bi5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRC
ZUFycmF5KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZShhY3R1YWwubGVuZ3RoLCBl
eHBlY3RlZC5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGFjdHVhbFtpXSwg
ZXhwZWN0ZWRbaV0pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHByaW50KEpT
T04uc3RyaW5naWZ5KGFjdHVhbCkpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworCitmdW5jdGlvbiAqZ2VuKGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVy
biB0ZXN0OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0g
Zy5uZXh0KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZh
ciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0
aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQor
ICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
NDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
IH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3Qi
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9
IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAy
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVu
Y3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAg
ICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOwor
ICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBi
ID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQg
YzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEs
IDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
Y2xhc3MtbWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5
bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBj
YXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJv
cikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3Jp
cHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJv
ciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30K
KwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJh
dG9yIG5hbWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2Eg
eworICAgICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwor
dGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgc3RhdGljICpvaygpCisgICAgeworICAg
ICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzN2YzNzhiMGQ2ZThhMzNjOWZjNTUzZDc3OTk4MjcwMWI4ZWMzZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jbGFzcy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKK2NsYXNzIEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAg
ICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOwor
ICAgIH0KKworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRo
aXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7
CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
ZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gbmV3
IGEuZ2VuKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLm5leHQoKTsKKyAg
ICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZS5gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KKworeworICAgIGxl
dCBnID0gQS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAg
bGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgIGcubmV4dCgpOworICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YThmM2Q4NjJiM2Q5Y2MxNGU4YmE1NjVlY2ZiMDkxNTIxMDMyYjQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24t
Y29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3
IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5l
cmF0b3JGdW5jdGlvbiwgJ2Z1bmN0aW9uJyk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5f
X3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciwgR2VuZXJhdG9yRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1j
YWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0
dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4OThl
NTkwOWFiYWYzODViZjIwODk5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMK
QEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5l
dyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUo
KTsKK30KKwordmFyIGcgPSBnZW4oKTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3Jl
LWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDZjYjRmOTdlZTEw
YzM4NTA2ZTE4ZWFjMGQ5YTNlNDE4NzllZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNh
bGwuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRo
cm93IG5ldyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFj
aGFibGUoKTsKK30KKwordmFyIGcgPSBnZW4oKTsKK3ZhciBlcnJvciA9IG5ldyBFcnJvcigiT0si
KTsKK3ZhciB0aHJvd24gPSBudWxsOwordHJ5IHsKKyAgICBnLnRocm93KGVycm9yKTsKK30gY2F0
Y2ggKGUpIHsKKyAgICB0aHJvd24gPSBlOworfQoraWYgKHRocm93biAhPT0gZXJyb3IpCisgICAg
dW5yZWFjaGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5ZjE4OGJjYzJmNWI1ZWNj
MzUzMDUxNGMyMGVkNTY2ODhhNmEyOThjLi5iN2MwNTg5OGYxZGUyYzU3YWZmZmU0MTE0NTI0YzM4
NWZjZjgzZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysr
IGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0xOTUsNiArMTk1LDEyIEBAIGNs
YXNzIEZhc3RCaXRWZWN0b3IgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0X2Nhc3Q8RmFz
dEJpdFZlY3Rvcio+KHRoaXMpLT5mb3JFYWNoU2V0Qml0KGZ1bmN0b3IpOworICAgIH0KICAgICAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266054</attachid>
            <date>2015-11-22 05:23:12 -0800</date>
            <delta_ts>2015-11-22 10:36:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151122222257.patch</filename>
            <type>text/plain</type>
            <size>233702</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YjE2NWRkY2E4ZWE1MGNjYmZmMGYwMzU3YzM2YzRmNmEyY2MyMDA4Li5jYTRlNDNlOGRhMGI4Mjg3
ZTc5OGZjODZmNjk5MDRmMDBlMWVlOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOTMgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnBy
b3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6Cisg
ICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTGl2
ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hl
Lmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OnRyeUdldCk6CisgICAgICAgIChKU0M6
OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpp
c0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJyb3dG
dW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1iZXJP
ZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVDYWxsZWVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6WWllbGRFeHBy
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmlzTGl2ZUNlbGwpOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Omlz
QXRvbSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNDb21tb24pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21t
b24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUp
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlWWllbGQp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6cHJvcGFnYXRlQXJndW1lbnRzVXNlKToKKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6
RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlv
bk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9k
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNz
aW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpT
Y29wZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6aGFzQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvbGxl
Y3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpp
c01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6Cisg
ICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JT
dGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlND
OjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpT
b3VyY2VDb2RlS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3Ro
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleUhhc2g6OmVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVnaXN0
ZXJBdCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZlJlZ2lzdGVycyk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZlJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yUmVnaXN0ZXJzKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpHZW5lcmF0b3JQcm90b3R5
cGUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yVGhpcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1w
bCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNp
emUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU291cmNlQ29kZUtleS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6U291cmNlQ29kZUtleSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFz
aCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OnN0
cmluZyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRz
Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYu
eWFtbDoKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNf
aXRlcmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJs
ZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6Cisg
ICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRl
cmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAg
ICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5q
czoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChnZW4pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKGcxKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50
YXgpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJv
ci5Db2NvYSk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hLnByb3RvdHlwZS5vayk6CisgICAg
ICAgICh0ZXN0U3ludGF4LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Eub2spOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChwcm90b3R5cGUuZ2VuKToKKyAgICAgICAg
KHN0YXRpY0dlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKEIpOgorICAgICAgICAoQSk6CisgICAgICAgIChDLnByb3RvdHlwZS5n
ZW5lcmF0b3IpOgorICAgICAgICAoQyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChj
YXRjaCk6CisKIDIwMTUtMTEtMjAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE5MjUzNik6IE51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBp
biBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5
NGMwNmY0ZmFiMDlmZjAzYTY0MTc4MGUzZjI2YWMzYWQ4ZC4uYmU2MGE4ODEyOThiNGJjMjk5MDgw
ZjQ4YTMxZTU0MmFmYzlkNGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJs
ZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rv
cjo6Zm9yRWFjaFNldEJpdCk6CisKIDIwMTUtMTEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMRUQ6IHRlbXBvcmFyeUZp
bGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3NzE5
ZDM2NDc1YjZiNjExZTgyOTYuLmQ3MDdlMzNiZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVjY2Q1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAg
cnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAt
NjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBy
dW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNw
cAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2
ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJm
OTM5NGM2OGJkYzBhMy4uZjhhZDNiNmQ5OWY1Mzc4NGE1N2E1ZGJjZWRhNmQyZjVlNDg3ZDI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwog
ICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVRE
WlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmls
aXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVl
KHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25F
eGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTRhYjUwZWI5ZmNkN2Y2ZDViMjYz
MGRlZDU5ZmI1NTdiMjYyODAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlv
biBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBn
ZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdlbmVy
YXRvclN0YXRlLCB2YWx1ZSwgMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0
aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIDEp
OworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhp
cywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2VwdGlvbiwgMik7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMjk5
MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFjNjJlOC4uNWU2ZDU5ZGYxMjdkMmJlN2Qy
ZDEzMmNkMzMwZjNhN2I4YmYyN2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwgImxlbmd0
aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAi
LCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVu
Z3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5n
dGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0KKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4
IGE2MTMyYzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4ODZlNWQ2NjY4NDUuLjM3NDM2YzAxNTY1NDll
OWY3YzAxZGM0MWEwMmVlM2RkOGI1YWZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw4ICs3MCw5IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxsOgogICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfaW5jOiAKLSAgICBj
YXNlIG9wX2NvcHlfcmVzdDogeworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ugb3BfY29weV9y
ZXN0OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAg
Y2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6
CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU0LDcgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNh
c2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19n
ZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBv
cF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50
czogewpAQCAtMjMzLDYgKzIzNiwxNCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZl
OiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIHZl
Y3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVk
IGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI1NSw2ICsyNjYs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2Fs
bDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgor
ICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVn
OgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzE1LDYgKzMyNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAg
ICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6
CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFp
bF9jYWxsX3ZhcmFyZ3M6CkBAIC0zOTAsNyArNDA0LDE1IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07
KQogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47Ci0g
ICAgfSB9CisgICAgfQorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQo
aW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQo
WyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0
KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCBmY2E2MzAxNDkxODI2YmVlMTAwMTI0YzJmNmFlNDJmMThkZWY5OWVlLi4z
YzEyZGI4YTc2ZTM0OGI5NzRiMDdhNjQyODNiOTIzOWVlZTFkZTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI5NCw2ICsxMjk0LDE0IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRh
dGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuYyIpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzE5LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5n
LCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2ICsxNTE1LDIw
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7
CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJz
YXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2Vu
ZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAg
aW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGxpdmVD
YWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlv
biA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE3MjAsNiArMTc1MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0g
b3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
OwogICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0x
ODc1LDYgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAg
ICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1i
ZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkpIHsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpXSA9IHVubGlua2VkQ29kZUJs
b2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBieXRlY29kZQpAQCAtMzA0
OSw2ICszMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hy
aW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7
CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdl
IHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYx
ODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMuLjFhMGI5OGYwY2RiMmMxNWQ2MDAy
YWZjNDlhNDJhZGJhMDNiZGIwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIu
aCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1
ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAg
ICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2Fs
bGVlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVSZWdpc3RlcnM7IH0KKwog
ICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRl
cnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0KIApAQCAt
NjU0LDYgKzY1NywxMCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBT
dHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURh
dGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBw
ZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1
bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0
dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQog
CisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBpbnQz
Ml90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBSRUxFQVNFX0FTU0VS
VChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGRbaW5kZXhdOyB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2Rl
Q2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC05MDAsNiArOTA3LDggQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1w
VGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJs
ZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVj
dG9yPiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOworCiAgICAgICAgIEV2YWxDb2RlQ2Fj
aGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1
OGMwNmNlZTdjN2FlZGQuLjE3OTllMDllMDMyZWU3NDI4NWFjNTAzNDE1OTcyNDQ1MmE1NWRiYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJPcHRpb25z
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAKIAogICAgIGNs
YXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBK
U1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3Ry
aWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXND
YWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0
Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFp
blN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29k
ZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNv
dXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRT
bG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQs
IFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2Nv
cGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJU
RFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUs
IHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhl
Y3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291
cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsK
KyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9k
ZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxT
b3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykKLSAg
ICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwoKSwgV3JpdGVCYXJy
aWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsK
KyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2Us
IHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykgeworICAgICAg
ICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3Vy
Y2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVL
ZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIG1fY2Fj
aGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhl
Yy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQpAQCAt
ODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2NvcGUtPmlzR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKSB8fCBz
Y29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNo
ZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2Us
IEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJZiBldmFsKCkgaXMg
Y2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwgd2UgY2FuJ3Qgc291
bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElmIHRoZSBldmFsKCkgb25seSBoYXMgYWNj
ZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQuCiAgICAgICAgICAg
ICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAgICAgICAgICAgICAmJiBldmFsU291cmNl
Lmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSAK
KyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxTb3VyY2UubGVuZ3Ro
KCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSAKICAgICAg
ICAgICAgICAgICAmJiBpc0NhY2hlYWJsZVNjb3BlKHNjb3BlKTsKICAgICAgICAgfQogICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IG1heENhY2hlRW50cmllcyA9IDY0OwogCi0gICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJs
ZT4+IEV2YWxDYWNoZU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFNvdXJjZUNvZGVLZXks
IFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4sIFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0cz4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFsQ2FjaGVNYXAgbV9j
YWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEw
MmExNWQuLjdjMzExNGE5ODc5NmU0YWI4MDQ2YWRjMDhkYjY0MWRkMjliNzhkMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwx
OSArMjYsMjEgQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxl
SW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9k
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAg
RXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wg
aXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24s
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQor
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBi
b29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdlbmVy
YXRvclRoaXMsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0Fj
dGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwp
CiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXND
b25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
aXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VN
b2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9CkBAIC00OCw4ICs1MCw5IEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhp
cyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhp
cz4obV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25l
ZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2MCw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXND
b25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7Cisg
ICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIFNv
dXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uZTFmMjA4
ZGU4YzcyYjhhYzM4ODA1NzQxZjE0MGE2ZTA5M2Q4Y2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCAr
NjUsMTEgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkK
LSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBt
X2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpcygp
KSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9l
bmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQog
ICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1f
YXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAx
NjViODYxZjBmODNjZi4uMTdhNWViZWExNWE1MjMwNDg4ZWY0NzIyODY3OWQzMzIyZmUxNzM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUg
IkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDEsNiArNDIsNyBA
QAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFy
aWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2LDcgKzExOCw3IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBu
ZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWlu
OyB9CiAKQEAgLTIwMiw2ICsyMDQsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0
cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CiAK
ICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMjMsNiArMjI2LDcgQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5z
aHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ0LDYgKzI0OCwxMSBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsg
cmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsg
fQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBz
aXplX3QgbnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNp
emUoKSA6IDA7IH0KKyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZh
c3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJu
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQor
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBp
bmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVSZWdpc3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgdW5zaWduZWQgYWRkRnVuY3Rpb25E
ZWNsKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuKQogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgc2l6ZSA9IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7CkBAIC0zODcsMTIgKzM5NiwxMyBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDog
MTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50
OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFy
c2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29k
ZVR5cGU7CiAKQEAgLTQzNiw2ICs0NDYsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1f
c3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
PiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0
b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJl
c3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25z
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQx
YzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLjJiZjZhODIwOTFiMGUxY2NmN2IyYTRiYmRhOTdi
NmY0MmU2YzA2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsNyArNTAsNyBA
QAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJv
ZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2Vy
RXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVu
Y3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAg
ICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFi
bGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCks
IGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5j
dGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVj
dG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVu
Y3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24t
PmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9
PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCks
IGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdl
dCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJl
bnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRl
KCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNl
T3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JU
aGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5p
ZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05
OSw3ICs5OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAs
IG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVu
Y3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQogewogICAgIEFTU0VSVChtX2NvbnN0
cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5k
KCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENv
ZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAg
ICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFs
aXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWls
dGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJv
ciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1Nzdj
YjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uYjVlMWY2ZmNjNmQ0NzIzM2Q5NWMxZDNkZTdhMGMx
NjEzOWM1N2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNs
dWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgog
I2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFz
ZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlh
YmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5r
ZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJh
dG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Pih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwg
dm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdU
Rjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUs
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsNyBA
QCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJp
Y3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhp
cyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhp
cz4obV9nZW5lcmF0b3JUaGlzKTsgfQogCiAgICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5h
bWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQog
ICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTcsNyBAQCBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFy
c2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYs
IEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBA
IC0xMjUsMTAgKzEyNyw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1
Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0K
ICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBw
cml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlk
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0
QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcywgVmFyaWFibGVF
bnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAt
MTU4LDcgKzE1OSw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9u
TW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
IDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI5Mzcw
YzhkMjg0YTM4NGYyMWUwZTc4OTI2ODU0NWM5MmIxOTgyM2IuLmVmOGJmYzEwYjBmNGYyNjUzZDNi
NTUzZTk2M2E2NzVkNDE4NzlkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAt
MjAxLDcgKzIwMiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0
ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CiAgICAgLy8gY29tcGF0aWJsZSB3aXRoIHRhaWwgY2Fs
bHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9jYWxsKS4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5Ci0gICAgLCBtX2luVGFp
bFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYg
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9k
ZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCisgICAgLy8KKyAgICAvLyBJbiBhIGNv
bnRleHQgb2YgYSBnZW5lcmF0b3IsIGFsbCB0aGUgY2FsbHMgY2Fubm90IGJlIHRhaWwgY2FsbHMg
YmVjYXVzZSBhbGwgdGhlIHJlc3VsdHMgd2lsbCBiZSB3cmFwcGVkIGFzIGFuIGl0ZXJhdG9yIHJl
c3VsdC4KKyAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1pc2ludGFpbHBvc2l0aW9uCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVz
ZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQ
cm9maWxlSG9va3MgJiYgcGFyc2VNb2RlKCkgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC0y
MjcsOSArMjMxLDIyIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgp
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKTsKICAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRz
QXJndW1lbnRzID0gZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpOworCisgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMi
LiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5l
cmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CisKKyAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92
aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92
aWRlcyAiYXJndW1lbnRzIi4KKyAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBv
ZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KKyAg
ICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFz
IGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5j
ZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhp
bmdzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdz
KQogICAgICAgICBmdW5jdGlvbk5vZGUtPnZhckRlY2xhcmF0aW9ucygpLm1hcmtBbGxWYXJpYWJs
ZXNBc0NhcHR1cmVkKCk7CiAgICAgCkBAIC0yNTQsMTQgKzI3MSw0NSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7
CiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwot
ICAgIAorCisgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CisKKyAgICAvLyBC
ZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1
ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKyAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgICAgIGVtaXRNb3ZlKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIsICZtX3BhcmFtZXRlcnNbMV0pOworICAgICAgICBpZiAoZ2VuZXJhdG9y
VGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1vdmVFbXB0
eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRjaF9p
bW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRpbmUg
c3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBjYWxsaW5n
IGBuZXh0KClgLCB3ZSB3b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGluc3Rl
YWQgb2YganVtcGluZyBiYXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KKyAg
ICAgICAgLy8gSXQncyBzdWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlubGlu
ZXMgb25lIGBuZXh0YCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBiZWdpbkdl
bmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIENvbXBsZXRl
ZCBzdGF0ZS4KKyAgICAgICAgLy8gV2UganVtcCB0byB0aGUgbV9nZW5lcmF0b3JDb21wbGV0ZWRM
YWJlbCBpbW1lZGlhdGVseSBiZWNhdXNlIHdlIGNhbm5vdCB1c2UgYW55IHRlbXBvcmFyeSByZWdp
c3RlcnMgaGVyZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAg
bV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1w
KG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkpOworCisgICAgICAgIC8vIEV4ZWN1dGlu
ZyBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICAgICAgLy8g
SW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAg
ICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsKKyAgICB9CisKICAgICBp
ZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25O
b2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3Bl
ID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1
cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJv
b2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1
cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewogICAgICAgICBtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNhbiBhbGxv
Y2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFt
ZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICszMTksNiBAQCBQYXJzZXJF
cnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5pdGlhbGl6
ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgIH0K
IAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3Vy
IHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGlu
ZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0
ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNS
ZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8g
dGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAg
ICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIg
PSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAgIAog
ICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1l
bnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAgIGlm
IChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1MTEs
MzYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAK
ICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2st
PmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAgICAg
ICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAg
ICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CisgICAgICAgICAgICBlbWl0TW92ZShtX25ld1Rhcmdl
dFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgICAgICAgICBlbWl0
TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAg
ZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEV2ZW4gaWYgaXQncyBub3QgY2FsbGVkIHdpdGggYG5l
d2AsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHByb2R1Y2VzIGEgZ2VuZXJhdG9yIHdpdGggYGNyZWF0
ZV90aGlzYC4KKyAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2Nh
bGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVn
aXN0ZXIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJl
YWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAg
ICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKICAg
ICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2
ZWQpCkBAIC00OTIsOSArNTU2LDggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0
ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIo
KSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFs
dWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03OTksNiArODYy
LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpCiAgICAgcmV0dXJuICZwYXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91
ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgIC8vIG5lZWRp
bmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1l
dGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV90aGlz
UmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8v
IHRoaXMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0OworICAg
ICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0UGFyYW1ldGVy
ID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KK30KKwog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwpAQCAtODU1LDYgKzkzNCwyMSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3VGVtcG9yYXJ5KCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJz
KCkKK3sKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIEZhc3RCaXRWZWN0b3IgdmVj
dG9yOworICAgIHZlY3Rvci5yZXNpemUobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICBz
aXplX3QgaSA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZVJl
Z2lzdGVycykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICB2ZWN0
b3Iuc2V0KGkpOworICAgICAgICArK2k7CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisK
KwogTGFiZWxTY29wZVB0ciBCeXRlY29kZUdlbmVyYXRvcjo6bmV3TGFiZWxTY29wZShMYWJlbFNj
b3BlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUpCiB7CiAgICAgLy8gUmVjbGFp
bSBmcmVlIGxhYmVsIHNjb3Blcy4KQEAgLTIzMTIsMTIgKzI0MDYsMTIgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQg
bGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdp
c3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0
ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVn
aXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0
dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1NjUsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgog
ICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxv
Y2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3Rl
cklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJl
Z0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU3
MywyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdp
c3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3Qs
IEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBk
c3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0g
ICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFr
ZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19m
dW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2Rl
SUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9w
Y29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVt
aXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMjUxMiwxNyArMjYwNCwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rp
b25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJU
KGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yIHx8IGdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAg
ICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rp
b25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAgIGVtaXROZXdG
dW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQog
CkBAIC0yNTQwLDYgKzI2MzMsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0
aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQorewor
ICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVu
Y3Rpb24oZnVuY3Rpb24pKTsKKyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9w
X25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25l
d19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50
cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQog
ewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNzY2
LDYgKzM4NzIsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1cm4gZHN0Owog
fQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2
YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxsQXJndW1lbnRz
IG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0TW92ZShuZXh0
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRNb3ZlKG5l
eHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2Fs
bChkc3QsIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICB9
CisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7
CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0
KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJ
TGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsK
KyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVy
biBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
IHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzg0Miw0ICszOTY2
LDI0NSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3RQYXJhbWV0ZXIo
UmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLnNpemUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yUmVzdWx0ID0g
ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGFyZ3VtZW50LCBmYWxzZSk7CisgICAgaW50
MzJfdCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0T3Bjb2Rl
KG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVy
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVy
c0luZGV4KTsKKyAgICBlbWl0UmV0dXJuKGl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKworICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICBl
bWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgUmVmUHRyPExhYmVs
PiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRp
dGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1
ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJl
bD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0
ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAvLyBSZXR1cm4u
CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBlbWl0
TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpLCB0cnVl
KTsKKyAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJu
UmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OworICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAg
ICB9CisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAg
ICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIC8vIFRo
cm93LgorICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhyb3coZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgIC8vIE5vcm1hbC4KKyAgICBlbWl0TGFiZWwo
bm9ybWFsTGFiZWwuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCk7
Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByZXZpb3VzID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1p
dExvYWQocHJldmlvdXMuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAgIHsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFy
Z3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgICAgICB7CisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAg
ZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnQpOworICAgICAgICAgICAgZW1p
dENhbGwoaXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGFyZ3MsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQo
KSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBuZXh0RWxlbWVudCA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5l
ZCgpKTsKKworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1lbnQuZ2V0KCkpOworCisgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAg
ICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRMb29wSGludCgp
OworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yUmVzdWx0ID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51
bGxwdHIsIHZhbHVlLmdldCgpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX3NhdmUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dl
bmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlbWl0
UmV0dXJuKGl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUp
OworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2
ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBu
b3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVh
bGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSkpOworICAgICAgICAgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdl
dCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoMikpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0
KCksIHRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBy
ZXR1cm5TZXF1ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdl
bmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJh
dG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCks
IHJldHVybk1ldGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywg
bnVsbHB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5l
cmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwo
cmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3Rh
cnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVt
cElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0
LmdldCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExh
YmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0
KG51bGxwdHIsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJu
UmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29w
ZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJl
bChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJ
ZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBU
aHJvdy4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0
aG9kTm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0
b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93
TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0
ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElz
T2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVy
blNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9y
KEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0
LiIpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3Vu
ZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9y
LmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFT
Q0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBt
ZXRob2QuIikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1h
bC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQu
Z2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRX
aXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9k
ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0
YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwo
bG9vcERvbmUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisK
KworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBkc3QgPT0gdmFs
dWUpCisgICAgICAgIHJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROZXdPYmplY3Qo
cmVzdWx0LmdldCgpKTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS5kb25lLCBlbWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9uZSkpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJl
Y3QpOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lz
dGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc3RhdGUpKSk7CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRl
ZFN0YXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRl
TGFiZWwoKQoreworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1f
Z2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVs
LmdldCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVn
aXN0ZXJJRCogc3RhdGUpCit7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB3ZSBjYW5ub3QgZW1p
dCBgYnJlYWtgLgorICAgIGJlZ2luU3dpdGNoKHN0YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1l
ZGlhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwq
IGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENv
bnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgp
OworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFdID0g
bV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0aW9u
cygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7
CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2st
PmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSAr
IDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50
MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hv
dWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90
IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1
bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dl
bmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNz
ICsgMykpOworICAgIH0KKworICAgIGVtaXRMYWJlbChtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVs
LmdldCgpKTsKKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xh
YmVsKCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQo
KSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgLy8gUmV0dXJuLgorICAgICAg
ICB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0
TmV3SXRlcmF0b3JSZXN1bHQobmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzVW5k
ZWZpbmVkKCkpLCB0cnVlKTsKKyAgICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQu
Z2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhyb3cuCisgICAgICAgIGVtaXRMYWJl
bCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCAzOGI2NTlhMzM2ODViYjNjNzI2NDdkY2ZhZmI4ZDU4MjA0MjJiYTg2Li5mODAwYTJkZTkwMTMz
OGYwYmViODcyZjNiMGRhNmFkMGIwYzkzNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3
IEBACiAjZGVmaW5lIEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2
ICsyODEsNyBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3Rv
cktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpOyB9CiAKICAgICAgICAgUGFyc2Vy
RXJyb3IgZ2VuZXJhdGUoKTsKIApAQCAtMjk3LDYgKzI5OSw4IEBACiAKICAgICAgICAgUmVnaXN0
ZXJJRCogc2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAg
ICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JS
ZWdpc3RlcjsgfQorCiAgICAgICAgIC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBv
cmFyeSByZWdpc3Rlci4gUmVnaXN0ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBv
cmFyeSByZXF1aXJlIGEgbW9kaWZpZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQog
ICAgICAgICAvLyByZWdpc3RlciB3aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJh
dmFpbGFibGUiLCBtZWFuaW5nIHRoYXQKQEAgLTQ5OSwxMCArNTAzLDggQEAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNp
Z25lZCBsZW5ndGgpOyAvLyBzdG9wcyBhdCBmaXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0
ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdG
dW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQq
IGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAg
dm9pZCBlbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUq
LCBPcGNvZGVJRCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhw
cmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYs
NiArNTk4LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRl
cmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OwogICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJh
bWV0ZXJzVG9Ta2lwKTsKQEAgLTY0NCwxMiArNjQ3LDI1IEBACiAgICAgICAgIHZvaWQgYmVnaW5T
d2l0Y2goUmVnaXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lk
IGVuZFN3aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Np
b25Ob2RlKiosIExhYmVsKiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdl
KTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZv
aWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0l0ZXJhdG9yUmVzdWx0
KFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgYm9vbCk7CisgICAgICAgIHZvaWQgYmVnaW5HZW5l
cmF0b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVm
YXVsdExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KKyAgICAgICAg
UmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygp
IHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3Vs
ZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAg
ICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1
aWx0aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjgzLDggQEAKICAgICAgICAgdm9pZCBlbWl0
UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsK
KyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQq
LCBCYXNlRnVuY0V4cHJOb2RlKik7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUNhbGxlZVJl
Z2lzdGVycygpOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUo
VmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdp
c3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpAQCAtNzU2LDgg
Kzc3NCwxMSBAQAogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwogICAgICAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JU
aGlzID0gR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHk7CisgICAgICAgICAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6OkVtcHR5OwogCi0g
ICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3Zt
LCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1
Y3RBYmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCks
IG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24g
OiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlz
LCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlh
Ymxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTc2NSw2ICs3ODYsNyBAQAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCog
YXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxW
YXJhcmdzKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lz
dGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBm
aXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCog
cHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVy
cyYpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQ
YXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlvblBhcmFtZXRl
cnMmLCBGdW5jdGlvbk5vZGUqLCBTeW1ib2xUYWJsZSosIGludCBzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoVW5pcXVlZFN0cmluZ0ltcGwqKT4mIGNh
cHR1cmVzKTsKIApAQCAtNzc2LDYgKzc5OCw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKIAorICAgICAgICBMYWJlbCogZ2Vu
ZXJhdG9yQ29tcGxldGVkTGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckNvbXBsZXRl
ZExhYmVsLmdldCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8VW5saW5rZWRJ
bnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1faW5zdHJ1Y3Rpb25zOwogCkBA
IC04MDQsNiArODI4LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBu
dWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxs
cHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
eyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBu
dWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0
ciB9OwpAQCAtODI3LDYgKzg1Miw4IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3
aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNv
bnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4g
bV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gbV9nZW5lcmF0b3JDb21w
bGV0ZWRMYWJlbDsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzOwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7
IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFi
bGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9J
bml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYw
OGJkMzc0N2RlZGE3ODY4ZTViYmQwZjUyLi43YzgxYWI3ODcyMDFkMzY2N2Q2MmRhNDc0YjhjNmU3
NjVjMDg1MzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsx
NDYsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9z
aG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpcygpID09
IEdlbmVyYXRvclRoaXM6OkVtcHR5KQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCkBAIC0yNTgzLDEzICsyNTg0LDI3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
ICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9
IDA7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8g
Z2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRv
ci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5SZWdpc3RlciA9IG51bGxwdHI7CisgICAgaWYgKG1fdmFsdWUpIHsKKyAgICAgICAgaWYg
KGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUp
CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
dmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmlu
ZWQoKSk7CisKKyAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIHJldHVyblJlZ2lzdGVyLmdldCgpLCB0cnVlKTsK
KwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
b3BTY29wZXMoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgMCk7CiAgICAgfQogCisgICAgaWYg
KGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkp
OworCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0
TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZUNvbnRyb2xGbG93KGVuZE9mZnNldCgpKTsgCkBAIC0yOTY2LDI2ICsyOTgxLDg4IEBAIHZv
aWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhz
dGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVy
Q2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFy
dE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2Rl
ID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAg
IEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhw
clN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50
Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0g
ZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5v
ZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5j
RXhwck5vZGUqPihleHByKTsKIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQg
YXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgotICAg
IGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKLSAg
ICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxC
bG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Ci0gICAgICAgIGlm
IChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5O
b2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+
KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBuZXh0LmdldCgpLCBQcm9wZXJ0eU5v
ZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQo
Z2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdl
IG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewot
ICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24g
aW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3Vy
Y2UgY29kZS4KKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpJbml0aWFsKSkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRl
LCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVj
b2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGlu
Zm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNl
IGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBs
YXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7
CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25k
aXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0
ZWQpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChnZW5lcmF0b3IuZ2VuZXJhdG9y
Q29tcGxldGVkTGFiZWwoKSk7CisgICAgICAgIH0KKworICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEg
PSBnZW5lcmF0b3IucHVzaFRyeShnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKKworICAgICAgICBSZWZQ
dHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xh
YmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0
ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAg
ICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVy
LmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVy
YXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246
OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJv
dyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChkb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5l
bWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzVW5kZWZpbmVkKCkpLCB0cnVlKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3Io
ZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAg
ICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRo
aXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0g
MDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQg
b2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNp
bmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9j
a05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBp
ZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJu
Tm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5O
b2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAg
ICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2Vu
ZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVy
YXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJl
Y2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFT
U0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwOTAsMjQgQEAgUmVnaXN0ZXJJ
RCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0
b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlw
ZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFk
ZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOwor
ICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwg
YXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9y
LmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBp
ZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDIwN2UwYjMzZTk4
MjM5ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIwMGE5MjAyNDYyYzAwOTgy
YmI0MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTk2LDYgKzk2
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZhc3Rlci4gCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9IDE2OwogCisgICAg
Ym9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIpOworCiAgICAgc3RhdGlj
IGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCBmNGFjZjI1ZTYw
ZTE4OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5iOGY3ZDc2ZmZmY2QwMDA2NGU4ZGVjYjY1
MWM5YWZhY2FiY2I3N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVz
LmgKQEAgLTcwLDYgKzcwLDM2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFs
dWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAoraW5saW5lIGJvb2wgSGVh
cDo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghcCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxvbmdpbmcgTWFya2VkQmxvY2sgYW5kIGZp
bHRlciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4KKyAgICBUaW55Qmxvb21GaWx0ZXIgZmls
dGVyID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAgICBNYXJrZWRCbG9jayog
Y2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHApOworICAgIGlmIChmaWx0ZXIucnVs
ZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7CisgICAgICAgIEFTU0VS
VCghY2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNvbnRhaW5zKGNh
bmRpZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGVzdCB0
aGF0IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJZiBub3QsIHRoaXMgcG9pbnRlciBpcyBu
b3QgcG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAoIU1hcmtlZEJsb2NrOjpp
c0F0b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUZXN0IHRo
YXQgdGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1YWxseSBhbGxvY2F0ZWQg
aW4gVk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGNhbmRpZGF0
ZSBNYXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4KKyAgICBpZiAoIW1fb2JqZWN0U3BhY2Uu
YmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gVGhlIHBvaW50ZXIgY2FuIGJlIHVzZWQgYXMgb25lIG9mIGNlbGxzLiBOb3Qg
cG9pbnRpbmcgdG8gbWV0YWRhdGEsIG9yIG1pZGRsZSBvZiBjZWxscy4KKyAgICBpZiAoIWNhbmRp
ZGF0ZS0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgY2Vs
bCBwb2ludGVyIGlzIG5vdCB6YXBwZWQuIEl0IG1lYW5zIHRoaXMgY2VsbCBpcyBhY3R1YWxseSB1
c2VkLgorICAgIHJldHVybiAhcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NlbGwqPihwKS0+aXNa
YXBwZWQoKTsKK30KKwogaW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0IHZvaWQqIGNlbGwp
CiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNMaXZlQ2VsbChj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0
OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVj
ZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBACiAgICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtl
ZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwogICAg
ICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworICAgICAgICBib29sIGlzQXRvbShj
b25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAg
IHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwpAQCAtMzg4LDcgKzM4OSw3IEBACiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9jazo6
aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+YXRv
bU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50
ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAg
aWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXgg
YzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uZDE4NTA0MjBhYmQ1ZGQ2
YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDE2IEBAIEpTVmFs
dWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
ID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJs
b2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIGNhbGxlclNjb3Bl
Q2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7
CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJsb2NrID0gY2FsbGVy
Q29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworCisgICAgVGhpc1REWk1vZGUgdGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAoY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisgICAg
aWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRo
aXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlz
VERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUobWFrZVNv
dXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJD
b2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAg
ICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxk
IG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBj
YWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjayA6IFRo
aXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2Nr
LT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2Us
IGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFs
Q29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNj
b3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2
MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4uOTViYWIwNGQyM2E4ZWJlOTVjY2I1YWRk
MjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE0LDYg
KzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAg
ICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisg
ICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykK
ICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2Rp
dikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAg
ICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93
X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZDIyNTgy
MzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2NzdlNzY2YzBkMWZj
YTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiAr
NDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NvcHlfcmVzdChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Nh
dmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fycm93X2Z1
bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9u
Kik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0
cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRT
bG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBi
b29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGlu
dCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDQ5NDg5NjUwZTY4
NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1ZjBmMmNlMjM3MDdl
NDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVn
ZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkUGF5bG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYKICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24t
PnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3Jf
ZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29w
X25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3
RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4LDExICsxMDMwLDI3
IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVnVDIpOwogI2VuZGlm
Ci0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9
PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0
LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRvbmUubGluayh0aGlz
KTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVu
Y0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xNDA1LDYg
KzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkwNjM2
ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9m
aWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
Ym9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmlu
aGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAg
aWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rp
b25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29w
ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBm
YWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAgIEFT
U0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5m
bygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICBy
ZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
LCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52
YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlv
bkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQp
CiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVj
dXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpAQCAt
MTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYxNDVjOWQ1NTc1ZjFj
OTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5
OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li41
ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNT
dGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQyLDE4
IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3Bl
KSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVu
Y3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0Fj
dGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJd
LnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExM
SU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAg
LTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRV
Uk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5v
cGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisgICAg
TExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGVi
ODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTks
NiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hf
c3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFiNWIyMGQ5N2NhZjAzMy4uMzY4ZDA4NzUy
YTdjZmI3YWRjYWRkZTZmMGMzZTc5MWI1ZmNlNDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIyNyw2ICsxMjI3
LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0
KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwx
MSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0
KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBA
IC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQog
CiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc3Vt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVz
dW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKaW5kZXggYWNjMjE2MmU4ZGYxMjQ5ZjU5N2Y4NmY1MjJiNzBlMWU5NjA5
YmUwMC4uZDZhYTM4NTU2NDY2ODMyZTBkOTYzODc3MmFjMTc5MTQ1ZWY4Mzg4NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5ICszNDEsMTEgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlp
ZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAg
ICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisg
ICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAg
IFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUo
bG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2
NCwxMiArMzY2LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQs
IGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3Bh
cnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODg2LDYgKzg4OCw5IEBA
IGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3RhcnRPZmZzZXQo
b2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB1
c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1YWQ2
M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uMmRjYTcyNGM2NTkxZTFiNjkyMzUwNmU5YTU5NzhlYmFj
NTBiMDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFy
dCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNv
dXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikK
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29s
dW1uKGVuZENvbHVtbikKQEAgLTE2Myw3ICsxNjMsNiBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRD
bG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2Vk
VgogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29u
dGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRjMTFkN2Y4
YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2UuLmM3YjRiMDFiMDA2OTNjNmZhODcwODBmMmJiYzUz
OTg2YjIxNzMyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTcs
NyArMTgxNyw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAt
MTg0Myw3ICsxODQzLDYgQEAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25l
ZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5l
U3RhcnRPZmZzZXQpCkBAIC0xODcwLDcgKzE4NjksNiBAQAogICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAx
OwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMwLDcgQEAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQx
NDk4MjZjMzc5ZTQyY2Y1OWNlNTJhLi43ZGM4YTA4ZjBiODYzNjBiYTM2MjczMjExZDQ1ZmJjZmI0
ODJhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNDks
NyArMjQ5LDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZh
bHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAg
UGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwor
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkK
KyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5jdGlv
blBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBt
X3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9y
KCkpIHsKQEAgLTI3Myw4ICsyNzYsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250
ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250
ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50
cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9y
U3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtMzAxLDcgKzMw
OCwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNjb3Bl
LT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJlZFZh
cmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQo
ZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgIHNj
b3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgaWYg
KHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpOworICAg
IH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAg
ICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9k
ZUZlYXR1cmU7CkBAIC0zMTEsMTAgKzMyNSwxMCBAQAogICAgICAgICBmZWF0dXJlcyB8PSBNb2Rp
ZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkQXJndW1lbnRzKQogICAgICAg
ICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7CisKKwogICAgIFZlY3RvcjxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwotICAg
ICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRvIGFsbG93IGJ1aWx0
aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkpOwpAQCAt
NDU4LDYgKzQ3Miw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVt
ZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBz
dGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9u
LnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRp
b24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGlu
Zm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
OworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5z
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8g
Z2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdl
bmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250
ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2Rl
KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BT
Y29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1
bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpbmZvLnBhcmFtZXRl
ckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGlu
Zm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5t
X2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisK
KyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0
TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHBy
U3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2Vu
RW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxl
bWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
VHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2ln
bmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRv
Y3VtZW50ZWQgaGVyZToKQEAgLTE1OTEsMTMgKzE2NDQsMTIgQEAKICAgICBUcmVlQnVpbGRlciYg
Y29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1
bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0Up
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2MDksNyArMTY2MSw3IEBACiAgICAg
ZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNr
ZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBh
cnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVt
biA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNl
TW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTYyNSw2ICsxNjc3LDggQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0
b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTcwMyw2ICsxNzU3LDM3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQorewor
ICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgp
OworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8v
IEBnZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3IsIDApOworCisgICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7
CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
U3RhdGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRl
cigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAg
YXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUs
IDApOworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwor
ICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJp
dmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0
aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTgx
MywxMiArMTg5OCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0Owog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0
YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBi
b2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0
cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1v
ZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0
cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9k
eVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZv
KTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CkBAIC0xODMyLDcgKzE5MTUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xl
eGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVu
Y3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0g
ICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBl
ID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAt
MTg1NCwxNCArMTkzNywzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9
IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUo
KTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlv
bkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0
byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJz
ZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0
cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50
LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+
c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAg
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKwor
ICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUs
IGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4K
KyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNh
bGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYg
KGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVk
IGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVp
bGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rp
b25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJl
c3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHks
ICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
bW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xl
eGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2Rl
KCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwo
KSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAg
IH0KQEAgLTE5MjksNyArMjAzMSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShF
UzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBh
cnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAg
ICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11
c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25z
dHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNh
bm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3Rv
ciciKTsKICAgICAgICAgICAgIH0KQEAgLTI4MzYsNiArMjkzOCw3IEBAIHN0cnVjdCBMYWJlbElu
Zm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJz
ZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBw
YXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDYsMTQgQEAg
c3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxv
Y2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJl
ZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9p
bnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxk
KGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRp
b24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQo
bG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwg
bGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CkBAIC0zMDQxLDcgKzMxNDUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5h
cnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3Rh
cnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0g
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRo
b2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTgsNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikK
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1l
KFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0
aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJD
YW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVl
YzUwNDc3M2UuLmIxNTgzZDM1OTM5NTE5NWYzZDZmMjgyOTFkZmNkMWU3ZjFjZTQ0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBt
X2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2Rl
KHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29w
RGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5
Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9p
c0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1
bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1Zh
bGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVu
dHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1f
c3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURh
dGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6Cisg
ICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsK
KwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAg
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3Bl
IHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5j
dGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7
IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAg
ICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29w
ZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0
OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0
ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2Rl
Y2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxW
YXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNv
bnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMo
aW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
Ly8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBi
b3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5k
YXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAg
ICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5l
ciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAg
Ly8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVu
Y3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAg
IC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAg
ICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3Bl
LT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUp
KQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0
cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChp
bXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xv
c2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlv
bi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBt
X2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7
CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2Nv
cGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQg
c2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7
CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNH
ZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lz
R2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9
CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rp
b25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBi
b29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1f
c3dpdGNoRGVwdGg7CiAKQEAgLTExNTAsNiArMTE3MSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VH
ZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBk
aXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZl
TGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVk
LCBOb3RFeHBvcnRlZCB9OwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVu
Y3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxk
ZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRl
eCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRj
MzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBh
cnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9k
ZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0
aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJz
ZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlu
bGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJv
b2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5
MWIuLjA4MmU5NGEzNWMxYWMyZTE1MGRmMGJjMDA1ODhkOGRhZWU4OGY5NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwx
MCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0
eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYp
IHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1w
dHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlp
ZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9u
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwg
UHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlv
bkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQs
IGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBi
b29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJl
dHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwg
aW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVz
dWx0OyB9CkBAIC0zODUsNiArMzg1LDggQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgaW50
IGVuZE9mZnNldChpbnQpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGlu
dCwgaW50KSB7IH0KIAorICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB9CisKIHBy
aXZhdGU6CiAgICAgaW50IG1fdG9wQmluYXJ5RXhwcjsKICAgICBpbnQgbV90b3BVbmFyeVRva2Vu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEz
YjI1ZTRjOWIyNjJjNTI1ZTBmNTZlYzBmNjljZGM3Y2JlZGYwZS4uYjM4YmY5NWVkOTAxNTE1Zjll
YTRkZWI4NmJiYTE3NjAwYzU0MGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0m
IHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBn
bG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rp
b24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5l
cmF0b3JUaGlzOjpOb25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5n
KCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwg
U291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2Uo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4
Y2ZlZjg0NjQ5ZDhmMDljMmZiMGI5NDg4MTExZTE2OTM2YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFm
ZGEzZGFhODk1ZDA2Y2RjODk1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUu
aCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5j
bHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgpAQCAtNTYsNzEgKzU3LDYgQEAKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92
aWRlcjsKIAotY2xhc3MgU291cmNlQ29kZUtleSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlw
ZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07Ci0K
LSAgICBTb3VyY2VDb2RlS2V5KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBl
IGNvZGVUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlz
VERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29k
ZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKAotICAgICAgICAg
ICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykKLSAgICAgICAgICAgIHwg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikKLSAgICAgICAgICAgIHwg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKQotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX2hhc2g7IH0KLQotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUubGVuZ3RoKCk7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlLmlzTnVsbCgpOyB9Ci0KLSAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0
ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQotICAgIC8v
IHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCi0g
ICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygp
OyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAotICAgICAg
ICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1fZmxh
Z3MgPT0gb3RoZXIubV9mbGFncwotICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFt
ZQotICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOwotICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgdW5zaWduZWQgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFp
dHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4gewotICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1
cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQotfTsKLQogc3RydWN0IFNvdXJjZUNvZGVWYWx1
ZSB7CiAgICAgU291cmNlQ29kZVZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4
NTYyYmVlOGQ3NTUzNTVkODdhM2IzM2IxLi5kZTA3ZjFjNTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgx
YmYxYjRhYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAg
IG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2Vu
ZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwp
IFwKICAgICBtYWNybyhKU09OKSBcCkBAIC0zMjksNiArMzMwLDEzIEBACiAgICAgbWFjcm8oVWlu
dDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0
QXJyYXkpIFwKKyAgICBtYWNybyhnZW5lcmF0b3IpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0
KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFt
ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVGhp
cykgXAorICAgIG1hY3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDkwZjY1YzI0ZDYzMmI2MjEwODlkZTVjMWJiZDQ5NjRkNDQ5NjQzOTEuLjM4OTE1
NjE5ZmE1ZDY5YTNhZWFjNWQzZjM3OGVlZTQ1NDM5ZDJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM3IEBAIHN0YXRpYyBD
b21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2
bSwgaW50IHNsb3RzVG9BCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9zYXZlKQoreworICAgIC8vIE9ubHkgc2F2ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVn
aXN0ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgor
ICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVy
YXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24g
ZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdl
bmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBu
dWxscHRyOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvcik7CisgICAgaWYgKGdlbmVy
YXRvci5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUsIHNsb3QpKQorICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KHNsb3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCgoZXhl
Yy0+cmVnaXN0ZXJzKCkgLSAxKSAtIGV4ZWMtPnRvcE9mRnJhbWUoKSArIDEpID09IGV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3RlcnMoKSk7CisgICAgICAgIGZyYW1lID0gR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxl
ZVJlZ2lzdGVycygpKTsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0
cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOworICAgICAgICBhc09iamVjdChnZW5lcmF0
b3IpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgaW50IGxpdmVDYWxs
ZWVSZWdpc3RlcnNJbmRleCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+c2F2ZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxl
ZVJlZ2lzdGVyc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9Q
KDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRl
eCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5k
ZXgpKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZm
YzdmM2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhm
NTdkZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNl
NTY0MTdkN2E0MGQzMjBlYzdjYTYwLi5kMTYxOTk4NDMzOGE5MWEyZDI4NzVjNmJkY2QzYmM2Njc3
MjRlNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtl
ZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVj
dXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJz
ZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZj
MGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li5kN2Y3NGE1YTk0NmNjN2NlOTc1NDk4ZTQxMGQy
NDRiYzI3MjgyMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
R2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcg
KzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5j
dGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7
IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBi
b29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0MmZh
NWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5iMGFiNmJmYzA5Mjk4NzAwOGMyNTVk
N2RiNWVhMTRiOTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENhbGxU
eXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1K
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24m
IHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZh
bERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0
aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlzR2VuZXJhdG9yKTsKIH0KIAogSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlz
dCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92
ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQg
b3ZlcnJpZGVMaW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIC8vIEhvdyB3ZSBz
dHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQot
ICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5z
dHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAg
ICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59
fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVy
YXRvcikgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChpc0dlbmVyYXRvcikKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFt
ZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2
LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjaygKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1K
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgQXJnTGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRvcikKIHsKLSAgICByZXR1cm4gY29u
c3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24o
KSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJn
cywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlv
bjo6bWluaW11bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4u
Mjc5NGNkMjBiNzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJmZDIyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYs
MTIgKzU2LDEyIEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsK
LUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEFyZ0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlv
biYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgYm9vbCBpc0dl
bmVyYXRvciA9IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25z
dCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1i
ZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBp
bnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVlYzY0N2Q0NmY4YTJlN2ZjZmI4ZDNm
MjFkN2FkM2EyODg3YTg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9y
RnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZy
YW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMobnVtYmVy
T2ZDYWxsZWVSZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzOyArK2kpCisgICAg
ICAgIHJlZ2lzdGVyQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUo
Vk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUq
IHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAg
ICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZv
clJlZ2lzdGVycyhudW1iZXJPZlJlZ2lzdGVycykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2
bSwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKQorewor
ICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVSZWdpc3RlcnMubnVtQml0cygpIDw9IG1fbnVt
YmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIEpTVmFsdWUgcmF3VmFsdWUgPSBleGVj
LT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpOwor
ICAgICAgICAvLyBTaW5jZSBDIHN0YWNrIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVycG9zZSwgYW4g
aW5jb3JyZWN0IHZhbHVlIGZvciBhIGpzIHZhbHVlIG1heSBleGlzdAorICAgICAgICAvLyBpbiBh
IG5vbi1pbml0aWFsaXplZCAoYnV0IGFsbG9jYXRlZCkgSlMgcmVnaXN0ZXIuCisgICAgICAgIC8v
CisgICAgICAgIC8vIEZvciBleGFtcGxlLAorICAgICAgICAvLworICAgICAgICAvLyAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlZ2lzdGVyQSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAvLyAg
ICAgLi4uCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlLCByZWdpc3Rl
ckEgaXMgYWxsb2NhdGVkLiBCdXQgaXRzIGNvbnRlbnQgbWF5IG5vdCBiZSBjb3JyZWN0IGpzIHZh
bHVlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgSlNDZWxsIHBvaW50aW5nIHRvIHRoZSBpbmNv
cnJlY3QgbWVtb3J5IHJlZ2lvbiBtYXkgZXhpc3QuCisgICAgICAgIC8vIFBlcmZvcm1pbmcgYSB3
cml0ZSBiYXJyaWVyICgmIFNsb3RWaXNpdG9yJ3MgbWFya2luZykgb24gdGhlc2UgaW5jb3JyZWN0
IGNlbGxzIGNhdXNlcyBpbnZhbGlkIGRlcmVmZXJlbmNlcy4KKyAgICAgICAgLy8gVG8gYXZvaWQg
dGhpcyBzaXR1YXRpb24sIHdlIHRlc3QgYSBnaXZlbiBjZWxsIGxpa2UgcG9pbnRlciBpcyB0cnVs
eSBjZWxsLgorICAgICAgICBpZiAocmF3VmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIGlm
ICghZXhlYy0+dm0oKS5oZWFwLmlzTGl2ZUNlbGwocmF3VmFsdWUuYXNDZWxsKCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3RlIHRoYXQgaW52YWxp
ZCBub24tY2VsbCB2YWx1ZSBtYXkgYmUgc3RvcmVkLiAoZS5nLiBhIHZhbHVlIHdpdGggYW4gaW52
YWxpZCB0YWcgaW4gMzJiaXQgZW52aXJvbm1lbnQpLgorICAgICAgICAvLyBCdXQgc2luY2UgdGhl
eSBhcmUgbm90IHJlY29nbml6ZWQgYXMgYSBjZWxsLCB3cml0ZSBiYXJyaWVycyAvIG1hcmtpbmcg
ZG8gbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAgcmVnaXN0ZXJBdChpbmRleCkuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIHJhd1ZhbHVlKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0
b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgcmVnaXN0ZXJz
LgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwg
cGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNhbGxlZVJlZ2lzdGVycy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhlYy0+dW5jaGVja2Vk
Uih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gcmVnaXN0ZXJBdChpbmRleCkuZ2V0
KCk7CisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxH
ZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0
b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKHRoaXNPYmplY3QtPnJlZ2lzdGVycygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDdjNmJj
NGViOWNmMjYyYzc5NWFhNDU4N2M1NTRiMGI5MWExZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDk1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmlu
ZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVu
ZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOwor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0
b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKwor
ICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZ2lzdGVycygpCisgICAgeworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNl
X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZSZWdpc3RlcnMoKSk7CisgICAgfQorCisgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgcmVnaXN0ZXJBdChzaXplX3QgaW5kZXgpCisgICAg
eworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKyAg
ICAgICAgcmV0dXJuIHJlZ2lzdGVycygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5l
cmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWdp
c3RlcihzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3Rl
cnMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyh1bnNpZ25lZCBudW1i
ZXJPZlJlZ2lzdGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlJlZ2lzdGVycygp
ICsgbnVtYmVyT2ZSZWdpc3RlcnMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUq
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICB2b2lkIHJl
c3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJz
KTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNh
bGxlZVJlZ2lzdGVycyk7CisKKyAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsK
KworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTdjZDNlZDAyNWJlYTkyN2Y2MDUzNmEzOTliZWRjODM3MTJhMzk2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVu
Y3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0
b3IgKi8gdHJ1ZSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5n
bG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitDYWxs
VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2Fs
bEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsK
K30KKworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmEx
MGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Jf
aAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1
Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7
CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMzZmU4ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgor
I2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3Rh
dGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3
YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVy
YXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0
b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18
RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQ
cm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4
MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90
b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAg
IHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5
cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3Rv
dHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVm
aW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclRoaXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2FkMmVhNjM2YzUyNGQ5NWYyZDAzZjdk
ZDAzNGY4ZDc1NWRlODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yVGhpcy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiCisgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVS
PiBCRSBMSUFCTEUgRk9SIEFOWQorICBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc19oCisj
ZGVmaW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBH
ZW5lcmF0b3JUaGlzIDogdW5zaWduZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2
NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEy
IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9m
ZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5w
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAg
ICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlz
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAg
ICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9m
ZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Y2JjZTAy
ZDY2MjkwNWUwZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNf
aW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVyYXRvckZ1
bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNj
b3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkp
Cit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpT
R2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2Vu
ZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJh
dG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVu
Y3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2Nv
cGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVh
dGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9u
RnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGlu
ZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsK
K30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUlt
cGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmVhOWQzOTU2MWMyN2I1OTY3Yzk4YTczOTJjYTk3YzAxOTI2MTBjOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2ly
ZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDog
aW50MzJfdCB7CisgICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAgRXhlY3V0aW5nLAorICAgICAg
ICBJbml0aWFsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6
IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSwK
KyAgICAgICAgVGhyb3dNb2RlCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVu
Y3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVybiBz
aXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9u
KiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzcxZTRlYTA2ZTM4
NjU1YWM1YTcwYmFhZGFmNzQwMmE3N2JjMGY1OS4uNDU5NTU0ODVmODE4NmEyODc3YWQwYzNlMDQ2
NDIzNmRmYTJjNGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2lu
Y2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1f
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1
bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIw
LDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5
bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3Rv
dHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBl
RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBl
U3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC00MjgsNiArNDM4LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdCwgb2JqZWN0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+RnVuY3Rpb24sIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+R2VuZXJhdG9yRnVu
Y3Rpb24sIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVnRXhwLCBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPkV2YWxFcnJvciwgbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0p
OwpAQCAtODE4LDYgKzgyOSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAsNiArODYzLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0
OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2Rk
NDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBH
ZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNs
YXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vy
c29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlw
ZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBt
X3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1f
aXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxH
ZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xs
YXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBl
KiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0
b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9
CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVi
dWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0
cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Tb3Vy
Y2VDb2RlS2V5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ0OWE3ZTE3M2IyNTAwZGFmYjVmODRhYTRjMmU2ZjQx
NjY0OWQwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NvdXJjZUNvZGVLZXkuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU291cmNlQ29kZUtleV9oCisjZGVm
aW5lIFNvdXJjZUNvZGVLZXlfaAorCisjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRl
ICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFNvdXJjZUNvZGVLZXkgeworcHVibGljOgorICAgIGVudW0gQ29kZVR5
cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9Owor
CisgICAgU291cmNlQ29kZUtleSgpCisgICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXko
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlw
ZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAg
ICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGVUeXBlKSA8PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUp
IDw8IDIpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCisgICAgICAgICwgbV9oYXNoKHN0cmluZygp
LmltcGwoKS0+aGFzaCgpKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaDsgfQorCisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29k
ZS5sZW5ndGgoKTsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUuaXNOdWxsKCk7IH0KKworICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91
ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCisgICAgLy8gcHJv
dmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KKyAgICBT
dHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0K
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCisgICAgICAgICAg
ICAmJiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQorICAgICAgICAgICAgJiYgbV9mbGFncyA9
PSBvdGhlci5tX2ZsYWdzCisgICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisg
ICAgICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAg
ICB1bnNpZ25lZCBtX2ZsYWdzOworICAgIHVuc2lnbmVkIG1faGFzaDsKK307CisKK3N0cnVjdCBT
b3VyY2VDb2RlS2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNl
Q29kZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1
cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlz
RW1wdHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBz
b3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBTb3VyY2VDb2Rl
S2V5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZm
MDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4
ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBA
IHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRh
YmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVy
cmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVy
cmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3Ry
dWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywg
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywg
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJm
M2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5
ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0
LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
ZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0
b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGUwYmMzZDUxZmI2YzdhOGYwODliYTRk
ODdkNGU2NGM2YTk3MGJlNTAuLjExYTRiZjQ2NGU2NGM3ZmYwN2NlZmU0NzIxNDk2OTRjMzJkMjhi
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcxOSw3ICs3MTksNyBA
QAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2No
YWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0
aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhv
ZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2Zf
Z2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTcyNyw3ICs3MjcsNyBAQAogLSBwYXRoOiBlczYvQXJy
YXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9t
X21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21h
cF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NTMsNyArNzUzLDcgQEAK
IC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9pbnN0YW5j
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2VzX29mX2dl
bmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NjMsNyArNzYzLDcgQEAKIC0gcGF0aDogZXM2L2Zvci4u
b2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9y
Li5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWls
CiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRl
cmFibGVzLmpzCkBAIC04MDMsNTUgKzgwMyw1NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFt
ZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuY29uc3RydWN0b3IuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQ
cm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnRocm93
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rpb25hbGl0eS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NhbnRfdXNl
X3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9y
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNzZXMuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVyYXRvcl9m
dW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRpbmcuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19z
aG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJh
dG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3N0cmluZy1rZXllZF9zaG9ydGhhbmRf
Z2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FycmF5cy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVy
aWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFi
bGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19pc19hX3J1bnRpbWVfZXJyb3IuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3N0cmlu
Z3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01hcF9pdGVyYXRv
cl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBfTWFwW1N5
bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIC0gcGF0aDogZXM2L3NwcmVh
ZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5jdGlvbl9jYWxs
cy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRv
cl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0
b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpm
YWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJpY19pdGVyYWJs
ZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRl
cmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2NmYWUxYTViNWE2NmMxM2JkMjNlOGNhZTUyN2FhYTQu
LjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVy
aWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAK
K2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7
Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0
aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8
fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3Zh
ciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6
IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6
IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFy
IGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsg
cmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCmluZGV4
IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUyZGY2ZmQx
ZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJs
ZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAo
dHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQor
ZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMg
PSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5
bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRl
cmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIu
c2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRo
b2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVy
YWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVy
biBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewog
CiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVy
YXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwppbmRleCA2ZjY4MmY1YTE2Y2FiOWU4
YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlhYzg4ZmY4
ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQn
KSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmpl
Y3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2Yg
U3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9
OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0g
MCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1l
dGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5p
dGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJs
ZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9ICcnOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5q
cwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4xZjQ3ZDMy
OGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9z
aW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpAQCAtMSwz
ICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9i
YWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhv
ZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdm
dW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVu
Z3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisg
ICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cn
XQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1
bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5j
dGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5j
dGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFy
Z3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2JjZDlhN2UxODgzNzA3MGNh
ZWU4ZGY4YmNiMTY5Yjc1NTU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpA
QCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFycmF5
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZShhY3R1YWwubGVuZ3RoLCBleHBlY3Rl
ZC5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGFjdHVhbFtpXSwgZXhwZWN0
ZWRbaV0pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHByaW50KEpTT04uc3Ry
aW5naWZ5KGFjdHVhbCkpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0K
K30KKworCitmdW5jdGlvbiAqZ2VuKGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVzdCgpCisg
ICAgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiB0ZXN0
OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0
KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJn
dW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0g
ZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpn
MihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZh
ciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwg
YHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKwor
ICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAg
IGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAg
YSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxk
IGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVuY3Rpb24g
KmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWll
bGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3Mt
bWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChz
Y3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewor
ICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3Qg
dGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVz
dFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5h
bWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAg
ICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwordGVzdFN5
bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgc3RhdGljICpvaygpCisgICAgeworICAgICAgICB5
aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkzN2YzNzhiMGQ2ZThhMzNjOWZjNTUzZDc3OTk4MjcwMWI4ZWMzZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFz
cy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKK2NsYXNzIEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAgICAgeWll
bGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0K
KworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7CisgICAg
bGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwg
dHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gbmV3IGEuZ2Vu
KCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLm5leHQoKTsKKyAgICB9LCBg
UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KKworeworICAgIGxldCBnID0g
QS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0
Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGcg
PSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcu
bmV4dCgpOworICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxZDRlNjAzOWIwNjlkYTAwODY4ZWFhNmNkNGZm
ZTg5NzIzMTJjNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw1NCBAQAorZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3du
ID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5n
KGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigpIHsKKyAgICB5aWVsZCBldmFsKCJ0aGlz
Iik7Cit9CisKK3ZhciBnID0gbmV3IGdlbigpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcu
bmV4dCgpLnZhbHVlOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlh
bGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEIgeyB9CisKKyhmdW5jdGlvbigpIHsKKyAgICBl
dmFsKCd0aGlzJyk7CisgICAgZXZhbCgndGhpcycpOworfSgpKTsKKworY2xhc3MgQSBleHRlbmRz
IEIgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsKCd0aGlz
Jyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IEEoKTsKK30sIGBS
ZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwor
CitjbGFzcyBDIHsKKyAgICAqZ2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBldmFs
KCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9
LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5g
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE4
ZjNkODYyYjNkOWNjMTRlOGJhNTY1ZWNmYjA5MTUyMTAzMmI0OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBG
dW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJh
dG9yRnVuY3Rpb24sICdmdW5jdGlvbicpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19w
cm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUu
Y29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2Fs
bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVy
bi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk2YTIxN2Y3MmM4N2MwODk4ZTU5
MDlhYmFmMzg1YmYyMDg5OTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCkBA
IC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcg
RXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7
Cit9CisKK3ZhciBnID0gZ2VuKCk7CitnLnJldHVybigiSGVsbG8iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1m
aXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMz
ODUwNmUxOGVhYzBkOWEzZTQxODc5ZWRkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxs
LmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJv
dyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hh
YmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7
Cit2YXIgdGhyb3duID0gbnVsbDsKK3RyeSB7CisgICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNo
IChlKSB7CisgICAgdGhyb3duID0gZTsKK30KK2lmICh0aHJvd24gIT09IGVycm9yKQorICAgIHVu
cmVhY2hhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1
MzA1MTRjMjBlZDU2Njg4YTZhMjk4Yy4uYjdjMDU4OThmMWRlMmM1N2FmZmZlNDExNDUyNGMzODVm
Y2Y4M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBjbGFz
cyBGYXN0Qml0VmVjdG9yIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdF9jYXN0PEZhc3RC
aXRWZWN0b3IqPih0aGlzKS0+Zm9yRWFjaFNldEJpdChmdW5jdG9yKTsKKyAgICB9CiAgICAgCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266056</attachid>
            <date>2015-11-22 10:36:20 -0800</date>
            <delta_ts>2015-11-22 11:32:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123033604.patch</filename>
            <type>text/plain</type>
            <size>258551</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YjE2NWRkY2E4ZWE1MGNjYmZmMGYwMzU3YzM2YzRmNmEyY2MyMDA4Li5iYTNkMDQzODdjZDZmZjEx
NTg1ZmE3MzAzYTAzMWYwOTRkYWEzYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzggQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQKKworICAgICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NgorICAgICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NworCisgICAg
ICAgIFRvIGVuY291cmFnZSBERkcgLyBGVEwgbGF0ZXIsIHdlIHRha2UgdGhlIGZvbGxvd2luZyBk
ZXNpZ24uCisKKyAgICAgICAgMS4gVXNlIHN3aXRjaF9pbW0gdG8ganVtcCB0byB0aGUgc2F2ZS9y
ZXN1bWUgcG9pbnRzLgorCisgICAgICAgIEluc3RlYWQgb2Ygc2F2aW5nIC8gcmVzdG9yaW5nIGlu
c3RydWN0aW9uIHBvaW50ZXIgdG8gcmVzdW1lIGZyb20gaXQsIHdlIHVzZSBzd2l0Y2hfaW1tIHRv
IGp1bXAgdG8gdGhlIHJlc3VtZSBwb2ludC4KKyAgICAgICAgVGhpcyBsaW1pdHMgb25lIGVudHJ5
IHBvaW50IHRvIGEgZ2l2ZW4gZ2VuZXJhdG9yIGZ1bmN0aW9uLiBUaGlzIGRlc2lnbiBtYWtlcyBp
bmxpbmluZyBlYXN5LgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRv
IEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidz
IHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUu
CisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2
ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVn
aXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBj
aGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZp
bmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVy
IHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250
cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICAzLiBHZW5lcmF0b3JG
dW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVmb3JlIGdlbmVyYXRpbmcgR2VuZXJh
dG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBldmFsdWF0ZWQg
YmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZvciBleGFtcGxlLAorCisgICAgICAg
ICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uICpnZW4o
YSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeWllbGQgYjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0gZ2VuKDIwKTsgIC8vIE5vdywgaGVs
bG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBlbmFibGUgdGhpcywgd2UgZXZhbHVh
dGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwgYW5kIGFmdGVyIHRoYXQsIHdlIGNy
ZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAgICAgICBUaGlzIGNhbiBiZSBleHBs
YWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4KKworICAgICAgICAgICAgZnVuY3Rp
b24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0
b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgKiBB
UEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6
CisgICAgICAgIChKU0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVp
bHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAg
ICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRl
Y29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OnRyeUdl
dCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAgICAgICAoSlND
OjpFdmFsQ29kZUNhY2hlOjppc0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0
YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZv
KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRoaXMpOgorICAgICAg
ICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpp
c0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9m
TGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdFN1
cGVyQmFzZUZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6WWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
TGl2ZUNlbGwpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVD
ZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OmV2YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNDb21tb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNf
ZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6cHJvcGFnYXRlQXJndW1lbnRz
VXNlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9O
b2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5l
cmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhv
ZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVz
c2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xs
ZWN0RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2Jh
bENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBs
ZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNo
ZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZWdpc3RlckF0KToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXJzKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6
bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtl
eTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5u
ZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2Ny
ZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0
KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAg
ICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxl
T2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAg
ICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJs
ZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJv
bS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFk
ZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgor
ICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29j
b2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAo
dGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
bGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHBy
b3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcu
bmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6Cisg
ICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVh
Y2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6
CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToK
KwogMjAxNS0xMS0yMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMTkyNTM2KTogTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6dmlzaXRDaGlsZHJlbigpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MGE1Nzk0YzA2ZjRm
YWIwOWZmMDNhNjQxNzgwZTNmMjZhYzNhZDhkLi5iZTYwYTg4MTI5OGI0YmMyOTkwODBmNDhhMzFl
NTQyYWZjOWQ0ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBM
TEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMg
ZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpmb3JF
YWNoU2V0Qml0KToKKwogMjAxNS0xMS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogdGVtcG9yYXJ5RmlsZVBhdGgu
bGFzdCgpID09ICcvJyBpbiBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IDNiN2I3NmJmM2E0NDRjOTIxYmU5
NzNjNTc2YzE5ZjY5MmU4ZDIzMmQuLjJmMzc0MjMwMDk3YjUwODI1ODNmODQ0MjdiOTI1NzkzN2Qz
MDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHN0YXRpYyBib29sIHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpw
YXJzZTxKU0M6OlByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgCisgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKICAgICAgICAgZXJyb3IpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQzMGZmZTMwYzkyMmU4ZGY0MDc3MTlk
MzY0NzViNmI2MTFlODI5Ni4uZDcwN2UzM2JkMzFhMTAwM2M3NTFjN2Q4OGIwZTcwMDQxZWNjZDVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTYzLDYgKzU2MywxMCBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisg
ICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBy
dW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02
MDIsNiArNjA2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1
bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3Bw
CiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAg
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuY3BwCkBAIC03MzcsNiArNzQyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVD
VF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRp
bWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAg
IHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk1LDYg
KzEyMDEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzCisgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5
Mzk0YzY4YmRjMGEzLi40OGVmN2ZmM2E4ZWJhNmI0NTg5NjkyMmMxN2Q2NGIxMDUxNGM5OWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcApAQCAtODIsNyArODIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0
Q29uc3RydWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVy
cm9yLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLAogICAgICAg
ICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlm
ICghcHJvZ3JhbSkgewpAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
CiAgICAgfQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15
VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFi
aWxpdHksIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjpt
b3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFs
dWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlv
bkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MTBiMjg4YjIxZjdmMzc3OWYy
M2FlOWJmMmQxNWYzYTljMzA4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0
aW9uIG5leHQodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMu
QGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgdGhpcy5AZ2Vu
ZXJhdG9yU3RhdGUsIHZhbHVlLCAvKiBHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlICov
IDApOworfQorCitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhp
cywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIHZhbHVlLCAvKiBHZW5lcmF0b3JSZXN1bWVN
b2RlOjpSZXR1cm5Nb2RlICovIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIHRoaXMuQGdlbmVyYXRvck5leHQuQGNh
bGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgdGhpcy5AZ2VuZXJhdG9yU3RhdGUsIGV4Y2Vw
dGlvbiwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlICovIDIpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDI5
OTBmYWUzNTQ4OTc5ZmVjN2NhMTg2NjkwOTFiYjA1ZTJhYzYyZTguLjVlNmQ1OWRmMTI3ZDJiZTdk
MmQxMzJjZDMzMGYzYTdiOGJmMjdiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkwLDYgKzkwLDggQEAKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmciLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5n
dGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1bmNfZXhw
IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxl
bmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVu
Z3RoIiA6IDkgfSwKQEAgLTEyOSw3ICsxMzEsOSBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9CisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRl
eCBhNjEzMmMzMmFhY2U5OWE3Mjk4ZjM4NDkxY2JmODg2ZTVkNjY2ODQ1Li4zNzQzNmMwMTU2NTQ5
ZTlmN2MwMWRjNDFhMDJlZTNkZDhiNWFmZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNzAsOCArNzAsOSBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAgICBjYXNl
IG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzogCi0gICAg
Y2FzZSBvcF9jb3B5X3Jlc3Q6IHsKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX2NvcHlf
cmVzdDoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDYgKzEyNSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yOgogICAg
IGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhw
OgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19h
cnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNlIG9w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAtMTUyLDYgKzE1NCw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBj
YXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ug
b3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVu
dHM6IHsKQEAgLTIzMyw2ICsyMzYsMTQgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2
ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CisgICAgICAgIHZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNTUsNiArMjY2
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2Nh
bGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoK
KyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1
ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxNSw2ICszMjcsOCBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25ld19mdW5jOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
OgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19h
cnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9wX3Rh
aWxfY2FsbF92YXJhcmdzOgpAQCAtMzkwLDcgKzQwNCwxNSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsgaS0t
OykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
KGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIHZlY3Rvci5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggZmNhNjMwMTQ5MTgyNmJlZTEwMDEyNGMyZjZhZTQyZjE4ZGVmOTllZS4u
M2MxMmRiOGE3NmUzNDhiOTc0YjA3YTY0MjgzYjkyMzllZWUxZGUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyOTQsNiArMTI5NCwxNCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKQEAgLTEzMTEsNiArMTMxOSwxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0OTksNiArMTUxNSwy
MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFn
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTog
eworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
c2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgcmVnaXN0ZXJOYW1lKGdl
bmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAg
IGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0
YSgpLCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRp
b24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51
Lm9wZXJhbmQ7CkBAIC0xNzIwLDYgKzE3NTAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9j
b25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9
IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzOworICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3Rl
cnNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAt
MTg3NSw2ICsxOTA2LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAg
ICAgZGVzdFRhYmxlLm1pbiA9IHNvdXJjZVRhYmxlLm1pbjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorCisgICAgICAgIGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVt
YmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgpKSB7CisgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmdyb3coY291bnQpOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGRbaV0gPSB1bmxpbmtlZENvZGVC
bG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICAvLyBBbGxvY2F0ZSBtZXRhZGF0YSBidWZmZXJzIGZvciB0aGUgYnl0ZWNvZGUKQEAgLTMw
NDksNiArMzA4Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNo
cmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3
ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjMWRm
MTg3YzEyMjBkMmY3ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4MmVjLi4xYTBiOThmMGNkYjJjMTVkNjAw
MmFmYzQ5YTQyYWRiYTAzYmRiMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTE0MSw2ICsxNDIsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQog
ICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCisgICAgaW50IG51bUNh
bGxlZVJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyB9CisK
ICAgICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0
ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9CiAKQEAg
LTY1NCw2ICs2NTcsMTAgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
U3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFw
cGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0K
IAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgaW50
MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChGYXN0Qml0VmVjdG9yIHZlY3Rvcikg
eyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rvcik7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSAtIDE7IH0KKyAgICBjb25zdCBGYXN0Qml0VmVj
dG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnQgaW5kZXgpIHsgUkVMRUFTRV9BU1NF
UlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNB
dFlpZWxkW2luZGV4XTsgfQorCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsg
Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29k
ZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtOTAwLDYgKzkwNyw4IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVt
cFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFi
bGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAgICAgICBWZWN0b3I8RmFzdEJpdFZl
Y3Rvcj4gbV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZDsKKwogICAgICAgICBFdmFsQ29kZUNh
Y2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCA2MjUyMWZjNjUyOGM1YTJlN2Q0ZWFmNDM4
NThjMDZjZWU3YzdhZWRkLi44MzcwM2NmYTkyMmNjNjI3MTI4NWY1OTM4ZTJhODIwZjhiZWRiMDcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlS2V5Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDQsMjMgKzQ1LDI5IEBACiAKICAgICBj
bGFzcyBFdmFsQ29kZUNhY2hlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxFeGVjdXRhYmxl
KiB0cnlHZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwg
SlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0
cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlz
Q2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NhY2hlTWFwLmdldChldmFsU291cmNlLmltcGwoKSkuZ2V0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmlj
dENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgh
aW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNv
ZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmlj
dCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NhY2hlTWFwLmdldChz
b3VyY2VDb2RlS2V5KS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
LCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4
ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UoZXZhbFNv
dXJjZSksIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7
CisgICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1v
ZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRhYmxl
KQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFs
U291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNoZUVudHJpZXMpCi0g
ICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5pbXBsKCksIFdyaXRlQmFy
cmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7
CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNl
LCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNoZUVudHJpZXMpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291
cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2Rl
S2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgICAgICAgICBtX2Nh
Y2hlTWFwLnNldChzb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4
ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICByZXR1cm4gZXZhbEV4ZWN1dGFibGU7CiAgICAgICAgIH0KQEAg
LTgwLDE3ICs4NywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNjb3BlLT5pc0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpIHx8IHNjb3BlLT5pc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCkgfHwg
c2NvcGUtPmlzVmFyU2NvcGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFs
U291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2Fj
aGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNl
LCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gSWYgZXZhbCgpIGlz
IGNhbGxlZCBhbmQgaXQgaGFzIGFjY2VzcyB0byBhIGxleGljYWwgc2NvcGUsIHdlIGNhbid0IHNv
dW5kbHkgY2FjaGUgaXQuCiAgICAgICAgICAgICAvLyBJZiB0aGUgZXZhbCgpIG9ubHkgaGFzIGFj
Y2VzcyB0byB0aGUgInZhciIgc2NvcGUsIHRoZW4gd2UgY2FuIGNhY2hlIGl0LgogICAgICAgICAg
ICAgcmV0dXJuICFpblN0cmljdENvbnRleHQgCi0gICAgICAgICAgICAgICAgJiYgZXZhbFNvdXJj
ZS5sZW5ndGgoKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkg
CisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihldmFsU291cmNlLmxlbmd0
aCgpKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkKICAgICAg
ICAgICAgICAgICAmJiBpc0NhY2hlYWJsZVNjb3BlKHNjb3BlKTsKICAgICAgICAgfQogICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IG1heENhY2hlRW50cmllcyA9IDY0OwogCi0gICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJs
ZT4+IEV2YWxDYWNoZU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFNvdXJjZUNvZGVLZXks
IFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4sIFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0cz4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFsQ2FjaGVNYXAgbV9j
YWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEw
MmExNWQuLjM1YmY3ZGZiNTlhYTZmOTg5YTkzNDU2OTBjNjk4YzZjYzZkODIyMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwy
MSArMjYsMjggQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxl
SW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9k
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2Vy
TW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5p
emVkLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwog
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0
aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1
Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVk
c0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29u
c3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgOiBtX25lZWRzQWN0
aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkK
ICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0Nv
bnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihp
c0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJv
d0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShw
YXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworICAgICAgICBBU1NFUlQobV9z
dXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAg
ICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5l
cmF0b3JUaGlzKSk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsgfQpAQCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4
ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVy
YXRvclRoaXMpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbjsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2
LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1v
ZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQg
bV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDog
MTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9p
c0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKKyAg
ICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjNj
MzE5ZDA2ZTM5OTdlZGVmM2QzMjc4N2I5YjkzNzJmZmUyNzFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjUs
MTAgKzY1LDEyIEBACiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQo
KSkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAg
ICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmdlbmVyYXRvclRo
aXMoKSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5z
dXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQo
MCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwgbV9wYXJzZU1vZGUoaW5mby5w
YXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fY29kZVR5cGUoY29kZVR5
cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGZhNTE0YzE1NmE3Y2I3
Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmUxYjA5NWI2YWQ2NTJlMDA4N2Q5YTUzMjcxNzU4
MTgwY2Y2NzY4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUu
aCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJh
bmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJIYW5kbGVy
SW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAg
LTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsxMTgs
NyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wg
aXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBi
b29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0K
IAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNG
dWxsU2NvcGVDaGFpbjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9y
S2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JU
aGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0
b3JUaGlzKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAgdm9p
ZCBzaHJpbmtUb0ZpdCgpCiAgICAgewpAQCAtMjIzLDYgKzIyNyw3IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0NCw2ICsyNDksMTEgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMubGFzdCgpOyB9CiAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRj
aEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAg
IC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgc2l6ZV90IG51
bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVE
YXRhID8gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgOiAw
OyB9CisgICAgaW50MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChGYXN0Qml0VmVj
dG9yIHZlY3RvcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rvcik7IHJldHVybiBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSAtIDE7IH0KKyAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnQgaW5kZXgpIHsg
QVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0
ZXJzQXRZaWVsZFtpbmRleF07IH0KKwogICAgIHVuc2lnbmVkIGFkZEZ1bmN0aW9uRGVjbChVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHNpemUg
PSBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOwpAQCAtMzg3LDEyICszOTcsMTQgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsK
ICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpcyA6IDE7CisgICAg
dW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7
CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAK
KyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVh
dHVyZXM7CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApAQCAtNDM2LDYgKzQ0OCw4IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0
b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAor
ICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZDsKKwogICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1f
ZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uZGM2
ZDg2NWY4MjM1NzEwNmRlZjdkNGNhNTUzYjI5ZDc1MDdmYjk4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4
ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9k
ZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwg
ZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+
cGFyc2VNb2RlKCksIGVycm9yLCBudWxscHRyKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOwogCiAg
ICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAg
LTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShm
dW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwog
ICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0
YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwo
KSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1
bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3Ry
dWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpcygpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwg
cHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAg
ICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0
cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5h
bWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFi
aWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5v
ZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0
aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9u
KCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRv
clRoaXMpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUt
PnN1cGVyQmluZGluZygpKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKQEAgLTE4
MCw3ICsxODEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kLCAKLSAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKQorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewogICAgIGNhc2UgQ29kZUZvckNh
bGw6CkBAIC0xOTYsNyArMTk3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1
Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAotICAgICAg
ICBlcnJvciwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7CiAg
ICAgCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGQ4ZTgyMjkzOTBlNTc3Y2I0ODBmYjBlOTI5M2Y0MWJh
NDJkOWMxZjguLjhiODI3MWE2YzNmNmNjNWQyMTlkNDY5YzEzZGU1NjNmM2IzZjJiYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUu
aCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJh
bmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJIYW5kbGVy
SW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAg
LTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92
ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9y
VGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3Zl
cnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
c291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAg
cmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTgyLDYgKzgzLDggQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzSW5T
dHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAg
IEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxG
dW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+
KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9yVGhp
cyk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAogICAgIHVuc2lnbmVk
IHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVu
Y3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk4
LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
Rm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwg
Ym9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmpl
Y3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDEwICsxMjgsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dEFiaWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1
Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlh
YmxlczsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fy
cm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVy
YXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3Q7CiAKQEAgLTE1OCw3ICsxNjAsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0QWJpbGl0eTogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAg
dW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDog
MTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjkzNzBjOGQy
ODRhMzg0ZjIxZTBlNzg5MjY4NTQ1YzkyYjE5ODIzYi4uM2NmMGI3YWZhZmVmOWU1ODZkZTAwNmFj
ZWQyYzg3OTczODJlYjg2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRl
UmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCkBAIC0yMDEs
NyArMjAyLDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAg
ICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBh
IGNhbGwsIHdoaWNoIGFyZSBub3QKICAgICAvLyBjb21wYXRpYmxlIHdpdGggdGFpbCBjYWxscyAo
d2UgaGF2ZSBubyB3YXkgb2YgZW1pdHRpbmcgb3BfZGlkX2NhbGwpLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKLSAgICAsIG1faW5UYWlsUG9z
aXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkg
JiYgIW1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcykKKyAgICAvLworICAgIC8vIEluIGEgY29udGV4
dCBvZiBhIGdlbmVyYXRvciwgYWxsIHRoZSBjYWxscyBjYW5ub3QgYmUgdGFpbCBjYWxscyBiZWNh
dXNlIGFsbCB0aGUgcmVzdWx0cyB3aWxsIGJlIHdyYXBwZWQgYXMgYW4gaXRlcmF0b3IgcmVzdWx0
LgorICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LWlzaW50YWlscG9zaXRpb24KKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFp
bENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1pdFByb2Zp
bGVIb29rcyAmJiBwYXJzZU1vZGUoKSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUp
CiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50
UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTIyNyw5
ICsyMzEsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxv
Y2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9
IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1
bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNF
dmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJh
cmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRv
ciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYg
bmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUg
ImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVz
ICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEg
Z2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAg
ICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJn
dW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0
IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpn
ZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJl
dHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAg
ICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8g
dGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9
CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwog
ICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9k
ZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAK
QEAgLTI1NCwxNCArMjgyLDQ1IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXpl
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3Bl
IGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBi
YXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIg
PSBhZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fcGFy
YW1ldGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhp
czo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVy
KTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9y
U3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxp
a2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9u
IHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUg
Zm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gQ29tcGxldGVkIHN0YXRlLgorICAgICAgICAvLyBX
ZSBqdW1wIHRvIHRoZSBtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsIGltbWVkaWF0ZWx5IGJlY2F1
c2Ugd2UgY2Fubm90IHVzZSBhbnkgdGVtcG9yYXJ5IHJlZ2lzdGVycyBoZXJlLgorICAgICAgICBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBtX2dlbmVyYXRvckNvbXBsZXRlZExh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAobV9nZW5lcmF0b3JDb21wbGV0ZWRM
YWJlbC5nZXQoKSk7CisKKyAgICAgICAgLy8gRXhlY3V0aW5nIHN0YXRlLgorICAgICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkdlbmVy
YXRvciBpcyBleGVjdXRpbmciKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVD
aGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
U3RhdGU6OkV4ZWN1dGluZykpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2Nv
cGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkg
eworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlz
RHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
OwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlv
bk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlz
RHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQdXNo
RnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3Rl
ciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91bGRDYXB0dXJl
U29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
PSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9u
bWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3
ZSBoYXZlCkBAIC0yNzEsMTkgKzMzMCw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50
KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFrZSBzdXJlIHRo
ZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ug
c3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5v
dGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBwYXR0
ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVz
dFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1l
dGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJh
bWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJlIG91dCBzb21l
IGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9vbCBjYXB0dXJl
c0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUyMiwzNSBAQCBQYXJzZXJFcnJvciBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVnaXN0
ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsK
KyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8
IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlv
blRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBtX2dl
bmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9f
dGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAg
ICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBlbWl0TW92
ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGVtaXRD
cmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8
dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBl
bWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3Rvcigp
KSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVn
aXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NjYsOCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZt
X3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAvLyBB
bGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQ
YXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAg
LTc5OSw2ICs4NzIsMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxp
emVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91
dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisg
ICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3BhcmFtZXRlcnMu
Z3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIK
KyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5p
bmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSku
Zmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICBtX3Jl
c3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Cisg
ICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVu
dmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04NTUsNiArOTQ0LDIxIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdUZW1wb3JhcnkoKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK0Zhc3RCaXRWZWN0b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVDYWxs
ZWVSZWdpc3RlcnMoKQoreworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgRmFzdEJp
dFZlY3RvciB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2l6ZShtX2NhbGxlZVJlZ2lzdGVycy5zaXpl
KCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6
IG1fY2FsbGVlUmVnaXN0ZXJzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAgICAg
ICAgICAgIHZlY3Rvci5zZXQoaSk7CisgICAgICAgICsraTsKKyAgICB9CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKworCiBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdMYWJlbFNj
b3BlKExhYmVsU2NvcGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSkKIHsKICAg
ICAvLyBSZWNsYWltIGZyZWUgbGFiZWwgc2NvcGVzLgpAQCAtMjMxMiwxMiArMjQxNiwxMiBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3RlcklEKiBjb25k
aXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVh
dGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMobV90
aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAgICBtX2NvZGVC
bG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU3NSw2IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9k
ZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoZHN0
LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpKTsK
LX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVy
bmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1pdE9wY29kZShv
cF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3Qs
IFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4cCk7CkBAIC0y
NDkzLDEzICsyNTgzLDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0dXJuIGRzdDsK
IH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lz
dGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJl
Z2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAgIEFTU0VSVChv
cGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93X2Z1
bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gPSBmdW5j
LT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0
aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpKSB7
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAg
ICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsK
KyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CiAg
ICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNjE0LDE4IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhw
ck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIGVt
aXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7CisgICAgZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7
CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlv
bkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsK
KyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBt
X2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgIGlmIChp
c0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVt
cHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAgIGVt
aXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7Cisg
ICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVy
biBkc3Q7CiB9CiAKQEAgLTI1NDAsNiArMjY0MywxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVu
Y3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25E
ZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgIGVt
aXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRP
cGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBD
YWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKQEAgLTM3NjYsNiArMzg4MiwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJl
dHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0
b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJl
Z2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sK
KyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENh
bGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVt
aXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAg
ZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAg
ICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJh
dG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0z
ODQyLDQgKzM5NzYsMjQ0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdp
c3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgYXJndW1lbnQsIGZhbHNl
KTsKKyAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5h
ZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAg
IGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlUmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkp
OworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jl
c3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5k
ZXgpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBS
ZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bf
c3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAg
UmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxpdHlP
cChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAg
ICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworICAg
IC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdp
c3RlciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5lcmF0b3JWYWx1ZVJlZ2lz
dGVyKCksIHRydWUpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdp
c3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwg
MCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0
ZWQpKTsKKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQor
CisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVt
aXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAg
IGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVl
UmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgewor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAg
ICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERv
bmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5l
eHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCks
IGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQo
KSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1p
dExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0
b3JSZXN1bHQobnVsbHB0ciwgdmFsdWUuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBp
bnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAg
ICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAgICAg
ICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAg
ICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5n
ZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVs
PiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlP
cChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAg
ICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwu
Z2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1ZW5jZSA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybkl0
ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9w
ZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5n
ZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3Zl
KHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1ZVJlZ2lz
dGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0b3JS
ZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1
cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNP
YmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJu
U2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVy
cm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21H
ZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVyblJlZ2lzdGVyID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
UmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3Rl
cigpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5TZXF1ZW5j
ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgcmV0
dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRH
ZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFy
dC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9t
R2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxs
eUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29w
ZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9y
U3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJl
dHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dN
ZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwg
dGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0Lmdl
dCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50
cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAg
ICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVs
ZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRN
b3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUu
Z2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkp
OworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKworUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlc3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBkc3QgPT0gdmFsdWUpCisgICAgICAgIHJl
c3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROZXdPYmplY3QocmVzdWx0LmdldCgpKTsK
KyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25l
LCBlbWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9uZSkpLCBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIHJldHVy
biByZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRl
ZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
c3RhdGUpKSk7CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlO
YW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAg
IFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3RhdGUp
Cit7CisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVs
dExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0
YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAg
ICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVC
bG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dp
dGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaElu
Zm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKworICAg
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dp
dGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJh
bmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7Cisg
ICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Ly8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2
ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZv
cndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVs
c1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7
CisgICAgfQorCisgICAgZW1pdExhYmVsKG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkp
OworICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgp
LCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVy
YXRvclJlc3VsdChuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQo
KSksIHRydWUpOworICAgICAgICAgICAgZW1pdFJldHVybihpdGVyYXRvclJlc3VsdC5nZXQoKSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgZW1pdExhYmVsKHRocm93
TGFiZWwuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1
OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYuLjEyOGMwMWExMGU5MzA4Yzk0YWYz
YzRlMzMwNTA0MjE2YWRjOTFiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNk
ZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4
IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgp
OyB9CisgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCk7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsg
fQogCiAgICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTI5Nyw2ICszMDAsOCBA
QAogCiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3Bl
UmVnaXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZWdpc3RlcigpIHsg
cmV0dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIHRoZSBu
ZXh0IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyByZXR1cm5lZCBieQog
ICAgICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZvcm0gb2YgcmVmZXJl
bmNlIGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBhIHJlZmNvdW50IG9m
IDAgaXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBAIC00OTksMTAgKzUw
NCw4IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdpc3RlcklEKiBkc3Qs
IEVsZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lv
bgogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5j
dGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVu
Y0V4cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25z
dHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQq
LCBCYXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2Rl
Kik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdFeHAqKTsKIApAQCAtNTk2LDYgKzU5OSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJ
c1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKTsKICAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdp
c3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3Vs
dCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CkBAIC02NDQsMTIgKzY0OCwyNSBAQAog
ICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hU
eXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0
cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90
IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVM
YWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0
YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIGJvb2wpOworICAg
ICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbmRH
ZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKwogICAgICAgICBDb2RlVHlwZSBjb2Rl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIAogICAgICAgICBib29sIHNob3Vs
ZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7IH0K
ICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1p
dERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CisKKyAgICAgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApAQCAtNjY3LDYgKzY4NCw4IEBA
CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c2NvcGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlv
bk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUs
IGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSopOworICAgICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVDYWxsZWVSZWdpc3RlcnMoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9p
ZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRp
bWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBu
dWxscHRyKTsKQEAgLTc1MiwxMiArNzcxLDIyIEBACiAgICAgICAgICAgICBWYXJpYWJsZUVudmly
b25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJU
RFoodmFyaWFibGVzVW5kZXJURFopOwogCisgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxh
Z3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBi
ZSByZW9yZ2FuaXplZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE1NDcKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBtZXRhZGF0YS0+cGFyc2VNb2RlKCk7CiAgICAgICAgICAgICBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxp
dHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBlbHNl
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUg
JiYgbWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQorICAg
ICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7CisKKyAgICAgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcyA9IEdl
bmVyYXRvclRoaXM6Ok5vbkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpFbXB0eTsKIAotICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0
eSwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0
YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgdmFyaWFi
bGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRl
clREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC03NjUsNiArNzk0LDcgQEAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50
cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhP
cGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0
aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVl
UmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVI
b29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKKyAg
ICAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnMmKTsKICAg
ICAgICAgdm9pZCBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXgpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVy
VmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwgRnVu
Y3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBj
b25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0dXJlcyk7
CiAKQEAgLTc3Niw2ICs4MDYsOCBAQAogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd0V4
cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAKKyAgICAgICAgTGFiZWwqIGdlbmVyYXRvckNv
bXBsZXRlZExhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbC5n
ZXQoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rp
b24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2luc3RydWN0aW9uczsKIApAQCAtODA0LDYg
KzgzNiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIG1fdG9wTW9zdFNjb3BlIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX2FyZ3VtZW50c1JlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyIHsgbnVsbHB0
ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2dlbmVyYXRvclJlZ2lzdGVyIHsgbnVsbHB0ciB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKQEAg
LTgyNyw2ICs4NjAsOCBAQAogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0Y2hDb250
ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250ZXh0Pj4g
bV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29u
dGV4dFN0YWNrOworICAgICAgICBSZWZQdHI8TGFiZWw+IG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFi
ZWw7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVs
czsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxG
dW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+
IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6
ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdk
ZWRhNzg2OGU1YmJkMGY1Mi4uMWQzODIyZjY3MzJhMzU0N2YzZTkwZTYxN2ZmMGRlZTIwZjg3YTZk
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
T05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAg
UmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0g
ICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3
YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1
Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0
b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKQpAQCAtMTcwLDEyICsxNzEsMTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsK
IH0KIAotc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZv
ckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQg
Y2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVl
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5l
cmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVu
ZGVyc2NvcmVQcm90byk7CiB9CiAKQEAgLTI1ODMsMTMgKzI1ODgsMjcgQEAgdm9pZCBSZXR1cm5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAg
ICAgZHN0ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1f
dmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbnVsbHB0cjsKKyAgICBpZiAobV92YWx1ZSkgeworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV92YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBq
c1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCks
IHRydWUpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5n
ZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygp
KSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdFBvcFNjb3BlcyhnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCAwKTsKICAgICB9CiAK
KyAgICBpZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29t
cGxldGVkKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJh
bWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3coZW5kT2Zmc2V0KCkpOyAKQEAgLTI5NjYsMjYgKzI5ODUs
MTAwIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250
cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFy
dExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBzaW5n
bGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1cm5Ob2RlKiBy
ZXR1cm5Ob2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUoKSkgeworICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAg
U3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7
CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAg
ICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHBy
U3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNG
dW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNf
Y2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
bmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVy
QmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRv
cik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCks
IGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1
cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmds
ZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNC
bG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0g
c3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgp
OwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxv
Y2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0
PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICAvLyBG
SVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVy
YXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAgICAg
Ly8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRv
ciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMg
aW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKIAotICAgIC8vIElmIHRoZXJl
IGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAo
IXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25z
dHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2Fk
KDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIw
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3Qg
ZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGlu
IHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JUaGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlO
b2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpJbml0aWFsKSkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVy
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwg
aW5pdGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJh
dG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IuZ2VuZXJh
dG9yUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVz
ZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3Rh
cnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+IGdl
bmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICB7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVx
LCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUp
KSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZ2VuZXJhdG9yLmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKCkpOworICAgICAg
ICB9CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOworICAgICAgICBUcnlEYXRhKiB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoZ2VuZXJh
dG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdl
bmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgICAgIFJlZlB0cjxMYWJl
bD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXAoZG9uZS5nZXQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBnZW5l
cmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvci5uZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRD
YXRjaCh0cnlEYXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rl
ci5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVk
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkp
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxw
dHIsIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSwgdHJ1ZSkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAgICBTdGF0
ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAg
ICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9y
IGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2Yg
YSBzaW5nbGUgYmxvY2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3Rh
dGVtZW50LT5pc0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0
ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+
bGFzdFN0YXRlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYm
IGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2Nr
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0
IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7Cisg
ICAgICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxl
VHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHBy
ZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2Vy
J3Mgc291cmNlIGNvZGUuCisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5l
U3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
TGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogfQogCkBA
IC0zMDEzLDExICszMTA2LDI0IEBAIFJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIFJlZ2lzdGVy
SUQqIFlpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0
dWIuIFdoZW4gY29tcGxldGluZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQg
aXQuCi0gICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBp
bXBsZW1lbnRlZCB5ZXQuIikpOworICAgIGlmICghZGVsZWdhdGUoKSkgeworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYXJnID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFyZ3VtZW50KCkpIHsK
KyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRZaWVsZChhcmcuZ2V0KCkpOworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5n
ZXQoKSk7CisgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQo
KSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREZWxlZ2F0
ZVlpZWxkKGFyZy5nZXQoKSwgdGhpcyk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRM
b2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
dmFsdWUuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xh
c3NEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAppbmRleCAyMDdlMGIzM2U5ODIzOWVlNGI0MmE1NTVkNDlmNDFhZDc0NzRl
ODg1Li5lMGZlYWQzZDIyMDBhOTIwMjQ2MmMwMDk4MmJiNDFmZDlmNDBlZTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCkBAIC05Niw2ICs5Niw4IEBAIGNsYXNzIEhlYXAgewogICAgIC8v
IG91ciBzY2FuIHRvIHJ1biBmYXN0ZXIuIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3Rp
bWVDaGVja1Jlc29sdXRpb24gPSAxNjsKIAorICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lk
KiBvcGFxdWVQb2ludGVyKTsKKwogICAgIHN0YXRpYyBib29sIGlzTGl2ZShjb25zdCB2b2lkKik7
CiAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29s
IHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKaW5kZXggZjRhY2YyNWU2MGUxODkzOGE2OGE3YjhkYjk1OTU0ZDZhMjUw
MmIyNC4uYjhmN2Q3NmZmZmNkMDAwNjRlOGRlY2I2NTFjOWFmYWNhYmNiNzdmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC03MCw2ICs3MCwzNiBAQCBpbmxp
bmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGhlYXAodi5h
c0NlbGwoKSk7CiB9CiAKK2lubGluZSBib29sIEhlYXA6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCog
cCkKK3sKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIExvb2sg
dXAgYmVsb25naW5nIE1hcmtlZEJsb2NrIGFuZCBmaWx0ZXIgb3V0IGlmIGl0IGlzIG5vdCBhbGxv
Y2F0ZWQuCisgICAgVGlueUJsb29tRmlsdGVyIGZpbHRlciA9IG1fb2JqZWN0U3BhY2UuYmxvY2tz
KCkuZmlsdGVyKCk7CisgICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpi
bG9ja0ZvcihwKTsKKyAgICBpZiAoZmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRz
PihjYW5kaWRhdGUpKSkgeworICAgICAgICBBU1NFUlQoIWNhbmRpZGF0ZSB8fCAhbV9vYmplY3RT
cGFjZS5ibG9ja3MoKS5zZXQoKS5jb250YWlucyhjYW5kaWRhdGUpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIC8vIFRlc3QgdGhhdCB0aGUgcG9pbnRlciBpcyBBdG9tQWxp
Z25lZC4gSWYgbm90LCB0aGlzIHBvaW50ZXIgaXMgbm90IHBvaW50aW5nIHRvIGEgaGVhZCBvZiBh
IGNlbGwuCisgICAgaWYgKCFNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBnaXZlbiBjYW5kaWRhdGUgTWFy
a2VkQmxvY2sgaXMgYWN0dWFsbHkgYWxsb2NhdGVkIGluIFZNJ3MgSGVhcC4KKyAgICAvLyBUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBjYW5kaWRhdGUgTWFya2VkQmxvY2sgZGVmaW5pdGVseSBl
eGlzdHMuCisgICAgaWYgKCFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNvbnRhaW5zKGNh
bmRpZGF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBwb2ludGVyIGNh
biBiZSB1c2VkIGFzIG9uZSBvZiBjZWxscy4gTm90IHBvaW50aW5nIHRvIG1ldGFkYXRhLCBvciBt
aWRkbGUgb2YgY2VsbHMuCisgICAgaWYgKCFjYW5kaWRhdGUtPmlzQXRvbShwKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGNlbGwgcG9pbnRlciBpcyBub3QgemFwcGVkLiBJ
dCBtZWFucyB0aGlzIGNlbGwgaXMgYWN0dWFsbHkgdXNlZC4KKyAgICByZXR1cm4gIXJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCktPmlzWmFwcGVkKCk7Cit9CisKIGlubGluZSBib29s
IEhlYXA6OmlzTGl2ZShjb25zdCB2b2lkKiBjZWxsKQogewogICAgIHJldHVybiBNYXJrZWRCbG9j
azo6YmxvY2tGb3IoY2VsbCktPmlzTGl2ZUNlbGwoY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2NTUxOWM1NzJlYjYx
ZWViMzllMzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2MTU0ZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw2ICsxNTUsNyBA
QAogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBi
b29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0
IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBz
ZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZv
aWQqKTsKQEAgLTM4OCw3ICszODksNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkK
KyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiAgICAg
ewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwogICAgICAg
ICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1iZXIocCk7CkBAIC0zOTksNyArNDAw
LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdG9tTnVtYmVy
ID49IG1fZW5kQXRvbSkgLy8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFsaWQgY2VsbHMgb3V0
IG9mIHRoZSByYW5nZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQogCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwo
Y29uc3Qgdm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICghaXNBdG9tKHApKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0
IEpTQ2VsbCo+KHApKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM1NDc1MWNkNzIwZmZmYzExZTE1ZDM1MjU2
YjA2Mzc1YzBiNmU4YWMuLmQxODUwNDIwYWJkNWRkNmIwZTMxOTQ2ZDk2NWQwN2MwNDAxZmJhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtMTUzLDcgKzE1MywxNiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUo
KTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxv
Y2soKTsKICAgICBKU1Njb3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJhbWUtPnVuY2hl
Y2tlZFIoY2FsbGVyQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpLlJlZ2lzdGVy
OjpzY29wZSgpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5l
dmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHBy
b2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
YWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKKworICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNr
SWZOZWVkZWQ7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5jb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgIHRoaXNURFpNb2RlID0g
VGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9j
ay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGNhbGxl
clVubGlua2VkQ29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1w
dHkpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworCisg
ICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSkpOworICAg
IEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCku
dHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHNvdXJjZUNvZGUsIHRoaXNU
RFpNb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgIGlmICghZXZhbCkgewogICAgICAgICBp
ZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKQEAgLTE3MSw4ICsxODAsNyBA
QCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBs
aXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9u
cy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAg
ICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
PyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsK
LSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3co
Y2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIHRoaXNURFpNb2RlLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAg
ICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZy
YW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRo
aXNURFpNb2RlLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKICAgICAgICAgaWYgKCFl
dmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IGE2MWI1N2Q0NjE1ZjlhOTJlOWIzNDM5NmVkMzg4Zjc5NmQ4
NDUwZDAuLjk1YmFiMDRkMjNhOGViZTk1Y2NiNWFkZDIwYzI4ZTJjNWFjOTM2NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jb3B5X3Jlc3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQp
CisgICAgICAgIERFRklORV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1l
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0yNjAsNiArMjYyLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVy
YXRvcl9mdW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkK
ICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklO
RV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGQyMjU4MjM5ZDJlYjczMDM1MWRkZTExNWU2OGE3NWJj
YTQ3OWQ0MmQuLmZjYzhmMzA2Njc3ZTc2NmMwZDFmY2E1Mzc4NzQyMjVkYTI1NjM4ZGEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNr
X3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAt
NTQxLDYgKzU0Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwpAQCAtNjYwLDYgKzY2NCw3IEBACiAg
ICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQp
OwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAg
ICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhcklu
amVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICB2b2lk
IGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IGQ0OTQ4OTY1MGU2ODU0NjU5ZTVhNjBkZTc4ZTYzM2UxYTUxODM4
NWEuLjZlYzE1YmI0NGIzMzQwNWYwZjJjZTIzNzA3ZTQxNTQ2ODNhYjFhYzEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgbV9jb2RlQmxvY2stPnJlZ2V4cChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1wIGxhenlKdW1wOwogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtOTc4LDE0ICs5Nzgs
MjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCwgcmVnVDApOwogI2VuZGlmCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9
IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwg
ZnVuY0V4ZWMpOworCisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgaWYgKG9wY29k
ZUlEID09IG9wX25ld19mdW5jKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7
CisgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1
cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0
aW9uKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24o
Y3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1v
bihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+
dS5vcGNvZGUpOwpAQCAtMTAxOCwxMSArMTAzMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZWxzZSAKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsKICNlbmRpZgotICAgIGVsc2UKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAg
IGVsc2UgeworICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQorICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y3Rpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjpl
bWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihj
dXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTQwNSw2ICsxNDMzLDE4IEBAIHZvaWQgSklUOjplbWl0
X29wX2NvcHlfcmVzdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCBkODczYTFkZGQ2NTdhMjg5NjhhMGU1MWY5MDYzNmQxZGUyZmNmODE2Li5jYWQ5MzQ2OWMxYmNi
ZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVRUb0RG
R0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgpAQCAtOTg3LDIzICs5ODgsNDIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBw
cm9maWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNpemVWYWx1ZSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQorfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6
OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5j
dGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIGlmIChpc0ludmFsaWRhdGVkKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworfQorCitleHRlcm4gIkMiIHsK
KworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkK
K3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsKLSAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5p
bmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgdHJ1ZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
Q29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRl
KiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQorRW5jb2RlZEpTVmFsdWUg
c3RhdGljIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4
ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKQEAgLTEwMTksMTIgKzEwMzksMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUKICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1Zh
bHVlLCB0cnVlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihl
eGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOwogfQogICAg
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRh
YmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1
ZSwgZmFsc2UpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOwogfQogCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDk2MzhmMTQ1YzlkNTU3NWYxYzk1MmUyNzVmNTk0YTc2YjMyYTRiODguLjI1
NDI1NTAyMjlkYTQxZTFhZGQ0NmIwYjAyNThlOGU0OTk1YjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zMDEsNiArMzAxLDggQEAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzY1ZjE5Nzk1MGUz
MjNmMDU2NmU3MmM3M2I0ZWVkNjNlM2IyMDhjNS4uNWY1ZjIxODRjOTNiOTJjOWIyM2JkMjNmN2M3
ZDM3OTE2NzQ5NmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKQEAgLTEwNDEsNiArMTA0MiwxOCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZh
bChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkK
ICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NF
UlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5u
ZWVkc0FjdGl2YXRpb24oKSB8fCBleGVjLT5oYXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUq
IHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29w
ZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5n
IGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQp
LCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNf
ZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMDUyLDYgKzEwNjUsMTcgQEAgaW5saW5l
IEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlv
bkV4cHIocGNbM10udS5vcGVyYW5kKTsKKworICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVH
SU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5k
ZXggZTI0NDgyOWZkZDFlMmYxNTA2YTM1ZDEwYTRlYjgxZmNiZTMyYzUzMS4uMjcxMzI0YjE4NDUz
ZDcyZGM4Yjc2MTgwYmEwMzA0YWI0NTY1OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTk5LDYgKzk5LDggQEAKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGY4ZTEyOGNjZDlhMDRhMTFhY2Y5
OTFjYmMxYjViMjBkOTdjYWYwMzMuLjM2OGQwODc1MmE3Y2ZiN2FkY2FkZGU2ZjBjM2U3OTFiNWZj
ZTQyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTEyMjcsNiArMTIyNywxMiBAQCBfbGxpbnRfb3BfbmV3X2Z1bmM6
CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfYXJyYXkpCkBAIC0xNDU4LDYgKzE0NjQsMTEgQEAgX2xsaW50X29wX25ld19mdW5jX2V4
cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAg
ZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5l
cmF0b3JfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKwogX2xsaW50X29wX25ld19hcnJvd19m
dW5jX2V4cDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQpAQCAtMTU3Myw2ICsxNTg0LDE4IEBAIF9sbGlu
dF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgzKQorCisK
IF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1l
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIx
NjJlOGRmMTI0OWY1OTdmODZmNTIyYjcwZTFlOTYwOWJlMDAuLjJiODRjYmFmMzdlZjA0NjBiZGI5
MTZkMmJiZGFjMDJlMGQyYjRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCkBAIC0zNDEsOSArMzQxLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBudWxs
cHRyLCAvKiBkZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHByTm9kZSog
Y3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlp
ZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1
bWVudCwgYm9vbCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9u
LCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2RlID0gbmV3
IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdh
dGUpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVu
ZCk7CisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNy
ZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHBy
ZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCkBAIC0zNjQsMTIgKzM2NiwxMiBAQCBjbGFzcyBBU1RC
dWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAK
ICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29s
IGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAg
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9w
YXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25z
dHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwg
Y29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAt
ODg2LDYgKzg4OCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+
c2V0U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJn
dW1lbnRzVXNlKCkgeyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3Ry
dWN0IFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEz
NzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uNWI2ZGM0OTM4NWRhNzgzNThj
Mjc5YmMwODAwYmY4OWEwYTY1NzljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBm
dW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikK
QEAgLTE2MiwxMCArMTYyLDExIEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxl
cyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgICAgICwg
bV9wYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKICAgICAgICAgLCBtX3BhcnNlTW9kZSht
b2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCisg
ICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGlu
ZykpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0
aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CisgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKICAgICBBU1NFUlQobV9jb25zdHJ1
Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMGFhMzExZGMxMWQ3ZjhhOGIw
MWZlYzdlNDRiZGUyMWZhNTc4ZWVjZS4uMGJmMDBiN2JlOTM3Zjc5NzhhNDU2MzczZmFkZTMxZjVj
NzVmOWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgxNyw3ICsx
ODE3LDcgQEAKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmco
Y29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAg
ICAgICAKQEAgLTE4NDIsOCArMTg0Miw4IEBACiAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
KyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+
KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5l
LCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0
KQpAQCAtMTg2OSw4ICsxODY5LDggQEAKICAgICAgICAgaW50IG1fbGFzdExpbmU7CiAgICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3Ry
aWN0Q29udGV4dCA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAg
ICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25lZCBt
X2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKQEAgLTE5MzIsNyArMTkzMiw3IEBACiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjg3NGIyN2UzOTA5MDdjOGU0MTQ5ODI2
YzM3OWU0MmNmNTljZTUyYS4uNWJiYTUyMGQ2YTU3NGVjNzNkMjllNTJjMDBkOTI3Zjc2ZWU2ZThk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk0LDcgKzE5
NCw3IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46
OlBhcnNlcigKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJC
dWlsdGluTW9kZSBidWlsdGluTW9kZSwgCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJjZSgmc291
cmNlKQpAQCAtMjEwLDYgKzIxMCw3IEBACiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0
cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW4oYnVp
bHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKKyAgICAsIG1fc3VwZXJC
aW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZChkZWZh
dWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9kZSkKIHsK
QEAgLTI0OSw3ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewog
ICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAg
ICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9u
SW5mbyk7CisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAg
ICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiAh
aGFzRXJyb3IoKSkgewpAQCAtMjczLDggKzI3NywxMiBAQAogICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1l
bnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1v
ZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1l
bnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1v
ZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwg
Q2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
b3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJp
Y3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7CkBAIC0z
MDEsNyArMzA5LDE0IEBACiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRGVjbGFyYXRpb25z
ID0gc2NvcGUtPmRlY2xhcmVkVmFyaWFibGVzKCk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNh
cHR1cmVkVmFyaWFibGVzKQogICAgICAgICB2YXJEZWNsYXJhdGlvbnMubWFya1ZhcmlhYmxlQXND
YXB0dXJlZChlbnRyeSk7Ci0gICAgCisKKyAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7
CisgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAg
ICAgICBpZiAodXNlZFZhcmlhYmxlcy5jb250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMuaW1wbCgpKSkKKyAgICAgICAgICAgIGNvbnRleHQucHJvcGFnYXRlQXJndW1lbnRzVXNl
KCk7CisgICAgfQorCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJl
cygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBT
dHJpY3RNb2RlRmVhdHVyZTsKQEAgLTMxMSwxMCArMzI2LDEwIEBACiAgICAgICAgIGZlYXR1cmVz
IHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRBcmd1bWVudHMp
CiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkQXJndW1lbnRzRmVhdHVyZTsKKworCiAgICAg
VmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbikgewotICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJs
ZXM7Ci0gICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8gYWxs
b3cgYnVpbHRpbnMgdG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQo
KSk7CkBAIC00NTgsNiArNDczLDQ1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNv
dXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworCisgICAgdW5z
aWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlv
biBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVp
bGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0KTsKKyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OworICAg
IGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9
IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCB0eXBlCisKKyAgICB7CisgICAgICAgIEF1
dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAg
ICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBTeW50YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0
aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4
dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBnZW5lcmF0b3IiKTsKKyAgICAg
ICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKKyAgICB9CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRv
a2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBl
ckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5m
by5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAgaW5mby5ib2R5U3RhcnRD
b2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5mbyk7CisgICAgYXV0byBzdGF0ZW1l
bnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25F
eHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKKyAgICBjb250ZXh0LmFw
cGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKworICAgIHJldHVybiBz
b3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRp
ZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7CiAg
ICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAtMTU4OSwxNSArMTY0Mywx
NCBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvZHkoCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCi0gICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCisgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywg
RnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5j
dGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0
aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9y
S2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2MDksNyArMTY2
Miw3IEBACiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRz
KHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIg
OiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVy
Q291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBA
IC0xNjI1LDYgKzE2NzgsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gIm1ldGhvZCI7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAgICAgIHJldHVybiAiZ2Vu
ZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
OgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0
aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBAIC0xNzAzLDYg
KzE3NTgsMzcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3Rl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5j
cmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOworCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBhdXRv
IGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9u
LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisKKyAgICAvLyBAZ2Vu
ZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9y
VmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0
b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRl
eHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihw
YXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yUmVzdW1l
TW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworCisgICAg
cmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhw
ZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBl
IGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlv
blBhcnNlTW9kZShtb2RlKSk7CkBAIC0xODEzLDEyICsxODk5LDEwIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAg
ICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0
aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNo
ZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25C
b2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgY2Fj
aGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGlu
ZywgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUgPT0g
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9u
U2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAg
ICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxl
SW5mbyk7CkBAIC0xODMyLDcgKzE5MTYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xleGVyLT5zZXRM
aW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rpb25JbmZv
LmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAgICAgIGlm
IChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVk
SW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
biA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1
bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAtMTg1NCwxNCAr
MTkzOCwzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5j
dGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKLSAgICAK
LSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBl
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0byBwZXJmb3Jt
UGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9u
Qm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2lu
ZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgfTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJl
ZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0
b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rp
b25Cb2R5KCk7CisKKyAgICAgICAgLy8gV2hlbiBhIGdlbmVyYXRvciBoYXMgYSAidXNlIHN0cmlj
dCIgZGlyZWN0aXZlLCBhIGdlbmVyYXRvciBmdW5jdGlvbiB3cmFwcGluZyBpdCBzaG91bGQgYmUg
c3RyaWN0IG1vZGUuCisgICAgICAgIGlmICAoZ2VuZXJhdG9yQm9keVNjb3BlLT5zdHJpY3RNb2Rl
KCkpCisgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7CisKKyAgICAg
ICAgc2VtYW50aWNGYWlsSWZUcnVlKGdlbmVyYXRvckJvZHlTY29wZS0+aGFzRGlyZWN0U3VwZXIo
KSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7
CisgICAgICAgIGlmIChnZW5lcmF0b3JCb2R5U2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9k
IG9mIGEgZGVyaXZlZCBjbGFzcyIpOworCisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlT
Y29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfSBlbHNlCisg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsK
ICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0
aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbklu
Zm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBpZiAoZnVuY3Rpb25TY29w
ZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5m
by5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICB9CkBAIC0xOTI5LDcgKzIwMzIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsK
ICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAg
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2Vu
ZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
TmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBm
dW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24g
c3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0yMDgwLDcgKzIxODMsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRvcikgewogICAgICAgICAg
ICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBwYXJzZU1vZGUg
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgICAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAgICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAncHJvdG90eXBlJyIp
OwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1l
ZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBAIC0yODM2LDYgKzI5MzksNyBAQCBz
dHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBmYWlsSWZUcnVlKG1fZnVuY3Rpb25QYXJzZVBoYXNlID09
IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVz
c2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVMRCkpOwogICAgIFNhdmVQb2lu
dCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBuZXh0KCk7CkBAIC0yODQzLDEz
ICsyOTQ3LDE0IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVnYXRlID0gY29uc3VtZShUSU1F
Uyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUsIGRpdm90U3RhcnQsIGFy
Z3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMzA0MSw3ICszMTQ2LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgSlNUb2tlbkxvY2F0aW9u
IG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3Rh
cnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBt
ZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9k
Iik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8pOwpAQCAtMzI5
NCw3ICszMzk5LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tl
blR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAg
ICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhw
cmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1bmN0aW9uSW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxN2IwZTgxYWVhMWQ4OWM0ZmVj
OTQ0NzU3YzdmNDk1ZWM1MDQ3NzNlLi43MjU5YTVkNDc1NTZmNDA1M2E0MGFhM2VjMzQzNTllOTY3
OTM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3Miw2ICsx
NzIsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNMZXhpY2FsU2NvcGUoZmFsc2Up
CiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkoZmFsc2UpCiAgICAgICAgICwgbV9pc1Zh
bGlkU3RyaWN0TW9kZSh0cnVlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAg
ICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgwKQogICAgIHsK
QEAgLTE5Miw2ICsxOTMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNMZXhpY2Fs
U2NvcGUocmhzLm1faXNMZXhpY2FsU2NvcGUpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRh
cnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5KQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1v
ZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMocmhz
Lm1faGFzQXJndW1lbnRzKQogICAgICAgICAsIG1fbG9vcERlcHRoKHJocy5tX2xvb3BEZXB0aCkK
ICAgICAgICAgLCBtX3N3aXRjaERlcHRoKHJocy5tX3N3aXRjaERlcHRoKQogICAgICAgICAsIG1f
bW9kdWxlU2NvcGVEYXRhKHJocy5tX21vZHVsZVNjb3BlRGF0YSkKQEAgLTI0Niw2ICsyNDgsMTAg
QEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIHNldElzR2VuZXJhdG9yKCk7CiAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOgorICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpOworICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0
aW9uTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAg
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgpAQCAtMjY4LDYgKzI3NCw4IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJl
dHVybiBtX2lzRnVuY3Rpb25Cb3VuZGFyeTsgfQogICAgIGJvb2wgaXNHZW5lcmF0b3IoKSBjb25z
dCB7IHJldHVybiBtX2lzR2VuZXJhdG9yOyB9CiAKKyAgICBib29sIGhhc0FyZ3VtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRzOyB9CisKICAgICB2b2lkIHNldElzTGV4aWNhbFNj
b3BlKCkgCiAgICAgeyAKICAgICAgICAgbV9pc0xleGljYWxTY29wZSA9IHRydWU7CkBAIC00NTAs
MTYgKzQ1OCwyMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgbV91c2VzRXZhbCA9IHRy
dWU7CiAKICAgICAgICAgewotICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5k
ID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5lbmQoKTsKLSAgICAgICAgICAgIGZvciAo
SWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxl
cy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICAgICAgICAgIGlmIChuZXN0
ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSB8fCBuZXN0ZWRTY29w
ZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAgZm9yIChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpbXBsIDogbmVzdGVkU2NvcGUtPm1fdXNl
ZFZhcmlhYmxlcykgeworICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJl
ZFZhcmlhYmxlcy5jb250YWlucyhpbXBsKSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFi
bGVzLmNvbnRhaW5zKGltcGwpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgICAgIC8vICJhcmd1bWVudHMiIHJlZmVyZW5jZSBzaG91bGQgYmUgcmVzb2x2ZWQg
YXQgZnVuY3Rpb24gYm91ZGFyeS4KKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPmlz
RnVuY3Rpb25Cb3VuZGFyeSgpICYmIG5lc3RlZFNjb3BlLT5oYXNBcmd1bWVudHMoKSAmJiBpbXBs
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoKnB0
cik7CisKKyAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKGltcGwpOwogICAgICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgYSBkZWNsYXJlZCB2YXJpYWJsZSB0aGF0IGlzIHVz
ZWQgaW4gYW4gaW5uZXIgc2NvcGUgdG8gYmUgdGhvdWdodCBvZiBhcyBjYXB0dXJlZCBpZgogICAg
ICAgICAgICAgICAgIC8vIHRoYXQgaW5uZXIgc2NvcGUgaXMgYm90aCBhIGxleGljYWwgc2NvcGUg
YW5kIG5vdCBhIGZ1bmN0aW9uLiBPbmx5IGlubmVyIGZ1bmN0aW9ucyBhbmQgImNhdGNoIiAKICAg
ICAgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIGNhbiBjYXVzZSB2YXJpYWJsZXMgdG8gYmUgY2Fw
dHVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzICYm
IChuZXN0ZWRTY29wZS0+bV9pc0Z1bmN0aW9uQm91bmRhcnkgfHwgIW5lc3RlZFNjb3BlLT5tX2lz
TGV4aWNhbFNjb3BlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNhbmRp
ZGF0ZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2Fu
ZGlkYXRlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8g
UHJvcGFnYXRlIGNsb3NlZCB2YXJpYWJsZSBjYW5kaWRhdGVzIGRvd253YXJkcyB3aXRoaW4gdGhl
IHNhbWUgZnVuY3Rpb24uCkBAIC01NTAsMTQgKzU2MiwyMiBAQCBzdHJ1Y3QgU2NvcGUgewogICAg
IHsKICAgICAgICAgbV9pc0Z1bmN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9pc0Z1bmN0aW9uQm91
bmRhcnkgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgIHNl
dElzTGV4aWNhbFNjb3BlKCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSBmYWxzZTsKICAgICB9
CiAKKyAgICB2b2lkIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc2V0
SXNGdW5jdGlvbigpOworICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICB9CisKICAg
ICB2b2lkIHNldElzR2VuZXJhdG9yKCkKICAgICB7CiAgICAgICAgIHNldElzRnVuY3Rpb24oKTsK
ICAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0g
ZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBzZXRJc01vZHVsZSgpCkBAIC01NzksNiArNTk5LDcg
QEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIG1faXNMZXhpY2FsU2NvcGUgOiAxOwogICAgIGJv
b2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9k
ZSA6IDE7CisgICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6IDE7CiAgICAgaW50IG1fbG9vcERlcHRo
OwogICAgIGludCBtX3N3aXRjaERlcHRoOwogCkBAIC02MjcsNyArNjQ4LDcgQEAgY2xhc3MgUGFy
c2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJz
ZU1vZGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBTdXBlckJpbmRpbmcsCiAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsK
ICAgICB+UGFyc2VyKCk7CiAKQEAgLTExNTAsNiArMTE3MSw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7
CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFy
c2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxl
bWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0
aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9y
dGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE5MCw3ICsxMjEyLDcgQEAgY2xhc3MgUGFyc2VyIHsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3Bl
cnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYg
Y29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBpc0dlbmVyYXRvcik7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0
ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1
bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQgPSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZyA9IFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1
bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5
VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJv
ZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWdu
ZWQsIFNvdXJjZVBhcnNlTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJl
ZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlv
bkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9Owog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJp
YWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdElu
aXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGlu
aXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRl
eHQsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlwZSwgYm9vbCYgZm9yTG9vcENvbnN0RG9lc05v
dEhhdmVJbml0aWFsaXplcik7CkBAIC0xMjE1LDYgKzEyMzcsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VG
dW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgU291cmNlUGFy
c2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRy
ZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVp
bGRlcj4mKTsKIApAQCAtMTM0MCw2ICsxMzYzLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1l
bnRzKiBtX3NvdXJjZUVsZW1lbnRzOwogICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKKyAgICBT
dXBlckJpbmRpbmcgbV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0b3JLaW5kIG1fZGVmYXVs
dENvbnN0cnVjdG9yS2luZDsKICAgICBUaGlzVERaTW9kZSBtX3RoaXNURFpNb2RlOwogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgbV92YXJEZWNsYXJhdGlvbnM7CkBAIC0xNDYzLDcgKzE0ODcsNyBA
QCBjbGFzcyBQYXJzZXIgewogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsCisgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3Np
dGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCiAgICAgQ29uc3RydWN0
b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsCiAg
ICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkK
QEAgLTE0NzIsNyArMTQ5Niw3IEBAIGNsYXNzIFBhcnNlciB7CiAKICAgICBBU1NFUlQoIXNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBw
YXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVm
YXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNl
TW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgICAgIGlmIChwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpAQCAtMTQ4NSw3ICsx
NTA5LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVj
dG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExleGVy
PFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJz
ZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICBQYXJzZXI8
TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERa
TW9kZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5w
YXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAocG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUg
PSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEy
OWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEwYzAyOWNiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ3LDYg
KzQ3LDcgQEAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3JtYWxGdW5jdGlv
bk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlvbk1vZGUsCiAg
ICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUsCkBAIC02MSw2
ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToK
QEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOTU1MzZjM2M3
NTY3MjI3MzUxYmM2OTA3MTgyZWQ1M2FiNmM3MTkxYi4uM2UwYzMwZmQxZDI1MTg2MjM1ZTJkYjAz
ODQ0MTRjNjFmODE1N2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKQEAgLTE4MCwxMCArMTgwLDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikg
eyByZXR1cm4gWWllbGRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxk
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVs
ZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkg
eyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50
YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJl
c3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAg
aW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMzg1
LDYgKzM4NSw4IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQoaW50
KSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAK
KyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGlu
dCBtX3RvcEJpbmFyeUV4cHI7CiAgICAgaW50IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUy
NWUwZjU2ZWMwZjY5Y2RjN2NiZWRmMGUuLjJhMjQ0MmZhYTZlZWE4MTgyODQ1ZmZiMTdiMjFhMmI5
OTM4NGNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpn
ZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJv
b3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxS
b290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLAotICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46
OnBhcnNlTW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1RE
Wk1vZGUpOworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNl
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4o
CiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsCiAgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAg
aWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7
CkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0
YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhl
IEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVz
LCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFi
aWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpOb25F
bXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1l
VmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJp
bmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVl
KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4Y2ZlZjg0NjQ5ZDhmMDlj
MmZiMGI5NDg4MTExZTE2OTM2YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2Y2Rj
ODk1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNs
dWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJT
b3VyY2VDb2RlS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTYsNzEgKzU3
LDYgQEAKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAotY2xhc3Mg
U291cmNlQ29kZUtleSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQ
cm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07Ci0KLSAgICBTb3VyY2VDb2Rl
S2V5KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJ
Zk5lZWRlZCkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICAgICAgLCBt
X25hbWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKAotICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhh
c2goKSkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLQot
ICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7
IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVs
bCgpOyB9Ci0KLSAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9u
IGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQotICAgIC8vIHByb3ZpZGVycyBjYWNo
ZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9Ci0KLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAotICAgICAgICAgICAgJiYgbGVuZ3Ro
KCkgPT0gb3RoZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9m
bGFncwotICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAgICAg
JiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNv
dXJjZUNvZGUgbV9zb3VyY2VDb2RlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgdW5zaWduZWQg
bV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtl
eUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtl
eSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
ZmFsc2U7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lz
RW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUo
Y29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtl
eS5pc051bGwoKTsgfQotfTsKLQogc3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgU291cmNl
Q29kZVZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUzNTVk
ODdhM2IzM2IxLi5kZTA3ZjFjNTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJv
cikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rpb24p
IFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhK
U09OKSBcCkBAIC0zMjksNiArMzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwKICAg
ICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAgICBt
YWNybyhnZW5lcmF0b3IpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1hY3Jv
KGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1hY3Jv
KGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkwZjY1
YzI0ZDYzMmI2MjEwODlkZTVjMWJiZDQ5NjRkNDQ5NjQzOTEuLjQ1NmRiNzkwMjAyZGMzOWZkMTdm
ZWMzMWUzY2E0MDQxOWNjZThkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM4IEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6
OkFyaXR5Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9B
CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAg
IC8vIE9ubHkgc2F2ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3ws
IHxzY29wZXwgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJh
bWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRh
dGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3Iu
bmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEp
LmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIEpT
VmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAg
ICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlz
IGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBp
dCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3Rl
cnMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0
UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3Qp
OworICAgIH0KKyAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gcGNbMl0udS5vcGVy
YW5kOworICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsKKyAgICBFTkQoKTsK
K30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOwor
ICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZy
YW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBp
bnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1l
LT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlp
ZWxkKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCkpOworICAgIEVORCgpOworfQorCiBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVH
SU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggMjI2MTg1YzRjN2VhN2NjNmZjN2YzY2M0ZjFmMzdlNjBlYjcyZjE3YS4uZjAwZDg3
MDVkNGU2N2ZlNGQ0MDU5YmRlMTY4ZWU4OGY1N2RmNzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBp
bmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZCom
IGEsIHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9z
dHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xl
YXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2
ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CmluZGV4IGE2MzJjNDhlMDMwYjQxYjMzYjMzZGJhMTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0
MmJjMTJlZTAyMTgzNGE4MmY4MWYwZmM5NzliY2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tT
eW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJv
cikKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogfQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2Rl
PiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAg
JnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpT
dHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQy
MDYwMDY3MjI5YWE0MGFiNDdlOWI0MDUyOTYyMWZlODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29k
ZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAg
ICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJz
ZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCks
IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApAQCAtNTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJz
ZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1O
b2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0
ZjZjMGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li44OGEyNGFkNmNhYjJkNjIwNTIxMDRmMDEz
MDJlZGUwMjJhNDRkNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQy
LDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0
dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1i
b2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0K
ICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJv
d0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0
aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFt
ZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAg
IEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRp
bmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAppbmRleCBkYmU0MmZhNWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5i
MGFiNmJmYzA5Mjk4NzAwOGMyNTVkN2RiNWVhMTRiOTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAt
NzksMjggKzc5LDMwIEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1
bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVy
YXRvcikKIHsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1
cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFs
T2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJl
dHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlz
R2VuZXJhdG9yKTsKIH0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9z
aXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9y
KQogewogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBv
cnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAg
aWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0
aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJv
Z3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdz
LnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygi
e2Z1bmN0aW9uICIsIChpc0dlbmVyYXRvcikgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmlu
ZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJc
bn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChpc0dl
bmVyYXRvcikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykt
PnZpZXcoZXhlYykpOwpAQCAtMTI2LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1
bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
KQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRv
cikKIHsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBh
cmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0
aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywg
U3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIx
YjMwNmZiNGM0MmEwYTY3ZDJlMy4uMjc5NGNkMjBiNzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJm
ZDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaApAQCAtNTYsMTIgKzU2LDEyIEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0
b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
V1RGOjpUZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBj
b25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBj
b25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgYm9vbCBpc0dlbmVyYXRvciA9IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAog
ICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElk
ZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYs
IGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3Qg
V1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNH
ZW5lcmF0b3IgPSBmYWxzZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVl
YzY0N2Q0NmY4YTJlN2ZjZmI4ZDNmMjFkN2FkM2EyODg3YTg0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCww
ICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9y
RnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCisgICAgOiBCYXNl
KHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZD
YWxsZWVSZWdpc3RlcnMobnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVl
UmVnaXN0ZXJzOyArK2kpCisgICAgICAgIHJlZ2lzdGVyQXQoaSkuY2xlYXIoKTsKK30KKworU3Ry
dWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMpCit7
CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAg
ICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyhudW1iZXJPZlJlZ2lzdGVycykpKQorICAg
ICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgIHJlc3VsdC0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJh
dG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlUmVnaXN0ZXJzKQoreworICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgcmVnaXN0ZXJzLgor
ICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFy
YW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVSZWdpc3Rl
cnMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworICAgIGxpdmVDYWxs
ZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIEpT
VmFsdWUgcmF3VmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGluZGV4KSkuanNWYWx1ZSgpOworICAgICAgICAvLyBTaW5jZSBDIHN0YWNrIGNhbiBiZSB1c2Vk
IGZvciBhbnkgcHVycG9zZSwgYW4gaW5jb3JyZWN0IHZhbHVlIGZvciBhIGpzIHZhbHVlIG1heSBl
eGlzdAorICAgICAgICAvLyBpbiBhIG5vbi1pbml0aWFsaXplZCAoYnV0IGFsbG9jYXRlZCkgSlMg
cmVnaXN0ZXIuCisgICAgICAgIC8vCisgICAgICAgIC8vIEZvciBleGFtcGxlLAorICAgICAgICAv
LworICAgICAgICAvLyAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlZ2lzdGVyQSA9IG5ld1RlbXBv
cmFyeSgpOworICAgICAgICAvLyAgICAgLi4uCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRo
ZSBhYm92ZSBjYXNlLCByZWdpc3RlckEgaXMgYWxsb2NhdGVkLiBCdXQgaXRzIGNvbnRlbnQgbWF5
IG5vdCBiZSBjb3JyZWN0IGpzIHZhbHVlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgSlNDZWxs
IHBvaW50aW5nIHRvIHRoZSBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiBtYXkgZXhpc3QuCisgICAg
ICAgIC8vIFBlcmZvcm1pbmcgYSB3cml0ZSBiYXJyaWVyICgmIFNsb3RWaXNpdG9yJ3MgbWFya2lu
Zykgb24gdGhlc2UgaW5jb3JyZWN0IGNlbGxzIGNhdXNlcyBpbnZhbGlkIGRlcmVmZXJlbmNlcy4K
KyAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIHRlc3QgYSBnaXZlbiBjZWxs
IGxpa2UgcG9pbnRlciBpcyB0cnVseSBjZWxsLgorICAgICAgICBpZiAocmF3VmFsdWUuaXNDZWxs
KCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+dm0oKS5oZWFwLmlzTGl2ZUNlbGwocmF3VmFs
dWUuYXNDZWxsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAvLyBOb3RlIHRoYXQgaW52YWxpZCBub24tY2VsbCB2YWx1ZSBtYXkgYmUgc3RvcmVkLiAoZS5n
LiBhIHZhbHVlIHdpdGggYW4gaW52YWxpZCB0YWcgaW4gMzJiaXQgZW52aXJvbm1lbnQpLgorICAg
ICAgICAvLyBCdXQgc2luY2UgdGhleSBhcmUgbm90IHJlY29nbml6ZWQgYXMgYSBjZWxsLCB3cml0
ZSBiYXJyaWVycyAvIG1hcmtpbmcgZG8gbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAg
cmVnaXN0ZXJBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIHJhd1ZhbHVlKTsKKyAgICB9
KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHJl
c3VtZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMg
Y2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAg
bGl2ZUNhbGxlZVJlZ2lzdGVycy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAg
ICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0g
cmVnaXN0ZXJBdChpbmRleCkuZ2V0KCk7CisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLmNsZWFy
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVl
IGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0
aGVtLgorICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnJlZ2lzdGVycygpLCB0
aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZDdjNmJjNGViOWNmMjYyYzc5NWFhNDU4N2M1NTRiMGI5MWExZmNiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2Vu
ZXJhdG9yRnJhbWVfaAorI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xh
c3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1
bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisg
ICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1v
cnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
KworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZ2lz
dGVycygpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZSZWdpc3Rl
cnMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgcmVnaXN0ZXJB
dChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVycygpW2luZGV4XTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUmVnaXN0ZXJzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZSZWdpc3RlcihzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBy
ZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxV
bmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclJl
Z2lzdGVycyh1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycykKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRPZlJlZ2lzdGVycygpICsgbnVtYmVyT2ZSZWdpc3RlcnMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVn
aXN0ZXJzKTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShW
TSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBzaXplX3QgbV9udW1i
ZXJPZkNhbGxlZVJlZ2lzdGVyczsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdjZDNlZDAyNWJlYTkyN2Y2MDUzNmEz
OTliZWRjODM3MTJhMzk2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5j
dGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBj
b25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3Ig
Ki8gdHJ1ZSkpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAg
cmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNv
bnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGlj
OgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVm
NzhkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1
ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJh
eS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNs
dWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3Qg
Q2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGEx
NmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2Vu
ZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAg
bmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBK
U0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5n
KCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5
cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFi
bGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBi
NDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVf
aAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdl
bmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWE2
ZTA5NWMzMmFhZGM1NDQ2YTM1NWQ4MTc1YTk1OWRkNDg0Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpcy5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzX2gKKyNkZWZp
bmUgR2VuZXJhdG9yVGhpc19oCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBodHRwOi8vZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1mdW5jdGlvbmFsbG9jYXRlCisvLyBo
dHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0
LWZ1bmN0aW9uLW9iamVjdHMtY29uc3RydWN0LWFyZ3VtZW50c2xpc3QtbmV3dGFyZ2V0CisvLyBX
aGVuIHRoZSBmdW5jdGlvbiBpcyBhIEdlbmVyYXRvckZ1bmN0aW9uLCBpdHMgW1tDb25zdHJ1Y3Rv
cktpbmRdXSBpcyBhbHdheXMgImRlcml2ZWQiLgorLy8gVGhpcyBtZWFucyB0aGF0IE9yZGluYXJ5
Q2FsbEJpbmRUaGlzIGluIHNlY3Rpb24gOS4yLjIgaXMgbmV2ZXIgZXhlY3V0ZWQgZm9yIEdlbmVy
YXRvckZ1bmN0aW9uLgorLy8gU28sIHdoZW4gd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nLAorLy8K
Ky8vICAgICBmdW5jdGlvbiAqZ2VuKCkKKy8vICAgICB7CisvLyAgICAgICAgeWllbGQgdGhpcwor
Ly8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IGdlbigpOworLy8gICAg
ICAgICAvLyB8dGhpc3wgc2hvdWxkIGJlIGdsb2JhbC4KKy8vICAgICAgICAgZy5uZXh0KCk7Cisv
LyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworLy8g
ICAgICAgICAvLyB8dGhpc3wgaW4gZ2VuIHNob3VsZCBiZSBURFogKGFuZCBpdCB3b24ndCBiZSBm
aWxsZWQpLgorLy8gICAgICAgICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gVGhlIGZvbGxv
d2luZyBmbGFnIG1hbmFnZXMgdGhpcyBzdGF0ZS4gV2hlbiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBj
YWxsZWQgYXMgYSBjb25zdHJ1Y3RvciwgaXQgcmV0dXJuZXMgYSBHZW5lcmF0b3IgdGhhdCBmdW5j
dGlvbiBoYXMgR2VuZXJhdG9yVGhpczo6RW1wdHkgZmxhZy4KKy8vIEluIHRoaXMgY2FzZSwgd2hl
biBhY2Nlc3NpbmcgfHRoaXN8LCBhIFREWiByZWZlcmVuY2UgZXJyb3Igb2NjdXJzLgorZW51bSBj
bGFzcyBHZW5lcmF0b3JUaGlzIDogdW5zaWduZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5
Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAy
ZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRh
MmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyAr
MzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERp
cmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
Y2JjZTAyZDY2MjkwNWUwZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVy
YXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVh
cCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NF
UlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
Z2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24g
PSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxs
b2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5j
dGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNy
ZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzYwODc4MTRhMzY0MzIwNDg1MmMxYTAzNjJlOGVkNWRhNWZiZWYw
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25f
aAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTElu
dERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpT
RnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0
YXRlIDogaW50MzJfdCB7CisgICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAgRXhlY3V0aW5nLAor
ICAgICAgICBJbml0aWFsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1l
TW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJu
TW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9OworCisgICAgY29uc3Qgc3Rh
dGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAg
ICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMg
SlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChn
bG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9u
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Nj
b3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAzNzFlNGVhMDZlMzg2NTVhYzVhNzBiYWFkYWY3NDAyYTc3YmMwZjU5Li43NjIyYmI5MmExOTE1
MTFkODMwNGVhMGIxZDAwYjM4OTg3ZWJjODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVk
ZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNsdWRlICJKU0Rv
bGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4NCw2ICszODgsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RF
UklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVy
YXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwg
dGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
KSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1Jf
VFlQRQogCkBAIC00MjAsNiArNDI1LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0m
IHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikp
KTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAg
ICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CisKKyAgICBtX2dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0g
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0
b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTgxOCw2ICs4Mjgs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
clByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dl
clNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRo
U2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODUwLDYgKzg2Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3Jk
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1l
c3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4
NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3NjcyOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2
ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBl
OworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7
CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTIyOSw2ICsy
MzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5
cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBl
OworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yUHJvdG90eXBl
PiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dp
dGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNl
dCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3By
aXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpA
QCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJvclBy
b3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JQ
cm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9y
UHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNj
b3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiArNTEzLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJl
KiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVn
RXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
KyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4ZDI4YTUwZDk3YTFlMGI3N2I1MDYzYS4u
MzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZjMDZjNTRhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0y
ODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9k
ZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2VDb2RlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3Io
ZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNv
dXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nv
dXJjZUNvZGVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NvdXJjZUNvZGVL
ZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU291cmNl
Q29kZUtleS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb3VyY2VDb2RlS2V5X2gKKyNkZWZpbmUgU291
cmNlQ29kZUtleV9oCisKKyNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU291cmNlQ29kZUtleSB7CitwdWJsaWM6CisgICAgZW51bSBDb2RlVHlwZSB7IEV2
YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CisKKyAgICBT
b3VyY2VDb2RlS2V5KCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVU
eXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJ
Zk5lZWRlZCkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKKyAgICAgICAgLCBt
X25hbWUobmFtZSkKKyAgICAgICAgLCBtX2ZsYWdzKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpIDw8IDMpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikg
fCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKKyAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgp
LT5oYXNoKCkpCisgICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpOyB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9
CisKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0
aCgpOyB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5p
c051bGwoKTsgfQorCisgICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmlu
ZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKKyAgICAvLyBwcm92aWRlcnMg
Y2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgorICAgIFN0cmluZyBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQorCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKKyAgICAgICAgICAgICYmIGxl
bmd0aCgpID09IG90aGVyLmxlbmd0aCgpCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVy
Lm1fZmxhZ3MKKyAgICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKKyAgICAgICAg
ICAgICYmIHN0cmluZygpID09IG90aGVyLnN0cmluZygpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHVuc2ln
bmVkIG1fZmxhZ3M7CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworc3RydWN0IFNvdXJjZUNv
ZGVLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5
JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09
IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZh
bHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNv
ZGVLZXkuaXNOdWxsKCk7IH0KK307CisKK30KKworI2VuZGlmIC8vIFNvdXJjZUNvZGVLZXlfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUxMzVmNDBkMTBkNmYwMDIyNjRk
Yjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0
MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAj
aW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAgc3RhdGlj
IGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxv
Y2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBl
VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2Vw
dGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQzMTk0MDg5MDA2YmYzZTE3ODE5
M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlmMjk4ZTBi
OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQsNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlv
blJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0
YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE5LDcgKzcxOSw3IEBACiAtIHBh
dGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0Fy
cmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJh
eS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3RhbmNlc19vZl9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcyNyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0
aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1
bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXku
ZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0
aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1Myw3ICs3NTMsNyBAQAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9k
ZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19p
dGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMsNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29w
c19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xv
b3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMu
anMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3Bl
cnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlw
ZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193
aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9u
X2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFu
ZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0
aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0
b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNw
ZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9v
cGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhf
Z2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRo
X2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9h
cnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMu
anMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEz
MmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5
cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1
bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0g
bWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1i
b2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJh
dG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNo
aWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9k
c1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFi
bGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4g
aXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAog
dmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1
MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1
NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2Yg
Z2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlv
biBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhv
ZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0
ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9
IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgp
LCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3Jl
dHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0g
e307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJh
dG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBp
dGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlh
ZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZh
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpA
QCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3Zh
ciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIs
IG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wg
IT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9Cith
cnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07Cisg
IH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sn
dGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9y
XSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQor
CiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4
IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1
Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdfdmlh
X3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQg
QEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRo
aXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgewor
bWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9u
JyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsK
K3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFs
dWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVy
bic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9Owor
dmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24o
KXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRl
c3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRz
LWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2FlZThkZjhi
Y2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBAIC0wLDAg
KzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVkLmxlbmd0
aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcHJpbnQoSlNPTi5zdHJpbmdpZnko
YWN0dWFsKSk7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQorfQorCisK
K2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisK
K2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3No
b3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
NjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMu
anMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
Cit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAx
LCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIs
IGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9
IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBn
MigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0
MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFy
IGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rp
b24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWll
bGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1g
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwg
YiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5
aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOwor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVj
ZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2Rz
LXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkg
eworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24i
KTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4
RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0K
K30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2Nv
bnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkK
KyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAK
K2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQy
OworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFm
NWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhv
ZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworY2xhc3MgQSB7CisgICAgKmdlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlz
OworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAg
c3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAg
eWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsK
K30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlz
IG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sK
KyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQor
eworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNH
ZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQor
Cit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52
YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZh
cmlhYmxlLmApOworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhp
cycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAg
IH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3Mg
QyB7CisgICAgKmdlbmVyYXRvcigpCisgICAgeworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7
CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVy
cm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2Vu
ZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMp
OworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0g
KG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwu
R2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJl
KGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5j
dGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9
IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJz
dC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4
OThlNTkwOWFiYWYzODViZjIwODk5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwu
anMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93
IG5ldyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFi
bGUoKTsKK30KKwordmFyIGcgPSBnZW4oKTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
CisKKwordmFyIGdsb2JhbCA9IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5l
dyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0
KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0g
e307CisgICAgICAgIGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAg
ICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7
CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAg
ICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAg
ICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlz
T2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlv
biB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5j
dGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwor
dmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgewor
ICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9Citp
ZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1u
ZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUz
NmVhYjhkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3Zh
ciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFy
IGcyID0gbmV3IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13
aXRoLXN1cGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3Itd2l0aC1zdXBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgz
YmY4ZDZjODk3N2JiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBz
aG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxp
ZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9
CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAg
ICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBh
LmdlbigpLm5leHQoKTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQg
aW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAg
ICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEg
PSBuZXcgQSgpOworICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAg
ICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVu
ZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIw
ZWQ1NjY4OGE2YTI5OGMuLjk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0
VmVjdG9yIHsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAg
ICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIG4gPSBhcnJheUxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbjsgKytpKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266059</attachid>
            <date>2015-11-22 11:32:35 -0800</date>
            <delta_ts>2015-11-22 11:40:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123043219.patch</filename>
            <type>text/plain</type>
            <size>314855</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi4zYjZiMjM3OGRiNTM3ZTI1
OTU1OGQ5NjdjY2ViNWJiMzgxYmQ5NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNzU1IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisJCQlodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAgICAgICAgVG8g
ZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5nIGRlc2lnbi4K
KworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZlL3Jlc3VtZSBw
b2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3JpbmcgaW5zdHJ1Y3Rp
b24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0gdG8ganVtcCB0
byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50cnkgcG9pbnQg
dG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2VzIGlubGluaW5n
IGVhc3kuCisJCVRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBmb2xsb3dpbmcuCisKKwkJ
CWZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdl
bmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKwkJCXsKKwkJCQlzd2l0Y2ggKEBn
ZW5lcmF0b3JTdGF0ZSkgeworCQkJCWNhc2UgQ29tcGxldGVkOgorCQkJCQlvcF9yZXN1bWUoKTsK
KwkJCQkJcmV0dXJuIC4uLjsKKworCQkJCWNhc2UgRXhlY3V0aW5nOgorCQkJCQlvcF9yZXN1bWUo
KTsKKwkJCQkJdGhyb3cgLi4uOworCisJCQkJdHJ5IHsKKwkJCQkJY2FzZSBJbml0aWFsOgorCQkJ
CQkJLi4uCisJCQkJCQlpbml0aWFsIHNlcXVlbmNlLgorCQkJCQkJLi4uCisKKworCQkJCQkJb3Bf
c2F2ZShZaWVsZF8wKTsKKwkJCQkJCXJldHVybiAuLi47CisKKwkJCQkJY2FzZSBZaWVsZF8wOgor
CQkJCQkJb3BfcmVzdW1lKCk7CisJCQkJCQlpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhy
b3cpCisJCQkJCQkJLi4uCisJCQkJCQllbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBS
ZXR1cm4pCisJCQkJCQkJLi4uCisJCQkJCQkuLi4KKwkJCQkJCXNlbnRWYWx1ZSA9IEBnZW5lcmF0
b3JWYWx1ZTsKKwkJCQkJCS4uLgorCQkJCQkJb3Bfc2F2ZShZaWVsZF8xKTsKKwkJCQkJCXJldHVy
biAuLi47CisKKwkJCQkJY2FzZSBZaWVsZF8xOgorCQkJCQkJb3BfcmVzdW1lKCk7CisJCQkJCQlp
ZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cpCisJCQkJCQkJLi4uCisJCQkJCQllbHNl
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4pCisJCQkJCQkJLi4uCisJCQkJCQku
Li4KKwkJCQkJCXNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1ZTsKKwkJCQkJCS4uLgorCisJCQkJ
CS4uLgorCQkJCX0gZmluYWxseSB7CisJCQkJCS4uLiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKwkJ
CQl9CisJCQl9CisKKwkJCVJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorCQkJVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUg
cmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1l
IGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2Vu
ZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0
ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFp
bnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5n
IHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNh
dmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUg
dXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICAz
LiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVmb3JlIGdlbmVy
YXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHNob3VsZCBi
ZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZvciBleGFtcGxl
LAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAgICAgICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0gZ2VuKDIwKTsg
IC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBlbmFibGUgdGhp
cywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwgYW5kIGFmdGVy
IHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAgICAgICBUaGlz
IGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4KKworICAgICAg
ICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6Cisg
ICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAg
IChuZXh0KToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAg
ICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2Rl
Q2FjaGU6OnRyeUdldCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgor
ICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjppc0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4
ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRo
aXMpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6Om51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtl
ZENvZGVCbG9ja0Zvcik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rp
b25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVs
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25D
b21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpcyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6ZW1pdFN1cGVyQmFzZUZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6WWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkhlYXA6OmlzTGl2ZUNlbGwpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5l
d0Z1bmNDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6cHJvcGFn
YXRlQXJndW1lbnRzVXNlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZ
aWVsZEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQ
cm9wZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VN
b2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJ
c0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6Omlz
RnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6Cisg
ICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRh
eENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRh
YmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAg
ICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3Ip
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Okdl
bmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZWdp
c3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXJz
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMpOgor
ICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3Rv
dHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJh
dG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9Tb3VyY2VDb2Rl
S2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxs
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAg
IChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6Cisg
ICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChp
dGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAg
ICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5u
ZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2Ny
ZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3Iu
bmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19j
cmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1h
cmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoZzEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1z
eW50YXguanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3lu
dGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRl
c3RTeW50YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Ep
OgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAg
KHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFs
LXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhy
b3cpOgorICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdl
bmVyYXRvcik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5l
eHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0
LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToK
KyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgt
bmV3LXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4p
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJv
dG90eXBlLmdlbik6CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6Cisg
ICAgICAgIChBKToKKworICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgIChw
YXJzZVNjcmlwdCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ1
aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAobmV4dCk6Cisg
ICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1DYWxsZWVSZWdpc3RlcnMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgICogYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjp0cnlH
ZXQpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAgICAgKEpT
Qzo6RXZhbENvZGVDYWNoZTo6aXNDYWNoZWFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5m
byk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpnZW5lcmF0b3JUaGlzKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6
aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1iZXJP
ZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVDYWxsZWVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OmVtaXRT
dXBlckJhc2VGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjpp
c0xpdmVDZWxsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjppc0F0b20pOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZl
Q2VsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpldmFsKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5j
X2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0
aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNs
YXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRo
b2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29s
bGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFy
c2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlND
Ojppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2Fj
aGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVu
Y3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNF
bXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5
bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdD
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZWdpc3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNl
dE9mUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JS
ZWdpc3RlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6Okdl
bmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rp
b246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9u
OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5u
ZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2Ny
ZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0
KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAg
ICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxl
T2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAg
ICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJs
ZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJv
bS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFk
ZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgor
ICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29j
b2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAo
dGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
bGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHBy
b3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcu
bmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6Cisg
ICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVh
Y2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6
CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToK
KwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5
NGMwNmY0ZmFiMDlmZjAzYTY0MTc4MGUzZjI2YWMzYWQ4ZC4uMTdiN2UxNTdmMGM2YzY5YzdjNDg2
NWFhMDA3NjczMjJhZDY3MWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJs
ZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rv
cjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIw
MTUtMTEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIEFTU0VSVElPTiBGQUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4g
V2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU0NzQ2OThkY2EwYmFi
ZWY3NDI3ZGQzMjEwYjFjNjU2MmJkNzU0NDguLmZhODIzNjA4NmE4YWYxZWZhNzc5ZWNkZTYzZDY2
NjI5Njc3ODQxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJs
ZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIE1pbmlCcm93c2VyIGhvdyB0byBlbmFibGUg
dGhlIG1vY2sgY29udGVudCBmaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzYjk5ZjQ4ODE5MWNh
MjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi4wNjFlYzBhMDBkZjU3Y2I1ZTEzNDgzMWNlOTQ2
NTk5NmQ3NjVjOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xICsxLDEwIEBACisyMDE1LTExLTIy
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZd
IEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQg
ZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwog
PT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBj
ZTYzNzg4NzI2Mjg0YzBiYTNmMTVjOGEzYjU5Y2MxZjdiMTYwZDNjLi5lOGE5YmVjMjdiNjg3Yzgz
YjhhYzUzNzIwNDU3YmFlOTQxMzJjNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0
b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorCiAyMDE1LTExLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBBZGQgbWlzc2luZyBpbnNwZWN0b3IgZmlsZSB0
byBHVEsrIGNvbXBpbGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVm
LmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJlOTczYzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3
NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5MzdkMzA5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBw
YXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3Im
IGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAg
ICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0
cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3NzE5ZDM2NDc1YjZiNjExZTgyOTYuLmQ3MDdlMzNi
ZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVjY2Q1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJ
TUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAg
IHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAg
IHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAg
cnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0
Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAg
ICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFk
Li4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFC
TEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZ
TlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7
Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFC
TEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMmY2NWRiNTVh
MWVlZDM2NDljZmUzM2Q3OGI5MjZjNjI1MTNhOWY2OC4uZmRlNTdlOTM4ZGJkNGZhMmRiZTVjMTRk
N2JjOGZiZTExNTE3MDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTg0LDYgKzg0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9
IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMg
XAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dlbmVyYXRvci5Qcm90b3R5cGUuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIwLDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAog
ICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBc
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDNlN2Y5OTRlMzA3
YzQ2ZDAzYjc0Yjk3OWY1MWJlNjU2ZTU5YWMwNDMuLjE4OTExOTQ3OTFmYjJkMDc1ZGJhZjdiMTU4
N2ZmYzgzZTYzYmM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpA
QCAtNzU2LDYgKzc1NiwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdldHRlclNldHRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk1LDYgKzc5OSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGVNYXRoLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ1LDYgKzk1MCw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVQ
cm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRl
ckRldGVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiIC8+CkBAIC0xNTE1LDYgKzE1MjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxT
b3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
Q29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVBy
b3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJv
dmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBAIC0xNjAxLDYgKzE2MDgsMTEgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiAr
MTY3Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFy
cmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFy
cmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24u
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggYTZkM2ZmMDBlMjUwM2FjYmMzNjc5MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMjdj
YzM2ZGJiMTQ5MDU0OGQyODg1MWQzMDNhOTk3NzY5ZGEwMmNmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjY2LDYgKzY2NiwxOCBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUu
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYg
Kzc1OSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24u
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2
ICsyNjI3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2Rl
LmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAg
PEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFy
c2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yODEzLDYgKzI4MzEsMjEgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JUaGlzLmgiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgsNiArMjk1MSw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICszMzE4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJvclByb3RvdHlwZS5sdXQuaCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGVkNzQ5MTZjY2NjMjZlZDNkODY0ZGJkNTBmMGQ5MTYzMzkzMGFlMTMuLjI3ZGU0NTk2
YTRiYmE5OWI0Y2I2YzYzNTBiNjBkNzJiMmQ3ZTI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkgQEAKIAkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5
RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAw
MTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkx
OTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBT
b3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07CisJCTcwQjc5MTkzMUMw
MjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsg
fTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3
OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5ODFD
MDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICov
OyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEQx
QzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNF
MDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBE
QzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwODFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3Nl
bWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBE
RTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLzsgfTsKQEAgLTE5NjIs
OCArMTk3NSw4IEBACiAJCUZFMEQ0QTA5MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0
V2l0aEZpbmFsaXplclRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRo
RmluYWxpemVyVGVzdC5jcHAgKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBK
SVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdG
NTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJRkUxODdBMDExQkZC
RTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklU
TXVsR2VuZXJhdG9yLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAz
OEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAo
KTsgfTsgfTsKKwkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlG
RjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUxODdB
MDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8q
IEpJVE11bEdlbmVyYXRvci5oICovOyB9OwogCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyog
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUz
RkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsg
fTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAw
REYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAtMzI2Nyw2ICszMjgwLDIwIEBACiAJ
CTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2
MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4
ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yVGhpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAv
KiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJj
ZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRF
QzAwMjQ4MUUyIC8qIEdlbmVyYXRvci5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0b3IucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5
RDkgLyogTExJbnRBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
TEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDc3LDYgKzUx
MDQsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3Iu
bHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBl
Lmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRl
Y29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMDUsNiArNTIzMyw3IEBA
CiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkw
RjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2
RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0
NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEw
MDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAw
QTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovLApAQCAtNTMzNCw2ICs1MzYzLDE1IEBA
CiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8s
CiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICov
LAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8s
CisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywK
KwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJ
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThB
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4
QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovLAogCQkJCTBGRTA1MDExMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5
MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUw
MTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCAqLywKQEAgLTU0MzMsNiArNTQ3
MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICov
LAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJ
QTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJ
NzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAor
CQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8s
CiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJCQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY1NDEs
NiArNjU4MSw3IEBACiAJCQkJQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1l
cy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAq
LywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMgLyogRnVuY3Rpb24ucHJvdG90eXBlLmpz
ICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBl
LmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5QTMwMDlEQjFFRiAvKiBHbG9iYWxPYmplY3QuanMg
Ki8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCkBAIC02OTUyLDYgKzY5OTMsNyBAQAogCQkJCUE3
Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZH
Tm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUg
LyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAw
QjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTcwMDEsNiArNzA0Myw3
IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
RjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJBMTdENTFGNTcwMENB
MkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03MjIxLDYgKzcyNjQsNyBAQAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAv
KiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03MjQ3LDYgKzcyOTEsNyBAQAogCQkJCTcwMTEzRDRDMUE4REIw
OTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
REMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE0MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVy
cyAqLywKQEAgLTczOTAsNiArNzQzNSw3IEBACiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTND
IC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdF
RTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3
QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NDI2LDYgKzc0NzIsNyBAQAogCQkJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBK
SVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4
NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQzMTczODE0NkJBQzY5
MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5
NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU1MUI3OTRGOEEwMEVEQUY3MSAvKiBMaXZlT2Jq
ZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzOTEzNTYxQjc5NEY4RjAwRURBRjcxIC8q
IExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTgsNiArNzY0NSw3IEBACiAJ
CQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZh
bHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1
ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2
RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzYzMCw2ICs3Njc4LDcgQEAKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0
NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIzODc4RTFCRkJD
NDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQy
RTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBC
NzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCBpbiBIZWFkZXJzICovLApAQCAtODY0Nyw2ICs4Njk2LDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTlCMUMwMjRB
NDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTg2NzMsNiArODcyMyw3IEBACiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFC
RTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRU
aHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8q
IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg4MTAsNiArODg2MSw3IEBACiAJCQkJMTQyRDZGMDgxMzUzOUEyODAw
QjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJGM0RBMTM5
RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJE
NkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTU2LDYgKzkwMDgsNyBAQAog
CQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwu
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZf
c3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIx
NThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk2NCw2ICs5MDE3LDcgQEAK
IAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVX
cml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAw
RDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0
QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2
OGJkYzBhMy4uNDhlZjdmZjNhOGViYTZiNDU4OTY5MjJjMTdkNjRiMTA1MTRjOTlkZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0
cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwK
KyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKICAgICAgICAgJnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXBy
b2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAg
IH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
JnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZh
cmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShz
b3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZt
LCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVj
dXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzEwYjI4OGIyMWY3ZjM3NzlmMjNhZTli
ZjJkMTVmM2E5YzMwODlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBu
ZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5l
cmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRv
clN0YXRlLCB2YWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSAqLyAwKTsK
K30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRo
aXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6
UmV0dXJuTW9kZSAqLyAxKTsKK30KKworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRo
aXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCBleGNlcHRpb24s
IC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSAqLyAyKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAyOTkwZmFl
MzU0ODk3OWZlYzdjYTE4NjY5MDkxYmIwNWUyYWM2MmU4Li41ZTZkNTlkZjEyN2QyYmU3ZDJkMTMy
Y2QzMzBmM2E3YjhiZjI3Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgi
IDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIg
OiA5IH0sCkBAIC0xMjksNyArMTMxLDkgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rv
X2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAotICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfQorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYTYx
MzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2Njg0NS4uMzc0MzZjMDE1NjU0OWU5Zjdj
MDFkYzQxYTAyZWUzZGQ4YjVhZmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDggKzcwLDkgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAgICAgY2FzZSBvcF9q
bmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6IAotICAgIGNhc2Ug
b3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6
CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoKICAgICBjYXNl
IG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Miw2ICsxNTQsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBv
cF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7
CkBAIC0yMzMsNiArMjM2LDE0IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxh
c3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX3NhdmU6IHsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgdmVjdG9y
ID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9j
YWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjU1LDYgKzI2Niw3IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgog
ICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAg
Y2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAg
ICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzI3LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBj
YXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczoKQEAgLTM5MCw3ICs0MDQsMTUgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5tX251bVZhcnM7IGktLTspCiAg
ICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9
IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRlZjk5ZWUuLjNjMTJk
YjhhNzZlMzQ4Yjk3NGIwN2E2NDI4M2I5MjM5ZWVlMWRlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjk0LDYgKzEyOTQsMTQgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgp
LCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CkBAIC0xMzExLDYgKzEzMTksMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNh
bGxMaW5rSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYgKzE1MTUsMjAgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAg
ICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUi
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0
b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQg
Z2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgbGl2ZUNhbGxl
ZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSwg
bGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTcyMCw2ICsxNzUwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBt
X3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3Rh
bnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhl
ci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CiAg
ICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTE4NzUs
NiArMTkwNiwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIGRl
c3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
TGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSkgeworICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5ncm93KGNvdW50KTsKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2ldID0gdW5saW5rZWRDb2RlQmxvY2st
PmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGkpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gQWxsb2NhdGUgbWV0YWRhdGEgYnVmZmVycyBmb3IgdGhlIGJ5dGVjb2RlCkBAIC0zMDQ5LDYg
KzMwODYsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtN
b2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291
bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYzFkZjE4N2Mx
MjIwZDJmN2YwMzI0YTJkMjVmOWI4M2MwNTJkODJlYy4uMWEwYjk4ZjBjZGIyYzE1ZDYwMDJhZmM0
OWE0MmFkYmEwM2JkYjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0x
NDEsNiArMTQyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgaW50
IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KICAgICB2
b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsKIAorICAgIGludCBudW1DYWxsZWVS
ZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZVJlZ2lzdGVyczsgfQorCiAgICAg
aW50KiBhZGRyZXNzT2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gJm1fbnVtUGFyYW1ldGVyczsg
fQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKTsgfQogCkBAIC02NTQs
NiArNjU3LDEwIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmlu
Z0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQo
U3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRh
YmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKKyAg
ICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgorICAgIGludDMyX3Qg
YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFzdEJpdFZlY3RvciB2ZWN0b3IpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3Rl
cnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1f
cmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZFtpbmRleF07IH0KKwogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNo
ZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTkwMCw2ICs5MDcsOCBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJs
ZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBt
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+
IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisKICAgICAgICAgRXZhbENvZGVDYWNoZSBt
X2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdkNGVhZjQzODU4YzA2
Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4YmVkYjA3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZh
bEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBl
dmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdl
dChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgp
KS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVh
YmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVL
ZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZh
bFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2Fj
aGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0
cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29w
ZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFy
aWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5k
ZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNv
dXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9
IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0
LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZh
bEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENv
bnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hl
RW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwo
KSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4
ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQs
IGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmll
cykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAg
ICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCks
IFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAg
ICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhl
Y3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAg
ICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIHx8IHNjb3BlLT5pc0Z1
bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCkgfHwgc2NvcGUtPmlzVmFyU2NvcGUoKTsKICAgICAgICAg
fQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBj
b25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewog
ICAgICAgICAgICAgLy8gSWYgZXZhbCgpIGlzIGNhbGxlZCBhbmQgaXQgaGFzIGFjY2VzcyB0byBh
IGxleGljYWwgc2NvcGUsIHdlIGNhbid0IHNvdW5kbHkgY2FjaGUgaXQuCiAgICAgICAgICAgICAv
LyBJZiB0aGUgZXZhbCgpIG9ubHkgaGFzIGFjY2VzcyB0byB0aGUgInZhciIgc2NvcGUsIHRoZW4g
d2UgY2FuIGNhY2hlIGl0LgogICAgICAgICAgICAgcmV0dXJuICFpblN0cmljdENvbnRleHQgCi0g
ICAgICAgICAgICAgICAgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IE9wdGlvbnM6Om1heGltdW1F
dmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkgCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nh
c3Q8c2l6ZV90PihldmFsU291cmNlLmxlbmd0aCgpKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2Fj
aGVhYmxlU291cmNlTGVuZ3RoKCkKICAgICAgICAgICAgICAgICAmJiBpc0NhY2hlYWJsZVNjb3Bl
KHNjb3BlKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heENhY2hlRW50
cmllcyA9IDY0OwogCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4+IEV2YWxDYWNoZU1hcDsKKyAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPFNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4s
IFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cz4gRXZhbENhY2hlTWFw
OwogICAgICAgICBFdmFsQ2FjaGVNYXAgbV9jYWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5
ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQuLjM1YmY3ZGZiNTlhYTZmOTg5YTkzNDU2
OTBjNjk4YzZjYzZkODIyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwyMSArMjYsMjggQEAKICNpZm5kZWYgRXhlY3V0YWJs
ZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxlSW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JU
aGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8v
IEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENv
ZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBF
eGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBp
c1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisg
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXMgZ2VuZXJh
dG9yVGhpcywgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAg
ICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0
cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAg
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgLCBt
X2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5n
KSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpOworICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1cGVyQmluZGluZykpOworICAgICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSk7CiAgICAgfQogCiAgICAgYm9v
bCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsgfQpA
QCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0Nv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
KyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1f
c3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNB
Y3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7
CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25z
dHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAg
dW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9y
S2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2ln
bmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1
ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjNjMzE5ZDA2ZTM5OTdlZGVmM2QzMjc4N2I5YjkzNzJm
ZmUyNzFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjUsMTAgKzY1LDEyIEBAIFVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlw
ZSBjb2RlCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVj
dG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0g
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9n
ZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmdlbmVyYXRvclRoaXMoKSkp
CisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJp
bmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAg
ICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1v
ZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAg
ICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGZhNTE0YzE1NmE3Y2I3Y2VmNzRh
OWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmUxYjA5NWI2YWQ2NTJlMDA4N2Q5YTUzMjcxNzU4MTgwY2Y2
NzY4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNp
bmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5m
by5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5o
IgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTQxLDYg
KzQyLDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsxMTgsNyBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAg
IGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2Nv
cGVDaGFpbjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlz
KTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAgdm9pZCBzaHJp
bmtUb0ZpdCgpCiAgICAgewpAQCAtMjIzLDYgKzIyNyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50
QnVmZmVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnMuc2hyaW5rVG9GaXQoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTI0NCw2ICsyNDksMTEgQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgYWRk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
bGFzdCgpOyB9CiAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVE
YXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAgIC8vIExp
dmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgc2l6ZV90IG51bWJlck9m
TGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgOiAwOyB9Cisg
ICAgaW50MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChGYXN0Qml0VmVjdG9yIHZl
Y3RvcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rvcik7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSAtIDE7IH0KKyAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnQgaW5kZXgpIHsgQVNTRVJU
KG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZFtpbmRleF07IH0KKwogICAgIHVuc2lnbmVkIGFkZEZ1bmN0aW9uRGVjbChVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBtX2Z1
bmN0aW9uRGVjbHMuc2l6ZSgpOwpAQCAtMzg3LDEyICszOTcsMTQgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpcyA6IDE7CisgICAgdW5zaWdu
ZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAg
dW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAKKyAgICBT
b3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7
CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApAQCAtNDM2LDYgKzQ0OCw4IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAgICAg
ICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZDsKKwog
ICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVz
c2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
aW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uZGM2ZDg2NWY4
MjM1NzEwNmRlZjdkNGNhNTUzYjI5ZDc1MDdmYjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCkBAIC01MCwxMyArNTAsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWIKIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJv
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rp
b25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7
CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1
bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGVycm9yLCBudWxscHRyKTsKKyAgICAgICAg
JnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJy
b3IsIG51bGxwdHIpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJy
b3IuaXNWYWxpZCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRh
YmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJl
c3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29k
ZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBm
dW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwg
ZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbikpOworICAgICAg
ICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51
c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxl
LT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpcygpLCBleGVjdXRh
YmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAg
aWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVy
YXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQog
ICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQog
ICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3Rv
cktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAg
ICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93
RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKQorICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKIHsKICAgICBB
U1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNv
bnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKTsKQEAgLTE4MCw3ICsxODEsNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2Rl
KAogCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKLSAgICBE
ZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
ciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0
aW9uS2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CkBAIC0xOTYsNyArMTk3LDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNv
dXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAg
ICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBlcnJvciwgaXNBcnJvd0Z1bmN0aW9uKTsK
KyAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7CiAgICAgCiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGQ4
ZTgyMjkzOTBlNTc3Y2I0ODBmYjBlOTI5M2Y0MWJhNDJkOWMxZjguLjhiODI3MWE2YzNmNmNjNWQy
MTlkNDY5YzEzZGU1NjNmM2IzZjJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmls
aXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvclRoaXMuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VP
dmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0
aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3Zl
cnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2Vu
ZXJhdG9yVGhpcywgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwogICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAg
LTgyLDYgKzgzLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2Rl
KTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAg
IEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9yVGhpcyk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1
cGVyQmluZGluZyk7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNp
Z25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRC
b2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk4LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9y
JiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3Rh
dGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDEw
ICsxMjgsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0QWJpbGl0
eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7
IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHks
IFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1l
bnQmKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxp
bmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1OCw3ICsx
NjAsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0QWJpbGl0eTogMTsKICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAx
OyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7Cisg
ICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmlu
ZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggYjkzNzBjOGQyODRhMzg0ZjIxZTBlNzg5MjY4NTQ1YzkyYjE5
ODIzYi4uM2NmMGI3YWZhZmVmOWU1ODZkZTAwNmFjZWQyYzg3OTczODJlYjg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCkBAIC0yMDEsNyArMjAyLDEwIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3Jl
IGFuZCBhZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QKICAgICAvLyBjb21wYXRpYmxlIHdpdGgg
dGFpbCBjYWxscyAod2UgaGF2ZSBubyB3YXkgb2YgZW1pdHRpbmcgb3BfZGlkX2NhbGwpLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKLSAgICAs
IG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0
b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNT
dHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcykKKyAgICAvLworICAgIC8v
IEluIGEgY29udGV4dCBvZiBhIGdlbmVyYXRvciwgYWxsIHRoZSBjYWxscyBjYW5ub3QgYmUgdGFp
bCBjYWxscyBiZWNhdXNlIGFsbCB0aGUgcmVzdWx0cyB3aWxsIGJlIHdyYXBwZWQgYXMgYW4gaXRl
cmF0b3IgcmVzdWx0LgorICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWlzaW50YWlscG9zaXRpb24KKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0
aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hv
dWxkRW1pdFByb2ZpbGVIb29rcyAmJiBwYXJzZU1vZGUoKSAhPSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5r
VGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0
cjsKQEAgLTIyNyw5ICsyMzEsMzMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAg
fQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBh
cnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hv
dWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsK
ICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVn
SG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMg
PSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7
CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVu
dHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5j
dGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYgbmVlZHNB
cmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3Vt
ZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1
bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJh
dG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAgICAvLyBU
byB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRz
IG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20g
YSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwg
YiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJldHVybiB7
CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAgICAgICBh
cmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdl
bidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAgICAgIC8v
ICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9CisgICAg
ICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlm
IChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFy
RGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAKQEAgLTI1
NCwxNCArMjgyLDQ1IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6
OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsK
KworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJh
dG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0
YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgZW1p
dE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fcGFyYW1ldGVyc1sxXSk7CisgICAgICAgIGlm
IChnZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCisgICAgICAgICAgICBl
bWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdp
dGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhl
IGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBX
aGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJv
bG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBw
b2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0
IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAg
Ly8gQ29tcGxldGVkIHN0YXRlLgorICAgICAgICAvLyBXZSBqdW1wIHRvIHRoZSBtX2dlbmVyYXRv
ckNvbXBsZXRlZExhYmVsIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgY2Fubm90IHVzZSBhbnkgdGVt
cG9yYXJ5IHJlZ2lzdGVycyBoZXJlLgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgp
OworICAgICAgICBtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgZW1pdEp1bXAobV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbC5nZXQoKSk7CisKKyAgICAgICAg
Ly8gRXhlY3V0aW5nIHN0YXRlLgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwor
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKwor
ICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJl
bCgpOworICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOworICAg
IH0KKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VN
b2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNE
eW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNF
dmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rp
b25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsK
ICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rp
b25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rp
b25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAg
ICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8g
V2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRl
ZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMzMCw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Tm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4
aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAg
Ly8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1l
dGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3Ry
dWN0dXJpbmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6
ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVy
LnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYg
KHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9yZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRp
Y19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8g
RmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAg
ICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0
aW9uTm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUyMiwzNSBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIg
PSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKKyAg
ICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRo
aXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBtX2dlbmVy
YXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9fdGhp
cyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAg
IGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChr
aWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBlbWl0TW92ZSht
X2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGVtaXRDcmVh
dGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhp
c3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBlbWl0
TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7
CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0
ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NjYsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0gICAg
ICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMg
dG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1
cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTc5OSw2ICs4NzIsMjIgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAg
ICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlh
bGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8v
IE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRl
cnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0cnVj
dHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUo
KSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rlci5z
ZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlmIChw
YXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNf
Y2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3Rlcik7CkBAIC04NTUsNiArOTQ0LDIxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdUZW1wb3JhcnkoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0Zhc3RC
aXRWZWN0b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVDYWxsZWVSZWdpc3RlcnMoKQoreworICAg
IHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgRmFzdEJpdFZlY3RvciB2ZWN0b3I7CisgICAg
dmVjdG9yLnJlc2l6ZShtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpOworICAgIHNpemVfdCBpID0g
MDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1fY2FsbGVlUmVnaXN0ZXJzKSB7
CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAgIHZlY3Rvci5zZXQoaSk7
CisgICAgICAgICsraTsKKyAgICB9CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKworCiBMYWJlbFNj
b3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUg
dHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSkKIHsKICAgICAvLyBSZWNsYWltIGZyZWUgbGFi
ZWwgc2NvcGVzLgpAQCAtMjMxMiwxMiArMjQxNiwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3RlcklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9z
dGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwg
YmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3Qt
PmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3Bf
Y3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIu
aW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRl
eCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpA
QCAtMjQ3MSwyMCArMjU3NSw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJu
IGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAg
ICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVu
Y3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwg
dW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewog
ICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4cCk7CkBAIC0yNDkzLDEzICsyNTgzLDI1IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRz
dCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNF
eHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1
bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVu
Y19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVu
c2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24o
ZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOwor
ICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25l
d19nZW5lcmF0b3JfZnVuY19leHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBv
cF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0
OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShv
cGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0y
NTEyLDE3ICsyNjE0LDE4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihk
c3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0
YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1
Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAg
ICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwg
Z2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQogICAgICAgICBlbWl0VERa
Q2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihk
c3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1NDAs
NiArMjY0MywxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWdu
ZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5j
dGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVy
YXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
RXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJn
dW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0
dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NjYsNiArMzg4Miwy
NCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25z
dCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9y
LCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3Vt
ZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50
cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4
dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgp
LCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNP
YmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBl
bWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30K
Kwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCog
aXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJl
ZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODQyLDQgKzM5NzYsMjQ0IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklE
KiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sK
KyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRl
cmF0b3JSZXN1bHQobnVsbHB0ciwgYXJndW1lbnQsIGZhbHNlKTsKKyAgICBpbnQzMl90IGxpdmVD
YWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOwor
ICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpH
ZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25k
aXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGVtaXROZXdJdGVyYXRv
clJlc3VsdChudWxscHRyLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCksIHRydWUpOworICAgICAg
ICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9
IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAg
ICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAg
ICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZW1pdFJl
dHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAg
ZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJl
bC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2
aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHBy
b3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92ZShh
cmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVy
YXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAg
ICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgp
OworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisg
ICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJl
ZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJl
bChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgdmFs
dWUuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdp
c3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChs
aXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2
ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVn
aXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChs
aXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4oaXRl
cmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRl
TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVn
aXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6
RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVs
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0
aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bf
c3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVt
cElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXR1
cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5
d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRl
ZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5l
cmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJl
dHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1l
dGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCks
IHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0g
ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShu
ZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJu
KHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJu
RnJvbUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1
bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCBy
ZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRl
ZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVyYXRvclJl
c3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhy
b3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJvd0tleXdv
cmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQo
bmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RGb3VuZC5n
ZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50
cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRv
clJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVy
ZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFi
ZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJ
dGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2Vz
IG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFs
TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdldCgpLCBn
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
bWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgp
LCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
ZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1
ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAg
ICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4g
cHJldmlvdXMuZ2V0KCk7Cit9CisKKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBi
b29sIGRvbmUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGRzdDsKKyAgICBp
ZiAoIWRzdCB8fCBkc3QgPT0gdmFsdWUpCisgICAgICAgIHJlc3VsdCA9IG5ld1RlbXBvcmFyeSgp
OworICAgIGVtaXROZXdPYmplY3QocmVzdWx0LmdldCgpKTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lLCBlbWl0TG9hZChudWxscHRyLCBq
c0Jvb2xlYW4oZG9uZSkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBlbWl0RGly
ZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWUsIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90
IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGUpKSk7CisgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwg
PSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7
CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3RhdGUpCit7CisgICAgYmVnaW5Td2l0Y2go
c3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3aXRj
aEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3
aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0
Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hK
dW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3
aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAg
aW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAgICBq
dW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9n
ZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9m
ZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JS
ZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhp
cyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbworICAg
ICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKKyAg
ICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwor
ICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5k
KHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgfQorCisgICAgZW1pdExh
YmVsKG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkpOworICAgIHsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBlbWl0RXF1YWxpdHlP
cChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAg
ICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsK
KworICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChuZXdUZW1wb3Jh
cnkoKSwgZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSksIHRydWUpOworICAgICAgICAg
ICAgZW1pdFJldHVybihpdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBUaHJvdy4KKyAgICAgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAg
ICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1OWEzMzY4NWJiM2M3MjY0N2RjZmFm
YjhkNTgyMDQyMmJhODYuLjEyOGMwMWExMGU5MzA4Yzk0YWYzYzRlMzMwNTA0MjE2YWRjOTFiNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0
b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQor
ICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpOyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KIAog
ICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiArMzAwLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGVSZWdpc3RlcigpIHsgcmV0
dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJl
Z2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3RlcjsgfQorCiAgICAgICAgIC8vIFJl
dHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSByZWdpc3Rlci4gUmVnaXN0ZXJzIHJl
dHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSByZXF1aXJlIGEgbW9kaWZpZWQgZm9y
bSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAgICAvLyByZWdpc3RlciB3aXRoIGEg
cmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFibGUiLCBtZWFuaW5nIHRoYXQKQEAg
LTQ5OSwxMCArNTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdBcnJheShSZWdpc3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3Ro
KTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwg
dW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHBy
ZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVn
aXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIApAQCAtNTk2LDYgKzU5OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29u
c3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51
bVBhcmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0LDEyICs2NDgsMjUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRj
aFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVm
UHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2RlKiosIExhYmVsKiBkZWZhdWx0TGFiZWwsIGludDMy
X3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAorICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qg
c3RhdGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1l
bnQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBh
cmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgYm9vbCk7Cisg
ICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVu
ZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNv
ZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsg
fQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRF
bWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjg0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFy
ZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZv
aWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSop
OworICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVDYWxsZWVSZWdpc3RlcnMoKTsKIAogICAgIHB1
YmxpYzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnRO
b2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3lt
Ym9sVGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTc1MiwxMiArNzcxLDIyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclRE
WjsKICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsK
IAorICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJv
cGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAg
ICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9k
ZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29u
c3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAm
JiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkK
KyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
IHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAg
Y29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRp
bmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RB
YmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAg
ICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eTsK
KyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlICYmIGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzID0g
R2VuZXJhdG9yVGhpczo6RW1wdHk7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRh
dGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsK
KyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1f
dm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
PyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0
cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXMsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVu
dCYpOwpAQCAtNzY1LDYgKzc5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVn
aXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKE9wY29kZUlE
LCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdp
c3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3Rl
ciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdp
c3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICB2
b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYpOwogICAgICAgICB2
b2lkIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNB
bmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlvblBhcmFtZXRlcnMmLCBGdW5jdGlvbk5v
ZGUqLCBTeW1ib2xUYWJsZSosIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbCAoVW5pcXVlZFN0cmluZ0ltcGwqKT4mIGNhcHR1cmVzKTsKIApAQCAt
Nzc2LDYgKzgwNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAKKyAgICAgICAgTGFiZWwqIGdl
bmVyYXRvckNvbXBsZXRlZExhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JDb21wbGV0
ZWRMYWJlbC5nZXQoKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFVubGlua2Vk
SW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2luc3RydWN0aW9uczsKIApA
QCAtODA0LDYgKzgzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBt
X3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hcmd1bWVu
dHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9nZW5l
cmF0b3JSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZh
bHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2Jq
ZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0
UmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC04MjcsNiArODYwLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0
YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAg
ICAgIFJlZlB0cjxMYWJlbD4gbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbDsKKyAgICAgICAgVmVj
dG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwogICAgICAgICBlbnVt
IEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUs
IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0lu
aXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYwOGJkMzc0N2RlZGE3ODY4ZTViYmQwZjUy
Li4xZDM4MjJmNjczMmEzNTQ3ZjNlOTBlNjE3ZmYwZGVlMjBmODdhNmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2lu
Y2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWdpc3RlcklEKiBSZWdF
eHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAobV9zaG91bGRB
bHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sg
fHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7
CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0xNzAsMTIg
KzE3MSwxNiBAQCBSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgJmNhbGxlZSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1zdGF0aWMgUmVn
aXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yKQorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2Fs
bGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK30KIAotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBob21lT2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0
UHJpdmF0ZU5hbWUpOworc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGhvbWVP
YmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsK
IH0KIApAQCAtMjU4MywxMyArMjU4OCwyNyBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogCi0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRv
ci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExv
YWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVn
aXN0ZXIgPSBudWxscHRyOworICAgIGlmIChtX3ZhbHVlKSB7CisgICAgICAgIGlmIChnZW5lcmF0
b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAg
ICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpOworICAgIH0gZWxzZQorICAgICAgICBy
ZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOwor
CisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGUpCisgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROZXdJdGVy
YXRvclJlc3VsdChudWxscHRyLCByZXR1cm5SZWdpc3Rlci5nZXQoKSwgdHJ1ZSk7CisKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxseUJsb2NrKCkpIHsKICAgICAgICAgcmV0
dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UG9wU2NvcGVz
KGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIDApOwogICAgIH0KIAorICAgIGlmIChnZW5lcmF0
b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKwogICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwg
c3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250
cm9sRmxvdyhlbmRPZmZzZXQoKSk7IApAQCAtMjk2NiwyNiArMjk4NSwxMDAgQEAgdm9pZCBGdW5j
dGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3Rh
cnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJh
bWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0
KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRo
aXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOwor
ICAgIHN3aXRjaCAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBz
aW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJU
KHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVt
ZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4o
c2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3Rh
dGVtZW50LT5leHByKCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsK
KyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9k
ZSo+KGV4cHIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV4dC5nZXQoKSwg
ZnVuY0V4cHIpOworCisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5kaW5nKCkgPT0gU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21l
T2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAg
IGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQo
KSk7CisgICAgICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQg
dGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgotICAgIGlm
IChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9j
a05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Ci0gICAgICAgIGlmIChs
YXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2Rl
KCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxh
c3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHks
IHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmll
bGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgorICAgICAgICAvLyBCdXQgdG8gbWFrZSBp
dCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bj
b2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNl
IHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTU0NQogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdl
IG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewot
ICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24g
aW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3Vy
Y2UgY29kZS4KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5n
ZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5l
eHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JS
ZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRl
TmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yU3RhdGU6OkluaXRpYWwpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQobnVs
bHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1p
dCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRo
ZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxp
bmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIo
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVs
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQo
KSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRl
Q2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChnZW5l
cmF0b3IuZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwoKSk7CisgICAgICAgIH0KKworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisgICAgICAgIFRy
eURhdGEqIHRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRyeShnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsK
KworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwo
Z2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4
Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhl
cmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXplZEZpbmFsbHkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5lbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpLCB0cnVlKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmds
ZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2Rl
KiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVt
ZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4K
KyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2so
KSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBz
dGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7
CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudElu
QmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0
aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisK
KyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBp
bnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5j
dGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3Ig
dGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4K
KyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMxMDYs
MjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0
aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0
b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4i
KSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBh
cmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJn
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
YXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQo
KSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgp
LCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmlu
ZGV4IDIwN2UwYjMzZTk4MjM5ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIw
MGE5MjAyNDYyYzAwOTgyYmI0MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKQEAgLTk2LDYgKzk2LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVu
IGZhc3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlv
biA9IDE2OwogCisgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIp
OworCiAgICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9v
bCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtl
ZChjb25zdCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApp
bmRleCBmNGFjZjI1ZTYwZTE4OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5iOGY3ZDc2ZmZm
Y2QwMDA2NGU4ZGVjYjY1MWM5YWZhY2FiY2I3N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTcwLDYgKzcwLDM2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpo
ZWFwKGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAor
aW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICgh
cCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxvbmdpbmcgTWFy
a2VkQmxvY2sgYW5kIGZpbHRlciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4KKyAgICBUaW55
Qmxvb21GaWx0ZXIgZmlsdGVyID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAg
ICBNYXJrZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHApOworICAg
IGlmIChmaWx0ZXIucnVsZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7
CisgICAgICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNl
dCgpLmNvbnRhaW5zKGNhbmRpZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gVGVzdCB0aGF0IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJZiBub3QsIHRo
aXMgcG9pbnRlciBpcyBub3QgcG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAo
IU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBUZXN0IHRoYXQgdGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1
YWxseSBhbGxvY2F0ZWQgaW4gVk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgdGhlIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4KKyAgICBpZiAo
IW1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHBvaW50ZXIgY2FuIGJlIHVzZWQgYXMgb25l
IG9mIGNlbGxzLiBOb3QgcG9pbnRpbmcgdG8gbWV0YWRhdGEsIG9yIG1pZGRsZSBvZiBjZWxscy4K
KyAgICBpZiAoIWNhbmRpZGF0ZS0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBUaGUgY2VsbCBwb2ludGVyIGlzIG5vdCB6YXBwZWQuIEl0IG1lYW5zIHRoaXMgY2Vs
bCBpcyBhY3R1YWxseSB1c2VkLgorICAgIHJldHVybiAhcmVpbnRlcnByZXRfY2FzdDxjb25zdCBK
U0NlbGwqPihwKS0+aXNaYXBwZWQoKTsKK30KKwogaW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNv
bnN0IHZvaWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxs
KS0+aXNMaXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3
MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBi
b29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0
IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBz
ZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZv
aWQqKTsKQEAgLTM4OCw3ICszODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxs
KGNvbnN0IHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25z
dCB2b2lkKiBwKQogICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGln
bmVkKHApKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHAp
OwpAQCAtMzk5LDcgKzQwMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJz
IHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsKKyAg
ICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uZDE4NTA0MjBh
YmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDE2IEBA
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2FsbGVy
Q29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIGNhbGxl
clNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVD
aGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJsb2NrID0g
Y2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworCisgICAgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAoY2FsbGVy
VW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7
CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdlbmVy
YXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1vZGUg
PSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
bWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBj
YWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4p
OwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQg
c2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxG
cmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXNDaGVj
ayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVyQ29k
ZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9j
aywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1T
b3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2Nr
LT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUsIGNh
bGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTYx
YjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4uOTViYWIwNGQyM2E4ZWJlOTVj
Y2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3Rk
eikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3Nh
dmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9k
ZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHAp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAgIERFRklO
RV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
ZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2NzdlNzY2
YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00
OTMsNiArNDkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb3B5
X3Jlc3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTQxLDYgKzU0
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1
ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVj
dGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93
Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29s
IGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBz
Y29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDQ5NDg5NjUwZTY4NTQ2
NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1ZjBmMmNlMjM3MDdlNDE1
NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVn
ZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVnZXhw
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYKICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUu
b3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVu
Yyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24s
IGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25l
d19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBl
bWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVu
Y0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4LDExICsxMDMwLDI3IEBA
IHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVnVDIpOwogI2VuZGlmCi0g
ICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3Qs
IHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRvbmUubGluayh0aGlzKTsK
IH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJ
bnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xNDA1LDYgKzE0
MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRf
b3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkwNjM2ZDFk
ZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxl
KEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJy
YXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBm
dW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4K
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgYm9v
bCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVy
aXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgaWYg
KGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25U
eXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUodm0sIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3Bl
KSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2Vs
bCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxz
ZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAgIEFTU0VS
VChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9u
OjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOwor
ICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1
cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywg
c2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxp
ZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNv
bW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRh
YmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpAQCAtMTAx
OSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
LCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQog
ewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRo
aXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwg
SlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsK
LSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhp
c1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYxNDVjOWQ1NTc1ZjFjOTUy
ZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5OTVi
OWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTMw
MSw2ICszMDEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cmF5QnVmZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYQogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUq
LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUq
LCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcy
YzczYjRlZWQ2M2UzYjIwOGM1Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2
YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZnVuYykKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQogCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhY29k
ZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSB8fCBleGVjLT5oYXNBY3RpdmF0aW9uKCkpOworICAg
IEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lz
dGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0Yo
IkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51
Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMDUyLDYgKzEwNjUsMTcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBMTElO
VF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQog
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNb
Ml0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOwor
CisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVk
MTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5
NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApA
QCAtOTksNiArOTksOCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3
aXRjaF9jaGFyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dpdGNo
X3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5j
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsK
K0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5j
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJv
d19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CmluZGV4IGY4ZTEyOGNjZDlhMDRhMTFhY2Y5OTFjYmMxYjViMjBkOTdjYWYwMzMuLjM2OGQwODc1
MmE3Y2ZiN2FkY2FkZGU2ZjBjM2U3OTFiNWZjZTQyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEyMjcsNiArMTIy
NywxMiBAQCBfbGxpbnRfb3BfbmV3X2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRf
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgZGlzcGF0Y2go
NCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNDU4LDYgKzE0NjQs
MTEgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19n
ZW5lcmF0b3JfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCisgICAgZGlzcGF0Y2go
NCkKKwogX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQpA
QCAtMTU3Myw2ICsxNTg0LDE4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykK
IAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXN1
bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jl
c3VtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIxNjJlOGRmMTI0OWY1OTdmODZmNTIyYjcwZTFlOTYw
OWJlMDAuLjJiODRjYmFmMzdlZjA0NjBiZGI5MTZkMmJiZGFjMDJlMGQyYjRkNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zNDEsOSArMzQxLDExIEBA
IGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZ
aWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBudWxscHRyLCAvKiBkZWxlZ2F0ZSAqLyBmYWxzZSk7CiAg
ICAgfQogCi0gICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKQor
ICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgICAg
ICBZaWVsZEV4cHJOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2Rl
KGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBWYXJpYWJsZUVudmlyb25t
ZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCkBAIC0z
NjQsMTIgKzM2NiwxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBT
b3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5k
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAg
ICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBt
b2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAg
ICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcs
IHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAg
ICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODg2LDYgKzg4OCw5IEBAIGNsYXNzIEFTVEJ1aWxk
ZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9
CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB1c2VzQXJndW1lbnRzKCk7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5
MzM4Y2U1MC4uNWI2ZGM0OTM4NWRhNzgzNThjMjc5YmMwODAwYmY4OWEwYTY1NzljNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYyLDEw
ICsxNjIsMTEgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAog
ICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RD
b250ZXh0KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlz
QXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogeworICAgIEFTU0VSVChtX3N1cGVyQmlu
ZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rvcktp
bmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRj
MTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2UuLjBiZjAwYjdiZTkzN2Y3OTc4YTQ1NjM3
M2ZhZGUzMWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTE4MTcsNyArMTgxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAK
LSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBT
b3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAg
ICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsxODQyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICAgICAgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4o
bV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JL
aW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9
CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0
TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQpAQCAtMTg2OSw4ICsx
ODY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX2xhc3RMaW5lOwogICAgICAg
ICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0
cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAg
ICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxk
RXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxk
RXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODc0YjI3
ZTM5MDkwN2M4ZTQxNDk4MjZjMzc5ZTQyY2Y1OWNlNTJhLi41YmJhNTIwZDZhNTc0ZWM3M2QyOWU1
MmMwMGQ5MjdmNzZlZTZlOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3Io
Ym9vbCBzaG91bGRQcmludFRva2VuLCBjb25zdCBBJiB2YWx1ZTEsIGNvbnN0IEIKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0
aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29u
c3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiAr
MjEwLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKICAgICAsIG1fbGFzdEZ1bmN0aW9u
TmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9wYXJzaW5n
QnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAg
ICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0
b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNU
RFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBm
dW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNv
bnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0g
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0yNzMs
OCArMjc3LDEyIEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgICAgICAgICBzb3VyY2VF
bGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxl
bWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNl
TW9kZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxl
bWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0
TW9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0
LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0
cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAg
LTMwMSw3ICszMDksMTQgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBWYXJpYWJsZUVu
dmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsK
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgICAgIHZhckRl
Y2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLSAgICAKKworICAgIElk
ZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1
c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFibGVzLmNvbnRhaW5z
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAgICAgICAgICAgY29u
dGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2Rl
KCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMzExLDEwICsz
MjYsMTAgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICAgICAgZmVhdHVyZXMgfD0gTW9k
aWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykKICAgICAg
ICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCisKICAgICBWZWN0b3I8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmIChtX3Bh
cnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAg
ICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxvdyBidWls
dGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKTsKQEAg
LTQ1OCw2ICs0NzMsNDUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU28KIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2Rl
KQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1l
bnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQo
KTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwor
ICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVT
dGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVy
c1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVu
Y3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJh
bWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZv
LnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKwor
ICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNr
ZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhl
ci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJh
dG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdl
bmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWls
ZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tl
bkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAg
ICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlv
bkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsK
KyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExv
Y2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUp
OworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQp
OworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250
ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0
ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBA
IC0xNTg5LDE1ICsxNjQzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVu
Y3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVl
QnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBp
bnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBl
IGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRp
bmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYyLDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uQm8KICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNl
RWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1
bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVt
biwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRl
ckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAog
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKQEAgLTE2MjUsNiArMTY3OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9k
IjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0
dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJy
b3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAg
LTE3MDMsNiArMTc1OCwzNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGludCBQYXJzZXI8TGV4ZXJUeXBlPgogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBh
dXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4
dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2Vu
ZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5k
aW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZh
dGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAg
IGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRl
LCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8g
Z2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24s
IHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsK
KworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBh
dXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbklu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIg
KzE4OTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGVuZExvY2F0
aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1
bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVT
dGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlT
dGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBj
YWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFt
ZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJp
Y3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZv
LT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9y
ZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShm
dW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4
MzIsNyArMTkxNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXIt
PnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAg
ICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBj
YWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0
LDE0ICsxOTM4LDMzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgCiAgICAgbV9sYXN0
RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0
ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5j
dGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3Rv
cktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9k
ZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0
Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25C
b2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9OworCisg
ICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsK
KyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2Nv
cGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEgZ2Vu
ZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0
b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNl
dFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9k
eVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9m
IGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+
bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBl
Y3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBv
bmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAg
cG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFi
bGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3Jt
UGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7
CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJv
ZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQu
c2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkp
OwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5h
bWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5v
cm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8
fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8
fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAg
ICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAq
ZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMg
bm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZv
Lm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQg
ZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE5MjksNyArMjAzMiw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZf
R0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNl
TW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAg
ZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3Qg
aGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyhUCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAg
ICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJz
ZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUn
Iik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5h
bWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI4MzYsNiArMjkzOSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlWWllbGRFeHByZXNzCiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQ
aGFzZSA9PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gd2l0aGluIHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBT
YXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAt
Mjg0MywxMyArMjk0NywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVnYXRlID0g
Y29uc3VtZShUSU1FUyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAgICAgICAg
IHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUsIGRp
dm90U3RhcnQsIGFyZ3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMzA0MSw3ICszMTQ2LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VQcm9wZXJ0eU1ldGgKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsK
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZv
Lm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhw
cihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTksNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uRXhwcgogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRP
UlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9k
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbklu
Zm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTdiMGU4MWFlYTFk
ODljNGZlYzk0NDc1N2M3ZjQ5NWVjNTA0NzczZS4uNzI1OWE1ZDQ3NTU2ZjQwNTNhNDBhYTNlYzM0
MzU5ZTk2NzkzOGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0x
NzIsNiArMTcyLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3Bl
KGZhbHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAs
IG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxz
ZSkKICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkK
ICAgICB7CkBAIC0xOTIsNiArMTkzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lz
TGV4aWNhbFNjb3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAgICAgICAsIG1faXNGdW5jdGlv
bkJvdW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRT
dHJpY3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQorICAgICAgICAsIG1faGFzQXJndW1l
bnRzKHJocy5tX2hhc0FyZ3VtZW50cykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29w
RGVwdGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAg
ICAgLCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC0yNDYsNiAr
MjQ4LDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZToKKyAgICAgICAgICAgIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKTsK
KyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
OgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKQEAgLTI2OCw2ICsy
NzQsOCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9pc0Z1bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzR2VuZXJhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvcjsgfQogCisgICAgYm9vbCBoYXNBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQorCiAgICAgdm9pZCBzZXRJc0xl
eGljYWxTY29wZSgpIAogICAgIHsgCiAgICAgICAgIG1faXNMZXhpY2FsU2NvcGUgPSB0cnVlOwpA
QCAtNDUwLDE2ICs0NTgsMjAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIG1fdXNlc0V2
YWwgPSB0cnVlOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJh
dG9yIGVuZCA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7Ci0gICAgICAgICAg
ICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRW
YXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobmVzdGVkU2NvcGUtPm1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVz
dGVkU2NvcGUtPm1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAg
IGZvciAoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaW1wbCA6IG5lc3RlZFNjb3Bl
LT5tX3VzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1f
ZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNh
bFZhcmlhYmxlcy5jb250YWlucyhpbXBsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICAvLyAiYXJndW1lbnRzIiByZWZlcmVuY2Ugc2hvdWxkIGJlIHJl
c29sdmVkIGF0IGZ1bmN0aW9uIGJvdWRhcnkuCisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNj
b3BlLT5pc0Z1bmN0aW9uQm91bmRhcnkoKSAmJiBuZXN0ZWRTY29wZS0+aGFzQXJndW1lbnRzKCkg
JiYgaW1wbCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMu
YWRkKCpwdHIpOworCisgICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpbXBsKTsK
ICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IGEgZGVjbGFyZWQgdmFyaWFibGUgdGhh
dCBpcyB1c2VkIGluIGFuIGlubmVyIHNjb3BlIHRvIGJlIHRob3VnaHQgb2YgYXMgY2FwdHVyZWQg
aWYKICAgICAgICAgICAgICAgICAvLyB0aGF0IGlubmVyIHNjb3BlIGlzIGJvdGggYSBsZXhpY2Fs
IHNjb3BlIGFuZCBub3QgYSBmdW5jdGlvbi4gT25seSBpbm5lciBmdW5jdGlvbnMgYW5kICJjYXRj
aCIgCiAgICAgICAgICAgICAgICAgLy8gc3RhdGVtZW50cyBjYW4gY2F1c2UgdmFyaWFibGVzIHRv
IGJlIGNhcHR1cmVkLgogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlh
YmxlcyAmJiAobmVzdGVkU2NvcGUtPm1faXNGdW5jdGlvbkJvdW5kYXJ5IHx8ICFuZXN0ZWRTY29w
ZS0+bV9pc0xleGljYWxTY29wZSkpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFi
bGVDYW5kaWRhdGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJp
YWJsZUNhbmRpZGF0ZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIC8vIFByb3BhZ2F0ZSBjbG9zZWQgdmFyaWFibGUgY2FuZGlkYXRlcyBkb3dud2FyZHMgd2l0
aGluIHRoZSBzYW1lIGZ1bmN0aW9uLgpAQCAtNTUwLDE0ICs1NjIsMjIgQEAgc3RydWN0IFNjb3Bl
IHsKICAgICB7CiAgICAgICAgIG1faXNGdW5jdGlvbiA9IHRydWU7CiAgICAgICAgIG1faXNGdW5j
dGlvbkJvdW5kYXJ5ID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAg
ICAgICBzZXRJc0xleGljYWxTY29wZSgpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFsc2U7
CiAgICAgfQogCisgICAgdm9pZCBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHNldElzRnVuY3Rpb24oKTsKKyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAg
fQorCiAgICAgdm9pZCBzZXRJc0dlbmVyYXRvcigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0
aW9uKCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3Vt
ZW50cyA9IGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgc2V0SXNNb2R1bGUoKQpAQCAtNTc5LDYg
KzU5OSw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBtX2lzTGV4aWNhbFNjb3BlIDogMTsK
ICAgICBib29sIG1faXNGdW5jdGlvbkJvdW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0
cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9oYXNBcmd1bWVudHMgOiAxOwogICAgIGludCBtX2xv
b3BEZXB0aDsKICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjI3LDcgKzY0OCw3IEBAIGNs
YXNzIFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291
cmNlUGFyc2VNb2RlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5k
aW5nLAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5l
ZWRlZCk7CiAgICAgflBhcnNlcigpOwogCkBAIC0xMTUwLDYgKzExNzEsNyBAQCBjbGFzcyBQYXJz
ZXIgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50
c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNv
dXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVu
dGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQq
IGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUg
eyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTExOTAsNyArMTIxMiw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFy
c2VQcm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5l
cmF0b3IpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBh
cnNlR2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6
VHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5k
ID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5F
IFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0
aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVu
Y3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gQUxXQVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVj
bGFyYXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRl
eHQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9u
cywgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24m
IGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0
aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxp
c3RDb250ZXh0LCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25z
dERvZXNOb3RIYXZlSW5pdGlhbGl6ZXIpOwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29s
IHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VD
bGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88
VHJlZUJ1aWxkZXI+Jik7CiAKQEAgLTEzNDAsNiArMTM2Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3Vy
Y2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47
CisgICAgU3VwZXJCaW5kaW5nIG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2luZCBt
X2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQ7CiAgICAgVGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsK
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fdmFyRGVjbGFyYXRpb25zOwpAQCAtMTQ2Myw3ICsx
NDg3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+CiBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9k
ZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJv
ciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVs
bHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKAogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291
cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4
Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2Us
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZt
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGlu
ZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVy
cm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE0ODUsNyArMTUwOSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0
cnVjdG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExl
eGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBw
YXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICBQYXJz
ZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1v
ZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlz
VERaTW9kZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5
ZWEyOWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEwYzAyOWNi
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgZW51bSBGdW5jdGlvbk1vZGUgeyBGdW5jdGlvbkV4cHJlc3Npb24sIEZ1bmN0
aW9uRGVjbGFyYXRpb24gfTsKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3Jt
YWxGdW5jdGlvbk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlv
bk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUs
CkBAIC02MSw2ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQ
YXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1v
ZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtl
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQ0OWE3ZTE3M2IyNTAwZGFmYjVmODRhYTRjMmU2ZjQxNjY0OWQwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTb3VyY2VDb2RlS2V5X2gKKyNkZWZpbmUgU291cmNlQ29kZUtleV9o
CisKKyNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU291
cmNlQ29kZUtleSB7CitwdWJsaWM6CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9n
cmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CisKKyAgICBTb3VyY2VDb2RlS2V5
KCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
VGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAg
ICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKKyAgICAgICAgLCBtX25hbWUobmFtZSkK
KyAgICAgICAgLCBtX2ZsYWdzKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMp
IHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikgfCAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRo
aXNURFpNb2RlKSkKKyAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisKKyAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9CisKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQor
CisgICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQu
IEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKKyAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIg
c3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgorICAgIFN0cmluZyBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKKyAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90
aGVyLmxlbmd0aCgpCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAg
ICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKKyAgICAgICAgICAgICYmIHN0cmlu
ZygpID09IG90aGVyLnN0cmluZygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTb3VyY2VDb2Rl
IG1fc291cmNlQ29kZTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHVuc2lnbmVkIG1fZmxhZ3M7
CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2Rl
S2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwor
fTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxs
KCk7IH0KK307CisKK30KKworI2VuZGlmIC8vIFNvdXJjZUNvZGVLZXlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA5NTUzNmMzYzc1NjcyMjcz
NTFiYzY5MDcxODJlZDUzYWI2YzcxOTFiLi4zZTBjMzBmZDFkMjUxODYyMzVlMmRiMDM4NDQxNGM2
MWY4MTU3YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaApAQCAtMTgwLDEwICsxODAsMTAgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVy
biBZaWVsZEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1cm4gWWllbGRFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlpZWxkRXhwcjsg
fQogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9u
VHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVy
biBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9
CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBi
b29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0K
ICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3Jl
YXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CkBAIC0zODUsNiArMzg1
LDggQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgaW50IGVuZE9mZnNldChpbnQpIHsgcmV0
dXJuIDA7IH0KICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAorICAgIHZv
aWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgaW50IG1fdG9w
QmluYXJ5RXhwcjsKICAgICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1ZTBmNTZl
YzBmNjljZGM3Y2JlZGYwZS4uMmEyNDQyZmFhNmVlYTgxODI4NDVmZmIxN2IyMWEyYjk5Mzg0Y2I5
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVmIHR5cGVu
YW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2Rl
PigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsCi0gICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VN
b2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7
CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAg
ICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwK
ICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXBy
b2dyYW0pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTE4
OCw3ICsxODgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRF
bmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rp
b24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5v
IHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVt
cHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291
cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6
Q2FuQ29uc3RydWN0LCBlbXB0eVREWlZhcmlhYmxlcyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBl
bXB0eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5z
ZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7
CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDQ4YzhjZmVmODQ2NDlkOGYwOWMyZmIwYjk0
ODgxMTFlMTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1MzNiMWZkYTNkYWE4OTVkMDZjZGM4OTU3Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNv
ZGVLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01Niw3MSArNTcsNiBAQCBj
bGFzcyBWTTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAotY2xh
c3MgU291cmNlQ29kZUtleSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBl
LCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07Ci0KLSAgICBTb3VyY2VD
b2RlS2V5KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hl
Y2tJZk5lZWRlZCkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICAgICAg
LCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKAotICAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKSkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0K
LQotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3Ro
KCk7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlz
TnVsbCgpOyB9Ci0KLSAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5n
IG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQotICAgIC8vIHByb3ZpZGVycyBj
YWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAotICAgICAgICAgICAgJiYgbGVu
Z3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIu
bV9mbGFncwotICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAg
ICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgdW5zaWdu
ZWQgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29k
ZUtleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkm
IGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29k
ZUtleS5pc051bGwoKTsgfQotfTsKLQogc3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgU291
cmNlQ29kZVZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUz
NTVkODdhM2IzM2IxLi5kZTA3ZjFjNTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxF
cnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rp
b24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNy
byhKU09OKSBcCkBAIC0zMjksNiArMzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwK
ICAgICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3IpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFj
cm8oZ2VuZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkw
ZjY1YzI0ZDYzMmI2MjEwODlkZTVjMWJiZDQ5NjRkNDQ5NjQzOTEuLjQ1NmRiNzkwMjAyZGMzOWZk
MTdmZWMzMWUzY2E0MDQxOWNjZThkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9z
YXZlKQoreworICAgIC8vIE9ubHkgc2F2ZXMgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0
ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAg
IC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRv
ciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFj
aCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVy
YXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxs
cHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlz
TnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6
ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVt
YmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1D
YWxsZWVSZWdpc3RlcnMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRv
ciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2Vu
ZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3Ip
LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwg
ZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0g
cGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
LT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsK
KyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAg
ICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAg
IEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUpKTsKKyAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCkpOworICAgIEVORCgpOwor
fQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKaW5kZXggMjI2MTg1YzRjN2VhN2NjNmZjN2YzY2M0ZjFmMzdlNjBlYjcy
ZjE3YS4uZjAwZDg3MDVkNGU2N2ZlNGQ0MDU5YmRlMTY4ZWU4OGY1N2RmNzJlNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2
ICsyOTAsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19l
bnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5k
ZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBl
X2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAppbmRleCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYz
OTVjNDJiYzEyZWUwMjE4MzRhODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIGNo
ZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZU
aHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJv
Z3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0
cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVja01vZHVsZVN5
bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQpAQCAtNzMsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFt
Tm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAg
ICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1v
ZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYw
Li40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBA
IENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1
dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAg
ICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3Jk
UGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJl
cygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYsNyBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0g
cGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7Cisg
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmIChwcm9n
cmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJl
N2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uODhhMjRhZDZjYWIyZDYyMDUyMTA0
ZjAxMzAyZWRlMDIyYTQ0ZDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87
CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQog
CiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25E
ZWNscygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcg
KzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7
IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAg
U3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21v
ZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBA
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigp
OyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
QXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJl
ZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0K
ICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhj
bHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5
Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVlYTE0Yjk2MjZhNWExNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
QEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRo
ZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYg
YXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgaXNH
ZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGds
b2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywg
Z2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0x
LCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAogICAgIGNvbnN0IElkZW50aWZpZXIm
IGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAotICAgIGNvbnN0IFRleHRQ
b3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCisgICAgY29uc3QgVGV4
dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgYm9vbCBpc0dlbmVy
YXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMg
aW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwog
ICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAgICAg
IHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6
ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAgICAgZWxzZSBpZiAo
YXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlv
biAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJp
bmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5z
dHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
LCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOworICAgICAgICBpZiAo
aXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFw
cGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4
ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0
RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRo
ZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYg
YXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGJvb2wgaXNHZW5l
cmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQ
b3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1v
dXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBpc0dlbmVyYXRv
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDIyZWNiNTdiOTNmNjliZmM5
ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRjZDIwYjc2MzFjMTc5ZmRlMDJhYTk1NzBkMTBm
ZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNv
bnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CitKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwor
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAKIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
aygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRp
b24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xLCBib29s
IGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhlZWM2NDdkNDZmOGEyZTdmY2ZiOGQzZjIxZDdhZDNhMjg4N2E4NGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAg
LTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJh
bWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9yRnJhbWU6OkdlbmVy
YXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKQorICAgIDog
QmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX251bWJl
ck9mQ2FsbGVlUmVnaXN0ZXJzKG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKQoreworfQorCit2b2lk
IEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNh
bGxlZVJlZ2lzdGVyczsgKytpKQorICAgICAgICByZWdpc3RlckF0KGkpLmNsZWFyKCk7Cit9CisK
K1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0dlbmVyYXRvckZyYW1l
KiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mUmVnaXN0ZXJz
KQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQorICAgICAgICBuZXcgKAorICAgICAg
ICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMobnVtYmVyT2ZSZWdpc3RlcnMpKSkK
KyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICByZXN1
bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIHJlZ2lzdGVy
cy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCks
IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIEFTU0VSVChsaXZlQ2FsbGVlUmVn
aXN0ZXJzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBsaXZl
Q2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAg
ICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAgICAgLy8gU2luY2UgQyBzdGFjayBjYW4gYmUg
dXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29ycmVjdCB2YWx1ZSBmb3IgYSBqcyB2YWx1ZSBt
YXkgZXhpc3QKKyAgICAgICAgLy8gaW4gYSBub24taW5pdGlhbGl6ZWQgKGJ1dCBhbGxvY2F0ZWQp
IEpTIHJlZ2lzdGVyLgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgZXhhbXBsZSwKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWdpc3RlckEgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgLy8gICAgIC4uLgorICAgICAgICAvLworICAgICAgICAvLyBJ
biB0aGUgYWJvdmUgY2FzZSwgcmVnaXN0ZXJBIGlzIGFsbG9jYXRlZC4gQnV0IGl0cyBjb250ZW50
IG1heSBub3QgYmUgY29ycmVjdCBqcyB2YWx1ZS4KKyAgICAgICAgLy8gQXMgYSByZXN1bHQsIEpT
Q2VsbCBwb2ludGluZyB0byB0aGUgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24gbWF5IGV4aXN0Lgor
ICAgICAgICAvLyBQZXJmb3JtaW5nIGEgd3JpdGUgYmFycmllciAoJiBTbG90VmlzaXRvcidzIG1h
cmtpbmcpIG9uIHRoZXNlIGluY29ycmVjdCBjZWxscyBjYXVzZXMgaW52YWxpZCBkZXJlZmVyZW5j
ZXMuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSB0ZXN0IGEgZ2l2ZW4g
Y2VsbCBsaWtlIHBvaW50ZXIgaXMgdHJ1bHkgY2VsbC4KKyAgICAgICAgaWYgKHJhd1ZhbHVlLmlz
Q2VsbCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnZtKCkuaGVhcC5pc0xpdmVDZWxsKHJh
d1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9uLWNlbGwgdmFsdWUgbWF5IGJlIHN0b3JlZC4g
KGUuZy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQgdGFnIGluIDMyYml0IGVudmlyb25tZW50KS4K
KyAgICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJlIG5vdCByZWNvZ25pemVkIGFzIGEgY2VsbCwg
d3JpdGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMuCisgICAg
ICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCByYXdWYWx1ZSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7CisgICAgLy8gT25s
eSByZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9y
IGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgor
ICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgp
KSA9IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOworICAgICAgICByZWdpc3RlckF0KGluZGV4KS5j
bGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJh
bWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIC8vIFNpbmNlIG9ubHkg
dHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1h
cmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5yZWdpc3RlcnMo
KSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjljZjI2MmM3OTVhYTQ1ODdjNTU0YjBiOTFhMWZj
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAorCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpT
cGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRp
ZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlz
SW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1i
ZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBy
ZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mUmVn
aXN0ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIHJlZ2lz
dGVyQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1i
ZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlcnMoKVtpbmRleF07
CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlJlZ2lzdGVycygpCisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVG
b3JSZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMpCisgICAgeworICAgICAgICBy
ZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51bWJlck9mUmVnaXN0ZXJzICogc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisK
KyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZVJlZ2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJh
bWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisgICAgc2l6ZV90IG1f
bnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcm90ZWN0ZWQ6
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3Y2QzZWQwMjViZWE5MjdmNjA1
MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7
CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9y
RnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBm
b3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwg
RG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJn
TGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJh
dG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOwor
ICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
JiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3Ry
dWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24u
aCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlOGYyZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgx
OGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisj
aW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2Nv
bnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdk
OGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVm
aW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
cHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAg
ICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3
YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxl
CisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4g
ICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRp
biAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdlbmVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0
cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJv
dG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBy
ZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlw
ZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRl
ZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90
eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsK
KyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJv
dG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
fTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjlhNmUwOTVjMzJhYWRjNTQ0NmEzNTVkODE3NWE5NTlkZDQ4NGNmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc19oCisj
ZGVmaW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2Vj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQor
Ly8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNj
cmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAor
Ly8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3Ry
dWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRp
bmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBH
ZW5lcmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywK
Ky8vCisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAgIHlpZWxkIHRo
aXMKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8v
ICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgp
OworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsK
Ky8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3Qg
YmUgZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBm
b2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24g
aXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybmVzIGEgR2VuZXJhdG9yIHRoYXQg
ZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXM6OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2Us
IHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2Vu
dW0gY2xhc3MgR2VuZXJhdG9yVGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBOb25F
bXB0eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIw
MWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMy
YWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4
LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1
dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0p
OwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAg
ICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdl
bmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0
aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4ZWN1dGFibGUt
PnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwg
IkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
RnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVy
biBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MDg3ODE0YTM2NDMyMDQ4NTJjMWEwMzYyZThlZDVkYTVm
YmVmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0
aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3Mg
TExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklU
KQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFz
cyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0
b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0ZWQsCisgICAgICAgIEV4ZWN1dGlu
ZywKKyAgICAgICAgSW5pdGlhbAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJl
c3VtZU1vZGUgOiBpbnQzMl90IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJl
dHVybk1vZGUgPSAxLAorICAgICAgICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGNvbnN0
IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0
aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3Rh
dGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7
CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5j
dGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggMzcxZTRlYTA2ZTM4NjU1YWM1YTcwYmFhZGFmNzQwMmE3N2JjMGY1OS4uNzYyMmJiOTJh
MTkxNTExZDgzMDRlYTBiMWQwMGIzODk4N2ViYzg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2lu
Y2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAi
SlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgbV8g
IyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBpbnN0YW5jZVR5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURf
SVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUp
CiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclBy
b3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywg
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwog
ICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQog
CkBAIC00MjAsNiArNDI1LDExIEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAgICAgbV9zeW50
YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVy
cm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0
cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
dGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJl
LCBBU0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1f
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtODE4LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7
CkBAIC04NTAsNiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVj
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0
OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAgY2xhc3Mg
RXZhbEV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJv
dG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTIy
OSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQ
cm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJv
dG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yUHJv
dG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0
eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
cmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xl
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0
dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBF
cnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJv
dG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5l
cmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiArNTEzLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3Ry
dWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4ZDI4YTUwZDk3YTFlMGI3N2I1
MDYzYS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZjMDZjNTRhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
CkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUGFyc2VyRXJyb3Ig
ZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9n
cmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2VD
b2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFu
YWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewogICAgICAgICB0aHJvd1ZN
RXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1
MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYz
N2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0
LDYgKzI0NSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
KyAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0
dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRl
cm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2
OGQyYjgxZTYuLjU1NzdhODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlw
ZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFT
dHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYueWFtbAppbmRleCBlMGJjM2Q1MWZiNmM3YThmMDg5YmE0ZDg3ZDRlNjRjNmE5NzBiZTUw
Li4xMWE0YmY0NjRlNjRjN2ZmMDdjZWZlNDcyMTQ5Njk0YzMyZDI4YjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC03MTksNyArNzE5LDcgQEAKIC0gcGF0aDogZXM2L0Fy
cmF5X2lzX3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9n
ZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2Vu
ZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5
X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVz
LmpzCkBAIC03MjcsNyArNzI3LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21faXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9m
dW5jdGlvbl9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRo
OiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25faW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtNzUzLDcgKzc1Myw3IEBACiAtIHBhdGg6IGVzNi9kZXN0
cnVjdHVyaW5nX25lc3RlZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJp
bmdfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5q
cwpAQCAtNzYzLDcgKzc2Myw3IEBACiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX2l0ZXJhdG9y
X2Nsb3NpbmdfdGhyb3cuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4u
b2ZfbG9vcHNfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9n
ZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9y
Li5vZl9sb29wc193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtODAz
LDU1ICs4MDMsNTUgQEAKIC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVydHlfdmFyaWFi
bGVzX2Z1bmN0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVy
YXRvclByb3RvdHlwZSUuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5yZXR1cm4u
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS50aHJvdy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Jh
c2ljX2Z1bmN0aW9uYWxpdHkuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jYW50X3VzZV90aGlzX3dpdGhfbmV3Lmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnMuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19j
b21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29ycmVj
dF90aGlzX2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25fZXhwcmVzc2lv
bnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRv
cl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzX2NsYXNz
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2Rz
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2FzdHJhbF9wbGFuZV9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmF0b3Jf
aW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX29uX25vbi1p
dGVyYWJsZXNfaXNfYV9ydW50aW1lX2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zcGFy
c2VfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfb3BlcmF0b3JfcHJlY2VkZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xvc2luZy5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvTWFwX01hcFtTeW1ib2wuc3BlY2llc10uanMK
QEAgLTExMDUsNyArMTEwNSw3IEBACiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dp
dGhfYXN0cmFsX3BsYW5lX3N0cmluZ3NfaW5fZnVuY3Rpb25fY2FsbHMuanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3Jf
aW5zdGFuY2VzX2luX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9y
X2luc3RhbmNlc19pbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYv
c3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyaWNfaXRlcmFibGVzX2luX2FycmF5cy5qcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwppbmRleCBh
OGI5YjUzY2NjZmFlMWE1YjVhNjZjMTNiZDIzZThjYWU1MjdhYWE0Li45YTgyMTMyYTYwZmMwZTc5
MTk3MmMwNDMxOGQwN2I5ZTI2MDA0YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2Jh
bCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19j
cmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8
IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRv
cikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7Cisg
IG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9u
ZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4n
XSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9Owor
aXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsg
fQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0
b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRl
cmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3NDUzOTMyNmM4OTcy
Yjc0YTc2MWZmNGQ4ZjI5YjJhNWFlODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZjMTU0NDRhM2I2NGVi
ODZlNjNjNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNl
c19vZl9pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09
ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRl
SXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsK
K2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsK
KyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0
OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFy
ci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisg
ICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJh
YmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3Jl
dHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0g
KGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0
ZXJhdG9yX2Nsb3NpbmcuanMKaW5kZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2OWFkZTQyZTgzYWVi
OGIwM2Q0Zi4uMzJkMzE3YzBiODBhZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRkZmFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaXRlcmF0b3JfY2xvc2luZy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCkBAIC0xLDMgKzEs
MjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9
IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykg
eworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0
aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgr
KzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsg
dmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3Jl
dHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9
OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rp
b24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdf
dmlhX3Rocm93LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKaW5kZXggNDRhMDY1YTk2
YTFjOWRlN2UyNmMzNjIwNmMxY2IzNjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3ZjVjZGExZjkyNDhl
OTU2YWZiYTU0MjkzODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5
cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1
bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0g
bWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1i
b2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJh
dG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNo
aWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9k
c1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFi
bGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4g
aXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAog
dmFyIGNsb3NlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5j
dGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNiY2Q5YTdlMTg4MzcwNzBjYWVlOGRmOGJjYjE2OWI3NTU1
NjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKQEAgLTAsMCArMSwzMSBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcnJheShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgc2hvdWxkQmUoYWN0dWFsLmxlbmd0aCwgZXhwZWN0ZWQubGVuZ3RoKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBzaG91bGRCZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBwcmludChKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsK
KyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworZnVuY3Rpb24g
KmdlbihhLCBiLCBjKQoreworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICByZXR1cm4gdGVzdDsKK30KKworbGV0IGcgPSBn
ZW4oMSwgMiwgMyk7CitsZXQge3ZhbHVlOiBmdW5jfSA9IGcubmV4dCgpOworc2hvdWxkQmUoZnVu
YygpLmxlbmd0aCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2NDc4ZmEyM2U0
YmUzM2FiYWFmMTQ0NzI5MmE0NTliN2I4NmQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpAQCAtMCww
ICsxLDEwNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rp
b24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7
IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
ICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0g
eWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsK
KyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1
ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIw
Ijo0MiwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIx
Ijo0MiwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0Miwi
MiI6NDJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBi
LCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAs
IDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwg
YiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAg
IHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1l
dGhvZHMtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2NWNlYjFmNDM2YzAy
ZTM2ZDhiMGFjNWJhN2RlMzI1NTU3NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4Lmpz
CkBAIC0wLDAgKzEsNDggQEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5
IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitj
bGFzcyBDb2NvYSB7CisgICAgKmNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgfQorfQorYCwgYFN5
bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3In
LmApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICAqb2soKQorICAgIHsKKyAg
ICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29j
b2EgeworICAgIHN0YXRpYyAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQor
fQorYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWY1YTU0YTJkYzQx
MjcwNzljMzFjZmQzMWY5YjMxY2Y1MGFkNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpAQCAt
MCwwICsxLDYyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitj
bGFzcyBBIHsKKyAgICAqZ2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAg
IHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICBzdGF0aWMgKnN0
YXRpY0dlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlz
OworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfQoreworICAgIGxldCBhID0gbmV3IEEoKTsK
KyAgICBsZXQgZyA9IGEuZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAg
IGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBn
ID0gbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29u
c3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30KKworeworICAgIGxldCBn
ID0gQS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBBLnN0YXRpY0dlbigpOworICAg
IH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgQS5zdGF0aWNHZW4oKScpYCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzliZDc4ZGY3NmEwY2I3NThiODFlZWFiMmMyNTViOWRhZDFiNDQ3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhp
cy5qcwpAQCAtMCwwICsxLDY1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qg
dGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwor
ZnVuY3Rpb24gKmdlbigpIHsKKyAgICB5aWVsZCBldmFsKCJ0aGlzIik7Cit9CisKK3ZhciBnID0g
bmV3IGdlbigpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcubmV4dCgpLnZhbHVlOworfSwg
YFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7
CisKK2NsYXNzIEIgeyB9CisKKyhmdW5jdGlvbigpIHsKKyAgICBldmFsKCd0aGlzJyk7CisgICAg
ZXZhbCgndGhpcycpOworfSgpKTsKKworY2xhc3MgQSBleHRlbmRzIEIgeworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IEEoKTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fu
bm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBDIHsKKyAgICAq
Z2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHlpZWxkIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9
CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcg
PSBuZXcgYy5nZW5lcmF0b3IoKTsKKyAgICBnLm5leHQoKTsKK30sIGBUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYy5nZW5lcmF0b3IoKScp
YCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0g
Yy5nZW5lcmF0b3IoKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYyk7Cit9KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk2YWU1
ZmQxOWY5ZDhjOGIwOGRlNmIwZWQ2YTViYWU3NWFmZGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMKQEAgLTAsMCArMSw5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1bmN0
aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0b3JG
dW5jdGlvbiwgJ3VuZGVmaW5lZCcpOwordmFyIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSAoZnVuY3Rpb24gKigpIHsgfSkuY29uc3RydWN0b3I7CitzaG91bGRCZShnZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoZ2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY3
NzM2YzQyMzRlMTg3OTEwYjhjYTYzNTNjYmY0NWIwZDYwMDZiOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5h
bWUuanMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBvayA9IGZ1bmN0aW9uICpnZW5l
cmF0b3IoKQoreworICAgIHlpZWxkIGdlbmVyYXRvcjsKK307CisKK3ZhciBnID0gb2soKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVm
b3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEyMTdmNzJjODdjMDg5OGU1OTA5YWJh
ZjM4NWJmMjA4OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCww
ICsxLDEyIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9y
KCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQor
Cit2YXIgZyA9IGdlbigpOworZy5yZXR1cm4oIkhlbGxvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ODBhZjZlMDc4OWRjMThiYmFkM2EwYWZiYmY1YWQ5YTg1ZWMxMzVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpA
QCAtMCwwICsxLDY3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworCit2YXIg
Z2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCBnbG9iYWwpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAg
ICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFi
bGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAg
ICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVs
ZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAg
ICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nl
c3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQg
dGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOwor
ICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVhYzBkOWEzZTQxODc5ZWRkZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93
LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHVucmVhY2hh
YmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4o
KQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2YXIgZXJyb3Ig
PSBuZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhyb3duID0gbnVsbDsKK3RyeSB7CisgICAgZy50aHJv
dyhlcnJvcik7Cit9IGNhdGNoIChlKSB7CisgICAgdGhyb3duID0gZTsKK30KK2lmICh0aHJvd24g
IT09IGVycm9yKQorICAgIHVucmVhY2hhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGQzYjJkZjk5YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2ZWFiOGRiNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVu
Y3Rpb24gKmdlbigpCit7CisgICAgeWllbGQgbmV3LnRhcmdldDsKK30KKwordmFyIGcgPSBnZW4o
KTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworCit2YXIgZzIgPSBuZXcg
Z2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1
cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNiZjhkNmM4OTc3
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIHJldHVybiBldmFsKCdzdXBlcicpOworICAgIH0KKworICAgIHNob3VsZFRocm93
KCgpID0+IHRlc3QoKSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBm
dW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAg
ICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gZXZhbCgnc3VwZXIuZ2VuKCknKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBh
ID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGEuZ2VuKCkubmV4
dCgpOworICAgIH0sIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVu
Y3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAg
ICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgeWll
bGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7
CisgICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJl
dHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAg
ICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBlZDU2Njg4YTZh
Mjk4Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3Igewog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgZm9y
RWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yRWFjaFNldEJp
dChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQg
biA9IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyAr
K2kpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZmMTIwMTNjNjQ4
Li5mNDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQCB0aGUgcHVibGljIGlPUyBTREsuIFdlIHdp
bGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUgRmVhdHVyZURlZmluZXMueGNjb25maWcgZmlsZQog
I2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUg
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIDAKKyNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEK
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRk
YTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBA
QCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9
IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRB
WCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOwor
RU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VT
Nl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJM
RV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcg
PSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNi
NTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFi
NzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVO
QUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0g
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01P
RFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIz
MGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2
ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9Y
WSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVO
Q1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNT
X1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9S
UyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJM
RV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklM
VEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5
MjVhNzBhYjQ3YzYzZTNjLi4wMmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQ
VUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBV
QkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1
cmVzLmNtYWtlCmluZGV4IGQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQu
LjAwZWRiYzAxM2JmZjY2ZjdhMDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0
RmVhdHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJ
TikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJT
dXBwb3J0IEVNRSB2MiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBz
eW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xlIEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJ
VkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMg
IlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9y
cyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9F
UzZfTU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgg
IlRvZ2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJhbCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUg
RmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODVmYjQxYzViMzI4MDM5OWEzNmY0N2E2
YjI4NWJlOTU2OGViMmMwMC4uMzZiY2IxYzBkMGJkMmZiYTVjYTUyYTZkOTE5NWQ0ZDgxMDkyMWZj
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0
IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG06CisKIDIwMTUtMTEtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRlYWNoIE1pbmlCcm93c2VyIGhvdyB0byBlbmFibGUgdGhlIG1vY2sg
Y29udGVudCBmaWx0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRl
eCBjZGViNTI1Y2Y5NGI1YThlMTIxYmEyNGUzNzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNj
NTMyOTliYzI3MWQ5Yjc3Zjc0OGFkMzA3MDVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCkBAIC0xODUsNyArMTg1LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVgiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NT
eW50YXggfSwKIAogICAgIHsgb3B0aW9uID0+ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xl
IEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dF
TkVSQVRPUlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwK
KyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2
YWx1ZSA9PiBcJGdlbmVyYXRvcnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxl
cyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgbW9kdWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX0VTNl9NT0RVTEVTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNT
dXBwb3J0IH0sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzlhNmJj
ZjY3NTRlMGYxNTEzZWQ2OGUxNGE4YjA5MDE4MjI0NDhhYS4uMGQ3ZGU0ZWIwOGM5ZjBlMzQ5NTEz
YzkxZTA2NmM2Y2RkNWJlMWI3OSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2U6CisKIDIwMTUtMTEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgTkVUV09SS19QUk9DRVNTIGNvbXBpbGUgZmxhZwpk
aWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9D
aGFuZ2VMb2cKaW5kZXggMGM4YWYyYWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4u
YTYyMzM3YjczZmQ2Yzg5NzcyYzZjZmEwMTY2OGY4MjFhMzMwZThhMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBv
cnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3Bz
L0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1
cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxu
aWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRk
IHJ1bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlv
bnMgQVBJIGFuZCBtb2RlbC4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJl
NGRmYTc5MjlkN2UzM2NjZGNmLi5iMDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4
OGVkIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4K
ICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
PC9FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMg
Lz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5B
QkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFC
TEVfRklMRV9TWVNURU0gLz4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFm
MTU4ZWM1ZWU0ODNkMDY5NmM3MWNlNDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2
OWExYTk4MzUzODBhOCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAK
ICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0g
ICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+
RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJM
RV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFY
PkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266060</attachid>
            <date>2015-11-22 11:40:08 -0800</date>
            <delta_ts>2015-11-22 13:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123043952.patch</filename>
            <type>text/plain</type>
            <size>301289</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi5mYjI0Mjk0MTRjNTFmMTkx
NTE1ZDVjZTVkY2EzN2RlNTU2OTI3MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDM1IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisJCQlodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAgICAgICAgVG8g
ZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5nIGRlc2lnbi4K
KworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZlL3Jlc3VtZSBw
b2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3JpbmcgaW5zdHJ1Y3Rp
b24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0gdG8ganVtcCB0
byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50cnkgcG9pbnQg
dG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2VzIGlubGluaW5n
IGVhc3kuCisJCVRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBmb2xsb3dpbmcuCisKKwkJ
CWZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdl
bmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKwkJCXsKKwkJCQlzd2l0Y2ggKEBn
ZW5lcmF0b3JTdGF0ZSkgeworCQkJCWNhc2UgQ29tcGxldGVkOgorCQkJCQlvcF9yZXN1bWUoKTsK
KwkJCQkJcmV0dXJuIC4uLjsKKworCQkJCWNhc2UgRXhlY3V0aW5nOgorCQkJCQlvcF9yZXN1bWUo
KTsKKwkJCQkJdGhyb3cgLi4uOworCisJCQkJdHJ5IHsKKwkJCQkJY2FzZSBJbml0aWFsOgorCQkJ
CQkJLi4uCisJCQkJCQlpbml0aWFsIHNlcXVlbmNlLgorCQkJCQkJLi4uCisKKworCQkJCQkJb3Bf
c2F2ZShZaWVsZF8wKTsKKwkJCQkJCXJldHVybiAuLi47CisKKwkJCQkJY2FzZSBZaWVsZF8wOgor
CQkJCQkJb3BfcmVzdW1lKCk7CisJCQkJCQlpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhy
b3cpCisJCQkJCQkJLi4uCisJCQkJCQllbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBS
ZXR1cm4pCisJCQkJCQkJLi4uCisJCQkJCQkuLi4KKwkJCQkJCXNlbnRWYWx1ZSA9IEBnZW5lcmF0
b3JWYWx1ZTsKKwkJCQkJCS4uLgorCQkJCQkJb3Bfc2F2ZShZaWVsZF8xKTsKKwkJCQkJCXJldHVy
biAuLi47CisKKwkJCQkJY2FzZSBZaWVsZF8xOgorCQkJCQkJb3BfcmVzdW1lKCk7CisJCQkJCQlp
ZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cpCisJCQkJCQkJLi4uCisJCQkJCQllbHNl
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4pCisJCQkJCQkJLi4uCisJCQkJCQku
Li4KKwkJCQkJCXNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1ZTsKKwkJCQkJCS4uLgorCisJCQkJ
CS4uLgorCQkJCX0gZmluYWxseSB7CisJCQkJCS4uLiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKwkJ
CQl9CisJCQl9CisKKwkJCVJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorCQkJVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUg
cmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1l
IGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2Vu
ZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0
ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFp
bnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5n
IHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNh
dmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUg
dXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICAz
LiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVmb3JlIGdlbmVy
YXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHNob3VsZCBi
ZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZvciBleGFtcGxl
LAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAgICAgICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0gZ2VuKDIwKTsg
IC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBlbmFibGUgdGhp
cywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwgYW5kIGFmdGVy
IHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAgICAgICBUaGlz
IGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4KKworICAgICAg
ICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0
b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAgICAocmV0dXJu
KToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bnVtQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjph
ZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToKKyAgICAgICAg
KEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2Fj
aGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6
cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJyb3dGdW5jdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzdXBl
ckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZMaXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtl
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yQ29t
cGxldGVkTGFiZWwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1p
dEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZlQ2VsbCk6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNv
bW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3Vt
ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
aDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVs
ZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9u
U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6aGFzQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0SXNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpz
ZXRJc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFy
c2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6aGFzaCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OnN0cmluZyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhD
aGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVlpZWxkKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAgICAgICAqIHJ1
bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJs
ZUZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6
c3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9
PSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVnaXN0
ZXJBdCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZlJlZ2lzdGVycyk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZlJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yUmVnaXN0ZXJzKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpHZW5lcmF0b3JQcm90b3R5
cGUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yVGhpcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1w
bCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNp
emUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0
ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2dlbmVyaWNfaXRlcmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAg
IChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9i
amVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5j
ZXNfb2ZfaXRlcmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChp
dGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVj
dCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9j
bG9zaW5nLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAg
ICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3Zp
YV90aHJvdy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGcxKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3RTeW50YXgpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3RT
eW50YXhFcnJvci5Db2NvYSk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hLnByb3RvdHlwZS5v
ayk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29j
b2Eub2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChwcm90b3R5cGUuZ2VuKToK
KyAgICAgICAgKHN0YXRpY0dlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKEIpOgorICAgICAg
ICAoQSk6CisgICAgICAgIChDLnByb3RvdHlwZS5nZW5lcmF0b3IpOgorICAgICAgICAoQyk6Cisg
ICAgICAgIChUeXBlRXJyb3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKG9rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1i
ZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAg
ICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAg
IChnZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAg
KHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQik6
CisgICAgICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQSk6CisKID09IFJvbGxlZCBv
dmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIxID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgwYTU3OTRjMDZmNGZhYjA5ZmYw
M2E2NDE3ODBlM2YyNmFjM2FkOGQuLjE3YjdlMTU3ZjBjNmM2OWM3YzQ4NjVhYTAwNzY3MzIyYWQ2
NzFlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jh
c2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9G
YXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmZvckVhY2hTZXRC
aXQpOgorICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE1LTExLTE4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBU1NFUlRJT04g
RkFJTEVEOiB0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgPT0gJy8nIGluIFdlYkNvcmU6Om9wZW5U
ZW1wb3JhcnlGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDc0Njk4ZGNhMGJhYmVmNzQyN2RkMzIxMGIx
YzY1NjJiZDc1NDQ4Li45ZTI4ZGE3ZmZmNWNkODVkYTFmYmFmYWYzZGMwZWVhNmQ5YzdlNjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jh
c2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIyICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBNaW5pQnJvd3NlciBob3cg
dG8gZW5hYmxlIHRoZSBtb2NrIGNvbnRlbnQgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2I5
OWY0ODgxOTFjYTIzMDYxZWQyMGQ3OGU4NzEzMzFkNDUxZTQ2MC4uMDYxZWMwYTAwZGY1N2NiNWUx
MzQ4MzFjZTk0NjU5OTZkNzY1Yzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSArMSwxMCBAQAor
MjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVy
YXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWc6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIxID09CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggY2U2Mzc4ODcyNjI4NGMwYmEzZjE1YzhhM2I1OWNjMWY3YjE2MGQzYy4uZThhOWJl
YzI3YjY4N2M4M2I4YWM1MzcyMDQ1N2JhZTk0MTMyYzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBF
UzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG1pc3NpbmcgaW5zcGVj
dG9yIGZpbGUgdG8gR1RLKyBjb21waWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1NjcmlwdFJlZi5jcHAKaW5kZXggM2I3Yjc2YmYzYTQ0NGM5MjFiZTk3M2M1NzZjMTlmNjkyZThk
MjMyZC4uMmYzNzQyMzAwOTdiNTA4MjU4M2Y4NDQyN2I5MjU3OTM3ZDMwOTMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cnNlckVycm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3Jh
bU5vZGU+KAogICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCAKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBlZDMwZmZlMzBjOTIyZThkZjQwNzcxOWQzNjQ3NWI2YjYxMWU4Mjk2
Li5kNzA3ZTMzYmQzMWExMDAzYzc1MWM3ZDg4YjBlNzAwNDFlY2NkNWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjMsNiArNTYzLDEwIEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorICAgIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmll
ci5jcHAKICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTYwMiw2ICs2MDYsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0RhdGVNYXRo
LmNwcAogICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogICAgIHJ1
bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAg
LTczNyw2ICs3NDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAg
ICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTExOTUsNiArMTIwMSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1
NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BS
T1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dG
VU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xB
U1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFU
T1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDJmNjVkYjU1YTFlZWQzNjQ5Y2ZlMzNkNzhiOTI2YzYyNTEzYTlmNjguLmZkZTU3ZTkzOGRiZDRm
YTJkYmU1YzE0ZDdiYzhmYmUxMTUxNzAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC04NCw2ICs4NCw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5T
X1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRv
ci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5LnBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb24ucHJv
dG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3IuUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9iYWxPYmplY3Qu
anMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVDVF9MVVRfSEVB
REVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQcm90b3R5cGUu
bHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBcCiAg
ICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xsYXRvclByb3Rv
dHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAz
ZTdmOTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi4xODkxMTk0NzkxZmIyZDA3
NWRiYWY3YjE1ODdmZmM4M2U2M2JjNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVDb25zdHJ1Y3Rv
ci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlw
ZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsxNjA4LDExIEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblBy
b3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlv
blJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0LmgiIC8+CkBA
IC0xNjYwLDYgKzE2NzIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0Zsb2F0MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0Zsb2F0NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0Z1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCmluZGV4IGE2ZDNmZjAwZTI1MDNhY2JjMzY3OTBhMzZlNmVlNDM3YTkz
NGJmYTguLjI3Y2MzNmRiYjE0OTA1NDhkMjg4NTFkMzAzYTk5Nzc2OWRhMDJjZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY2Niw2
ICs2NjYsMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25S
YXJlRGF0YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1l
LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVy
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTc0Nyw2ICs3NTksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0Z1bmN0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTI2MTIsNiArMjYyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJc
U291cmNlQ29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5o
Ij4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgxMyw2ICsyODMx
LDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURh
dGEuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpcy5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yOTE4LDYgKzI5NTEsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMyODIsNiArMzMxOCw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0
LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xH
ZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlZDc0OTE2Y2NjYzI2ZWQzZDg2NGRiZDUwZjBkOTE2MzM5MzBhZTEz
Li4yN2RlNDU5NmE0YmJhOTliNGNiNmM2MzUwYjYwZDcyYjJkN2UyOWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMyw2ICsxMjAzLDE5IEBACiAJCTcwOUZCODZCMUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDEx
QTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRp
bWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAy
NDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OworCQk3
MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgKi87IH07CisJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzBCNzkxOTgxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4OTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTkxQzAy
NEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QjFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBK
U0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUQxQzAy
NEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87
IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDgxQjJE
RjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8q
IExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07
CkBAIC0xOTYyLDggKzE5NzUsOCBAQAogCQlGRTBENEEwOTFBQkEyNDM3MDAyRjU0QkYgLyogR2xv
YmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxD
b250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OwogCQlGRTEyMjAyNzFCRTdGNThDMDAz
OUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJh
dG9yLmggKi87IH07CiAJCUZFMTIyMDI4MUJFN0Y1OTEwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
MjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi87IH07Ci0JCUZF
MTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhC
QkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAo
KTsgfTsgfTsKLQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMDAx
QkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07CisJCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxH
ZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IH07
CisJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTAwMUJGQkM3M0Mw
MDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAw
QjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIx
OTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlv
bi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlC
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKQEAgLTMyNjcsNiArMzI4
MCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIw
QTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9y
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODUxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg5MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvclRoaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Vu
ZXJhdG9yVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QzFDMDI0
NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RTFDMDI0NEM5
MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJhdG9yLnByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkgLyogSXRl
cmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0
b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBERTlBMDgxQkU3
RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTA3Nyw2ICs1MTA0LDcgQEAKIAkJCQk5OTZCNzMwODFCRDlGQTJDMDAzMzFCODQgLyogRGF0ZUNv
bnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRl
UHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJv
clByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAv
KiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVBNzEwRDE5RjZERjgxMDA5OEY1RUMg
LyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBAIC01MjA1LDYg
KzUyMzMsNyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmgg
Ki8sCiAJCQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3BwICovLAog
CQkJCTY1RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VDb2RlLmggKi8sCisJCQkJNzBC
NzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLywKIAkJCQkwRjQ5M0FG
ODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovLAogCQkJCTY1RTg2NkVE
MERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICovLAogCQkJCUU0OURDMTU1MTJF
RjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLywKQEAgLTUzMzQsNiAr
NTM2MywxNSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3Rv
dHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVE
YXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJl
RGF0YS5oICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5jcHAgKi8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEI3OTE4ODFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJCQk3
MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJ
CQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8sCisJ
CQkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCAqLywKIAkJCQkw
RkUwNTAxMTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBG
RTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAog
CQkJCTBGRTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01
NDMzLDYgKzU0NzEsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0
aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5o
ICovLAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
ICovLAorCQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcCAqLywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5oICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8s
CkBAIC02NTQxLDYgKzY1ODEsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBC
dWlsdGluTmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRp
blV0aWxzLmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uLnBy
b3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9y
LnByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVEOUEzMDA5REIxRUYgLyogR2xvYmFs
T2JqZWN0LmpzICovLAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2
IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLApAQCAtNjk1Miw2ICs2OTkzLDcg
QEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlB
MkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUx
MTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJD
MTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDAx
LDYgKzcwNDMsNyBAQAogCQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1
cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2
MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVu
a3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3
RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLApAQCAtNzIyMSw2ICs3MjY0LDcgQEAKIAkJCQlBNTBFNEI2MjE4ODA5REQ1
MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMy
QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzI0Nyw2ICs3MjkxLDcgQEAKIAkJCQk3MDEx
M0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBG
QjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5o
IGluIEhlYWRlcnMgKi8sCkBAIC03MzkwLDYgKzc0MzUsNyBAQAogCQkJCTFBMjhENEE4MTc3Qjcx
QzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzQyNiw2ICs3NDcyLDcgQEAKIAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAz
OEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MzE3
MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRl
cmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEg
LyogTGl2ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU2MUI3OTRGOEYw
MEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTk4LDYgKzc2
NDUsNyBAQAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNh
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3Jp
cHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5
REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTc2MzAsNiArNzY3OCw3IEBACiAJCQkJQkMxOEM0NkEwRTE2
RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
Mzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICov
LAorCQkJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVj
dHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2NDcsNiArODY5Niw3IEBACiAJCQkJQTFC
OUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3
OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZFMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04NjczLDYgKzg3MjMsNyBAQAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQyQjE1QThD
QzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVD
MjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzcxMkUyMTdDRDg3OTEw
MDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBw
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODEwLDYgKzg4NjEsNyBAQAogCQkJCTE0MkQ2RjA4
MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRo
Q29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAv
KiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk1Niw2ICs5
MDA4LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1hdHQu
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZf
c3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYg
LyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJs
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0QkY0QiAvKiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5NjQsNiAr
OTAxNyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJD
MUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBC
NzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgxNmI0YTVkMzBiNTIwYjVkMWRmZWFl
YWIyZjkzOTRjNjhiZGMwYTMuLjQ4ZWY3ZmYzYThlYmE2YjQ1ODk2OTIyYzE3ZDY0YjEwNTE0Yzk5
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0Rl
ZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAg
ICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAotICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsCiAg
ICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAg
ICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJp
YWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5h
bWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcxMGIyODhiMjFmN2Yz
Nzc5ZjIzYWU5YmYyZDE1ZjNhOWMzMDg5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
ZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
dGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlz
LkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1v
ZGUgKi8gMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4dC5AY2FsbCh0aGlzLkBnZW5lcmF0
b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwgdmFsdWUsIC8qIEdlbmVyYXRvclJl
c3VtZU1vZGU6OlJldHVybk1vZGUgKi8gMSk7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlv
bikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5AZ2VuZXJhdG9yTmV4
dC5AY2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCB0aGlzLkBnZW5lcmF0b3JTdGF0ZSwg
ZXhjZXB0aW9uLCAvKiBHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUgKi8gMik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5k
ZXggMjk5MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFjNjJlOC4uNWU2ZDU5ZGYxMjdk
MmJlN2QyZDEzMmNkMzMwZjNhN2I4YmYyN2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVu
Y19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwi
LCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIs
ICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0KKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CmluZGV4IGE2MTMyYzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4ODZlNWQ2NjY4NDUuLjM3NDM2YzAx
NTY1NDllOWY3YzAxZGM0MWEwMmVlM2RkOGI1YWZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw4ICs3MCw5IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxsOgogICAg
IGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfaW5jOiAK
LSAgICBjYXNlIG9wX2NvcHlfcmVzdDogeworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ugb3Bf
Y29weV9yZXN0OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6
CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVu
Y19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNh
c2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU0LDcgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgog
ICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAg
Y2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czogewpAQCAtMjMzLDYgKzIzNiwxNCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHVu
c2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI1NSw2
ICsyNjYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHJvZmlsZV9k
aWRfY2FsbDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vy
cm9yOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9w
X2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzE1LDYgKzMyNyw4IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1
bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CkBAIC0zOTAsNyArNDA0LDE1IEBAIHZvaWQgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1WYXJz
OyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm47Ci0gICAgfSB9CisgICAgfQorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGQoaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hT
ZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCku
b2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBmY2E2MzAxNDkxODI2YmVlMTAwMTI0YzJmNmFlNDJmMThkZWY5
OWVlLi4zYzEyZGI4YTc2ZTM0OGI5NzRiMDdhNjQyODNiOTIzOWVlZTFkZTIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI5NCw2ICsxMjk0
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVu
YyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzE5LDE0IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJv
ZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2ICsx
NTE1LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2lu
dEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJzYXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5h
bWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAg
ICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9y
KS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNv
bmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytp
dCktPnUub3BlcmFuZDsKQEAgLTE3MjAsNiArMTc1MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNB
dFlpZWxkOwogICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7
CkBAIC0xODc1LDYgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAg
ICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5udW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkpIHsKKyAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpXSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBieXRlY29kZQpA
QCAtMzA0OSw2ICszMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01v
ZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAg
ICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1Rv
Rml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNh
dXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFi
bGVzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4
IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMuLjFhMGI5OGYwY2RiMmMx
NWQ2MDAyYWZjNDlhNDJhZGJhMDNiZGIwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgor
I2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJz
OyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBpbnQg
bnVtQ2FsbGVlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVSZWdpc3RlcnM7
IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBh
cmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0K
IApAQCAtNjU0LDYgKzY1NywxMCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3
aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRh
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4
XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAg
ICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVj
dG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBSRUxFQVNF
X0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lz
dGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hl
KCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2
YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC05MDAsNiArOTA3LDgg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1w
bGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0
Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOworCiAgICAgICAgIEV2YWxD
b2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3ZDRl
YWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBmOGJl
ZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29k
ZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2Fj
aGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVL
ZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0
IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRh
YmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxT
b3VyY2UsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJj
ZSwgc2NvcGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NhY2hlTWFwLmdldChldmFsU291
cmNlLmltcGwoKSkuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlm
IChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBT
b3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNv
ZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtX2NhY2hlTWFwLmdldChzb3VyY2VDb2RlS2V5KS5nZXQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU3Ry
aW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3Vy
Y2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmly
b25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZh
cmlhYmxlc1VuZGVyVERaKHNjb3BlLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4
ZWMsIG1ha2VTb3VyY2UoZXZhbFNvdXJjZSksIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUs
ICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4
ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAg
ICBpZiAoIWV2YWxFeGVjdXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUo
aW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkg
PCBtYXhDYWNoZUVudHJpZXMpCi0gICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNv
dXJjZS5pbXBsKCksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3du
ZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJp
Y3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhD
YWNoZUVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29udGV4dCk7
CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxTb3VyY2Us
IFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpNb2RlKTsK
KyAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChzb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJp
ZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gZXZhbEV4ZWN1
dGFibGU7CiAgICAgICAgIH0KQEAgLTgwLDE3ICs4NywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBz
Y29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9v
bCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2Nv
cGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0
Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBh
Y2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBjYW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAg
ICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNj
b3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAgICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RD
b250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25z
OjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpIAorICAgICAgICAgICAgICAgICYm
IHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJjZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhp
bXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpCiAgICAgICAgICAgICAgICAgJiYgaXNDYWNo
ZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBt
YXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7Cisg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwgU291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2
YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRl
eCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi4zNWJmN2RmYjU5YWE2
Zjk4OWE5MzQ1NjkwYzY5OGM2Y2M2ZDgyMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVm
IEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAi
R2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCisvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlv
biB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KKy8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVz
ZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JU
aGlzIGdlbmVyYXRvclRoaXMsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0
aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisg
ICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JU
aGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVu
Y3Rpb24pCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1
cGVyQmluZGluZykpCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKTsKKyAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKKyAgICAgICAgQVNTRVJUKG1fZ2VuZXJh
dG9yVGhpcyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpcykpOwogICAgIH0K
IAogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0FjdGl2
YXRpb247IH0KQEAgLTQ4LDggKzU1LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJC
aW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2NiwxMCBAQCBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25l
ZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24g
OiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpcyA6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
KyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0Yjli
NTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li4zYzMxOWQwNmUzOTk3ZWRlZjNkMzI3
ODdiOWI5MzcyZmZlMjcxYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY1LDEwICs2NSwxMiBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwg
bV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JL
aW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkK
KyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0
b3JUaGlzKCkpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
Zm8uc3VwZXJCaW5kaW5nKCkpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNv
dW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2RlKGlu
Zm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBlKGNv
ZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMxNTZh
N2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi5lMWIwOTViNmFkNjUyZTAwODdkOWE1MzI3
MTc1ODE4MGNmNjc2OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgi
CkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJl
Z2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYsNyAr
MTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9Cisg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
OyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJh
dG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1fZ2Vu
ZXJhdG9yVGhpcyk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAogICAg
IHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIyMyw2ICsyMjcsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9jb25zdGFudEJ1ZmZlcnMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNocmlu
a1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDQsNiArMjQ5LDExIEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAK
KyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgorICAgIHNpemVf
dCBudW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgp
IDogMDsgfQorICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFzdEJp
dFZlY3RvciB2ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9CisgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGluZGV4
KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRlY2wo
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG4pCiAgICAgewogICAgICAgICB1bnNpZ25lZCBz
aXplID0gbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsKQEAgLTM4NywxMiArMzk3LDE0IEBAIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9oYXND
YXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1f
aXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwor
ICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RM
aW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1u
OwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBt
X2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKQEAgLTQzNiw2ICs0NDgsOCBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0
b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAg
VmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7
CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0aW9u
PiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYu
LmRjNmQ4NjVmODIzNTcxMDZkZWY3ZDRjYTU1M2IyOWQ3NTA3ZmI5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
CiBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgIFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUsCi0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJF
cnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVuY3Rpb25L
aW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBB
U1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25O
b2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBlcnJvciwgbnVsbHB0cik7
CisgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5k
aW5nKCksIGVycm9yLCBudWxscHRyKTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9u
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBG
dW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2
YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwg
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24p
KTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBm
dW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwg
ZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMo
KSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2Vu
ZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0
ZSgpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJj
ZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmly
b25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9y
VGhpcyBnZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+
aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAt
OTksNyArOTksOCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9jb25zdHJ1Y3RB
YmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rvcktp
bmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAs
IG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5l
cmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKKyAgICAsIG1f
c3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmcoKSkp
CiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBAIC0xODAsNyArMTgxLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBEZWJ1
Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dpdGNoIChz
cGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2LDcgKzE5
Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgICAgIHZt
LCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlzQXJyb3dG
dW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlmIChlcnJv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li44YjgyNzFh
NmMzZjZjYzVkMjE5ZDQ2OWMxM2RlNTYzZjNiM2YyYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29u
c3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC02NSwxMCArNjYsMTAgQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
IAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIp
CisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52
aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5s
aW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3Zl
KHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFi
aWxpdHksIGdlbmVyYXRvclRoaXMsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKICAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
ICAgICB9CkBAIC04Miw2ICs4Myw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVu
Y3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1
bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2lu
ZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CisgICAgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmlu
ZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9u
TmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9
CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJvb2wpOworICAgICAgICBQ
YXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAK
QEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0
cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsg
fQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAK
IHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzLCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBA
IC0xNTgsNyArMTYwLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rp
b25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rp
b24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpcyA6IDE7CisgICAgdW5zaWduZWQg
bV9zdXBlckJpbmRpbmcgOiAxOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI5MzcwYzhkMjg0YTM4NGYyMWUwZTc4OTI2
ODU0NWM5MmIxOTgyM2IuLjNjZjBiN2FmYWZlZjllNTg2ZGUwMDZhY2VkMmM4Nzk3MzgyZWI4NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtMjAxLDcgKzIwMiwxMCBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBh
aXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CiAgICAgLy8gY29tcGF0
aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2RpZF9j
YWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
ODE5Ci0gICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFp
c0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCisgICAg
Ly8KKyAgICAvLyBJbiBhIGNvbnRleHQgb2YgYSBnZW5lcmF0b3IsIGFsbCB0aGUgY2FsbHMgY2Fu
bm90IGJlIHRhaWwgY2FsbHMgYmVjYXVzZSBhbGwgdGhlIHJlc3VsdHMgd2lsbCBiZSB3cmFwcGVk
IGFzIGFuIGl0ZXJhdG9yIHJlc3VsdC4KKyAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisgICAgLCBtX2luVGFpbFBv
c2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgp
ICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgJiYgcGFyc2VNb2RlKCkgIT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3Rl
ciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3Rl
ciA9IG51bGxwdHI7CkBAIC0yMjcsOSArMjMxLDMzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKTsKICAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRz
QXJndW1lbnRzID0gZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpOworCisgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMi
LiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5l
cmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CisKKyAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92
aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92
aWRlcyAiYXJndW1lbnRzIi4KKyAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBv
ZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KKyAg
ICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFz
IGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5j
ZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICAvLworICAgICAgICAvLyAgICBmdW5jdGlv
biAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAvLyAgICB7CisgICAgICAgIC8vICAgICAg
ICByZXR1cm4geworICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlv
biAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0
b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIHsKKyAgICAgICAgLy8gICAgICAg
ICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNl
IHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCisgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAvLyAgICAgICAgICAgIH0KKyAgICAgICAgLy8gICAgICAgIH0KKyAgICAgICAgLy8g
ICAgfQorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9
CisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzKQogICAgICAgICBmdW5jdGlv
bk5vZGUtPnZhckRlY2xhcmF0aW9ucygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAg
ICAgCkBAIC0yNTQsMTQgKzI4Miw0NSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGFs
bG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRl
eChKU1N0YWNrOjpDYWxsZWUpOwotICAgIAorCisgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFy
YW1ldGVycyk7CisKKyAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1p
dCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5l
cmF0b3IncyBzdGF0ZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSkgeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7Cisg
ICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX3BhcmFtZXRlcnNbMV0pOwor
ICAgICAgICBpZiAoZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6OkVtcHR5KQorICAg
ICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisKKyAgICAgICAg
Ly8gSnVtcCB3aXRoIHN3aXRjaF9pbW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24n
dCB0YWtlIHRoZSBjb3JvdXRpbmUgc3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgLy8gV2hlbiBjYWxsaW5nIGBuZXh0KClgLCB3ZSB3b3VsZCBsaWtlIHRvIGVudGVyIHRo
ZSBzYW1lIHByb2xvZ3VlIGluc3RlYWQgb2YganVtcGluZyBiYXNlZCBvbiB0aGUgc2F2ZWQgaW5z
dHJ1Y3Rpb24gcG9pbnRlci4KKyAgICAgICAgLy8gSXQncyBzdWl0YWxlIGZvciBpbmxpbmluZywg
YmVjYXVzZSBpdCBqdXN0IGlubGluZXMgb25lIGBuZXh0YCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBiZWdpbkdlbmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOwor
CisgICAgICAgIC8vIENvbXBsZXRlZCBzdGF0ZS4KKyAgICAgICAgLy8gV2UganVtcCB0byB0aGUg
bV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCBpbW1lZGlhdGVseSBiZWNhdXNlIHdlIGNhbm5vdCB1
c2UgYW55IHRlbXBvcmFyeSByZWdpc3RlcnMgaGVyZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKKyAgICAgICAgbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgICAgIGVtaXRKdW1wKG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0KCkpOwor
CisgICAgICAgIC8vIEV4ZWN1dGluZyBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRl
TGFiZWwoKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0
aW5nIik7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRp
bmcpKTsKKyAgICB9CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNT
RVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAg
ICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJs
b2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9v
bCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8
fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNj
b3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1
cmVkKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5n
cykgewogICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAg
ICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9u
J3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcx
LDE5ICszMzAsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgaW5pdGlh
bGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAg
IH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Yg
b3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVl
ZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJh
bWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3Ro
aXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsg
Ly8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0g
ICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0
ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAg
IAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJn
dW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAg
IGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1
MjIsMzUgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICB9CiAKICAgICBtX25ld1Rhcmdl
dFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1Ro
aXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0TG9hZEFycm93
RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAg
ICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAgIC8vIEZJWE1FOiBF
bWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAgICBtX2NvZGVC
bG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OworICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisKKyAgICAgICAg
ZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAg
ICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAg
ICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KKyAg
ICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGlzQ29uc3Ry
dWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1f
dGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTY2LDggQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0
ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIo
KSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFs
dWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03OTksNiArODcy
LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpCiAgICAgcmV0dXJuICZwYXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91
ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgIC8vIG5lZWRp
bmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1l
dGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV90aGlz
UmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8v
IHRoaXMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0OworICAg
ICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0UGFyYW1ldGVy
ID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KK30KKwog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwpAQCAtODU1LDYgKzk0NCwyMSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3VGVtcG9yYXJ5KCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJz
KCkKK3sKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIEZhc3RCaXRWZWN0b3IgdmVj
dG9yOworICAgIHZlY3Rvci5yZXNpemUobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICBz
aXplX3QgaSA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZVJl
Z2lzdGVycykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICB2ZWN0
b3Iuc2V0KGkpOworICAgICAgICArK2k7CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisK
KwogTGFiZWxTY29wZVB0ciBCeXRlY29kZUdlbmVyYXRvcjo6bmV3TGFiZWxTY29wZShMYWJlbFNj
b3BlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUpCiB7CiAgICAgLy8gUmVjbGFp
bSBmcmVlIGxhYmVsIHNjb3Blcy4KQEAgLTIzMTIsMTIgKzI0MTYsMTIgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQg
bGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdp
c3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0
ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVn
aXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0
dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1NzUsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgog
ICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxv
Y2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3Rl
cklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJl
Z0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU4
MywyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdp
c3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3Qs
IEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBk
c3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0g
ICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFr
ZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19m
dW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2Rl
SUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9w
Y29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVt
aXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMjUxMiwxNyArMjYxNCwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rp
b25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJU
KGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yIHx8IGdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAg
ICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rp
b25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAgIGVtaXROZXdG
dW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQog
CkBAIC0yNTQwLDYgKzI2NDMsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0
aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQorewor
ICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVu
Y3Rpb24oZnVuY3Rpb24pKTsKKyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9w
X25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25l
d19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50
cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQog
ewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNzY2
LDYgKzM4ODIsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1cm4gZHN0Owog
fQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2
YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxsQXJndW1lbnRz
IG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0TW92ZShuZXh0
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRNb3ZlKG5l
eHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2Fs
bChkc3QsIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICB9
CisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7
CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0
KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJ
TGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsK
KyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVy
biBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJl
Z2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
IHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzg0Miw0ICszOTc2
LDI0NCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3RQYXJhbWV0ZXIo
UmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLnNpemUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yUmVzdWx0ID0g
ZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGFyZ3VtZW50LCBmYWxzZSk7CisgICAgaW50
MzJfdCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0T3Bjb2Rl
KG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVy
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVy
c0luZGV4KTsKKyAgICBlbWl0UmV0dXJuKGl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKworICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICBl
bWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgUmVmUHRyPExhYmVs
PiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRp
dGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1
ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJl
bD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0
ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAvLyBSZXR1cm4u
CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBlbWl0
TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpLCB0cnVl
KTsKKyAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJu
UmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkp
OworICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAg
ICB9CisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAg
ICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIC8vIFRo
cm93LgorICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhyb3coZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgIC8vIE5vcm1hbC4KKyAgICBlbWl0TGFiZWwo
bm9ybWFsTGFiZWwuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCk7
Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByZXZpb3VzID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1p
dExvYWQocHJldmlvdXMuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAgIHsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFy
Z3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgICAgICB7CisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAg
ZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnQpOworICAgICAgICAgICAgZW1p
dENhbGwoaXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGFyZ3MsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQo
KSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBuZXh0RWxlbWVudCA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5l
ZCgpKTsKKworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1lbnQuZ2V0KCkpOworCisgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAg
ICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRMb29wSGludCgp
OworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yUmVzdWx0ID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51
bGxwdHIsIHZhbHVlLmdldCgpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX3NhdmUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dl
bmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlbWl0
UmV0dXJuKGl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKworICAgICAgICAgICAgICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUp
OworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2
ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yU3RhdGU6OkV4ZWN1dGluZykpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBu
b3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVh
bGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkp
KTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1h
bExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0
ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdMYWJlbCgp
OworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJlc3Vs
dCA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gUmV0dXJuLgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LnJldHVybktleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1
cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1
bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgp
LCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRz
LCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxp
dGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5S
ZWdpc3RlciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCksIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5
QmxvY2soKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0g
ZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2Vu
ZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0
ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21HZW5l
cmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1
ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3Rlcigp
LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRl
OjpDb21wbGV0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJu
SXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGhyb3cuCisgICAgICAgICAgICAgICAgZW1p
dExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd01ldGhvZE5vdEZvdW5kID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93TWV0aG9kID0gZW1p
dEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCku
dGhyb3dLZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElz
VW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9k
Tm90Rm91bmQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgdGhy
b3dBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBlbWl0TW92
ZSh0aHJvd0FyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgdGhyb3dN
ZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgdGhyb3dBcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0
dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdExhYmVsKHRocm93TWV0aG9kTm90Rm91bmQuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0SXRlcmF0b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkRlbGVnYXRlZCBnZW5l
cmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLiIpKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvLyBOb3JtYWwuCisgICAgICAgICAgICAgICAgZW1pdExh
YmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0TW92ZShwcmV2aW91
cy5nZXQoKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBpdGVy
YXRvci5nZXQoKSwgcHJldmlvdXMuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdEdl
dEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwor
ICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHByZXZpb3VzLmdldCgpOworfQorCisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3SXRlcmF0b3JSZXN1bHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiB2YWx1ZSwgYm9vbCBkb25lKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBk
c3Q7CisgICAgaWYgKCFkc3QgfHwgZHN0ID09IHZhbHVlKQorICAgICAgICByZXN1bHQgPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICBlbWl0TmV3T2JqZWN0KHJlc3VsdC5nZXQoKSk7CisgICAgZW1pdERp
cmVjdFB1dEJ5SWQocmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSwgZW1pdExvYWQo
bnVsbHB0ciwganNCb29sZWFuKGRvbmUpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Cisg
ICAgZW1pdERpcmVjdFB1dEJ5SWQocmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUs
IHZhbHVlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICByZXR1cm4gcmVzdWx0Lmdl
dCgpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UoaW50MzJfdCBzdGF0ZSkKK3sKKyAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRlKSkpOwor
ICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBjb21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8TGFi
ZWw+IGxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBl
bmQobGFiZWwpOworICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQoreworICAgIGJl
Z2luU3dpdGNoKHN0YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sK
KyAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7
CisgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rp
b25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJl
ck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0
ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJs
ZSgpOworICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZz
ZXQ7CisgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMu
cmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJs
ZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1f
Z2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVt
aXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhl
ZCwgc28KKyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZl
cmVuY2VzCisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9y
d2FyZCgpKTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVs
c1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KKwor
ICAgIGVtaXRMYWJlbChtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsLmdldCgpKTsKKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZW1p
dEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9k
ZSkpKSk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJl
bC5nZXQoKSk7CisKKyAgICAgICAgLy8gUmV0dXJuLgorICAgICAgICB7CisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQo
bmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpLCB0cnVlKTsK
KyAgICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGhyb3cuCisgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgp
KTsKKyAgICAgICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAzOGI2NTlhMzM2ODViYjNj
NzI2NDdkY2ZhZmI4ZDU4MjA0MjJiYTg2Li4xMjhjMDFhMTBlOTMwOGM5NGFmM2M0ZTMzMDUwNDIx
NmFkYzkxYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEJ5dGVj
b2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvclRoaXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsyODEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JL
aW5kKCk7IH0KKyAgICAgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPmdlbmVyYXRvclRoaXMoKTsgfQorICAgICAgICBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGlu
ZygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoKTsKIApAQCAtMjk3LDYgKzMw
MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0
ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJl
Z2lzdGVycyByZXR1cm5lZCBieQogICAgICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1v
ZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0
ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAgaXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmlu
ZyB0aGF0CkBAIC00OTksMTAgKzUwNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2ln
bmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3Rl
cklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1
bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2
b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSos
IE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHBy
ZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5Niw2
ICs1OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5k
ZWZpbmVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIG5vZGUpOwogICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVy
SUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1
bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKQEAgLTY0NCwxMiArNjQ4LDI1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJ
bmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNl
Q291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExh
YmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCos
IGJvb2wpOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKKyAgICAg
ICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJd
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKwogICAgICAgICBD
b2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIAogICAgICAg
ICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9m
aWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJu
IG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CisK
KyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApAQCAtNjY3
LDYgKzY4NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwog
ICAgICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2
b2lkIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5j
RXhwck5vZGUqKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlQ2FsbGVlUmVnaXN0ZXJzKCk7
CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVu
dmlyb25tZW50Tm9kZSosIGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBj
b25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03NTIsMTIgKzc3MSwyMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNV
bmRlclREWik7CiAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9k
ZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NwogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IG1ldGFkYXRh
LT5wYXJzZU1vZGUoKTsKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKLSAgICAgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSkpCisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8
IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQorICAgICAg
ICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSAmJiBtZXRhZGF0YS0+
c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCisgICAgICAgICAgICAgICAg
Y29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKwor
ICAgICAgICAgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6
Tm9uRW1wdHk7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6OkVtcHR5OwogCi0gICAgICAgICAgICByZXR1cm4gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNl
KCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJsZXNV
bmRlclREWik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5G
dW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCB2YXJpYWJsZXNVbmRlclREWik7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxl
RW52aXJvbm1lbnQmKTsKQEAgLTc2NSw2ICs3OTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJn
cyhPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RG
cmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
KyAgICAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnMmKTsK
ICAgICAgICAgdm9pZCBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1l
dGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwg
RnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0dXJl
cyk7CiAKQEAgLTc3Niw2ICs4MDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCisgICAgICAg
IExhYmVsKiBnZW5lcmF0b3JDb21wbGV0ZWRMYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJh
dG9yQ29tcGxldGVkTGFiZWwuZ2V0KCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9pbnN0cnVj
dGlvbnM7CiAKQEAgLTgwNCw2ICs4MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVy
SUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBt
X25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI3LDYgKzg2MCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3Rh
Y2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJ
bkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0
YWNrOworICAgICAgICBSZWZQdHI8TGFiZWw+IG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWw7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAg
ICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlv
blZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVu
Y3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3Vt
ZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2
OGU1YmJkMGY1Mi4uMWQzODIyZjY3MzJhMzU0N2YzZTkwZTYxN2ZmMGRlZTIwZjg3YTZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0
ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYg
KG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlz
OjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpA
QCAtMTcwLDEyICsxNzEsMTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZj
YWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAot
c3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvcikKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVl
OwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
aG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNl
Rm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3Ip
OwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90byk7CiB9CiAKQEAgLTI1ODMsMTMgKzI1ODgsMjcgQEAgdm9pZCBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0
ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUg
PyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2VuZXJh
dG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblJlZ2lzdGVyID0gbnVsbHB0cjsKKyAgICBpZiAobV92YWx1ZSkgeworICAgICAgICBp
ZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSkKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
bV92YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVm
aW5lZCgpKTsKKworICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCksIHRydWUp
OworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAg
ICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dFBvcFNjb3BlcyhnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCAwKTsKICAgICB9CiAKKyAgICBp
ZiAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVk
KSk7CisKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxh
c3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlQ29udHJvbEZsb3coZW5kT2Zmc2V0KCkpOyAKQEAgLTI5NjYsMjYgKzI5ODUsMTAwIEBA
IHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVu
dGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVT
dGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0
ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5O
b2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVt
ZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAg
ICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAg
RXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVt
ZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHBy
ID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhw
ck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihleHByKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5l
eHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGlu
ZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7Cisg
ICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVP
YmplY3QuZ2V0KCkpOworICAgICAgICB9CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3Rh
dGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9j
ay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygp
KSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGlj
X2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAg
ICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlz
UmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVy
bk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICAvLyBGSVhNRTog
Q3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciBy
ZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAgICAgLy8gQnV0
IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFz
cywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVh
ZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKIAotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVy
bk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9m
aWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBl
eHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1
c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3Iu
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JU
aGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJh
dG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpJbml0aWFsKSkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlh
bFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8g
RG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdz
IG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZz
ZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRv
clJlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRv
ckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXAoZ2VuZXJhdG9yLmdlbmVyYXRvckNvbXBsZXRlZExhYmVsKCkpOworICAgICAgICB9CisK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwor
ICAgICAgICBUcnlEYXRhKiB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoZ2VuZXJhdG9yQm9k
eUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9u
ZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZG9u
ZS5nZXQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGdlbmVyYXRvci5uZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdpc3RlciA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaCh0
cnlEYXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQo
KSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6U3ludGhlc2l6ZWRGaW5hbGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOworCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSwgdHJ1ZSkpOworICAgICAg
ICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2Vu
ZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAg
UmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0
dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5n
bGUgYmxvY2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50
LT5pc0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0
YXRlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RT
dGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm5O
b2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9t
YXRpY2FsbHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CisgICAgICAg
ICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0
b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5
dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9u
IGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291
cmNlIGNvZGUuCisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRP
ZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVD
YWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogfQogCkBAIC0zMDEz
LDExICszMTA2LDI0IEBAIFJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIFJlZ2lzdGVySUQqIFlp
ZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIuIFdo
ZW4gY29tcGxldGluZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0byBpbXBsZW1lbnQgaXQuCi0g
ICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1l
bnRlZCB5ZXQuIikpOworICAgIGlmICghZGVsZWdhdGUoKSkgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYXJnID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVs
ZChhcmcuZ2V0KCkpOworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7
CisgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREZWxlZ2F0ZVlpZWxk
KGFyZy5nZXQoKSwgdGhpcyk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRz
dCwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUu
Z2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNs
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAppbmRleCAyMDdlMGIzM2U5ODIzOWVlNGI0MmE1NTVkNDlmNDFhZDc0NzRlODg1Li5l
MGZlYWQzZDIyMDBhOTIwMjQ2MmMwMDk4MmJiNDFmZDlmNDBlZTM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCkBAIC05Niw2ICs5Niw4IEBAIGNsYXNzIEhlYXAgewogICAgIC8vIG91ciBz
Y2FuIHRvIHJ1biBmYXN0ZXIuIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3RpbWVDaGVj
a1Jlc29sdXRpb24gPSAxNjsKIAorICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKiBvcGFx
dWVQb2ludGVyKTsKKwogICAgIHN0YXRpYyBib29sIGlzTGl2ZShjb25zdCB2b2lkKik7CiAgICAg
c3RhdGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBib29sIHRlc3RB
bmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJ
bmxpbmVzLmgKaW5kZXggZjRhY2YyNWU2MGUxODkzOGE2OGE3YjhkYjk1OTU0ZDZhMjUwMmIyNC4u
YjhmN2Q3NmZmZmNkMDAwNjRlOGRlY2I2NTFjOWFmYWNhYmNiNzdmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC03MCw2ICs3MCwzNiBAQCBpbmxpbmUgSGVh
cCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGhlYXAodi5hc0NlbGwo
KSk7CiB9CiAKK2lubGluZSBib29sIEhlYXA6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKK3sK
KyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIExvb2sgdXAgYmVs
b25naW5nIE1hcmtlZEJsb2NrIGFuZCBmaWx0ZXIgb3V0IGlmIGl0IGlzIG5vdCBhbGxvY2F0ZWQu
CisgICAgVGlueUJsb29tRmlsdGVyIGZpbHRlciA9IG1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuZmls
dGVyKCk7CisgICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpibG9ja0Zv
cihwKTsKKyAgICBpZiAoZmlsdGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihjYW5k
aWRhdGUpKSkgeworICAgICAgICBBU1NFUlQoIWNhbmRpZGF0ZSB8fCAhbV9vYmplY3RTcGFjZS5i
bG9ja3MoKS5zZXQoKS5jb250YWlucyhjYW5kaWRhdGUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIFRlc3QgdGhhdCB0aGUgcG9pbnRlciBpcyBBdG9tQWxpZ25lZC4g
SWYgbm90LCB0aGlzIHBvaW50ZXIgaXMgbm90IHBvaW50aW5nIHRvIGEgaGVhZCBvZiBhIGNlbGwu
CisgICAgaWYgKCFNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gVGVzdCB0aGF0IHRoZSBnaXZlbiBjYW5kaWRhdGUgTWFya2VkQmxv
Y2sgaXMgYWN0dWFsbHkgYWxsb2NhdGVkIGluIFZNJ3MgSGVhcC4KKyAgICAvLyBUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IHRoZSBjYW5kaWRhdGUgTWFya2VkQmxvY2sgZGVmaW5pdGVseSBleGlzdHMu
CisgICAgaWYgKCFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNvbnRhaW5zKGNhbmRpZGF0
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBwb2ludGVyIGNhbiBiZSB1
c2VkIGFzIG9uZSBvZiBjZWxscy4gTm90IHBvaW50aW5nIHRvIG1ldGFkYXRhLCBvciBtaWRkbGUg
b2YgY2VsbHMuCisgICAgaWYgKCFjYW5kaWRhdGUtPmlzQXRvbShwKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gVGhlIGNlbGwgcG9pbnRlciBpcyBub3QgemFwcGVkLiBJdCBtZWFu
cyB0aGlzIGNlbGwgaXMgYWN0dWFsbHkgdXNlZC4KKyAgICByZXR1cm4gIXJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgSlNDZWxsKj4ocCktPmlzWmFwcGVkKCk7Cit9CisKIGlubGluZSBib29sIEhlYXA6
OmlzTGl2ZShjb25zdCB2b2lkKiBjZWxsKQogewogICAgIHJldHVybiBNYXJrZWRCbG9jazo6Ymxv
Y2tGb3IoY2VsbCktPmlzTGl2ZUNlbGwoY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAppbmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2NTUxOWM1NzJlYjYxZWViMzll
MzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2MTU0ZTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsK
ICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZl
Q2VsbChjb25zdCB2b2lkKik7CisgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKICAg
ICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CiAgICAg
ICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1hcmtl
ZChjb25zdCB2b2lkKik7CkBAIC0zODgsNyArMzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9jazo6
aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+YXRv
bU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdG9tTnVtYmVyID49IG1fZW5kQXRvbSkg
Ly8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFsaWQgY2VsbHMgb3V0IG9mIHRoZSByYW5nZS4K
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
CisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkK
KyAgICB7CisgICAgICAgIGlmICghaXNBdG9tKHApKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEpTQ2VsbCo+KHApKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGM1NDc1MWNkNzIwZmZmYzExZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMu
LmQxODUwNDIwYWJkNWRkNmIwZTMxOTQ2ZDk2NWQwN2MwNDAxZmJhYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTUzLDcg
KzE1MywxNiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQ2FsbEZy
YW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBDb2RlQmxv
Y2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBKU1Nj
b3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJhbWUtPnVuY2hlY2tlZFIoY2FsbGVyQ29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAg
IEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCku
dHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIGNh
bGxlclNjb3BlQ2hhaW4pOworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENv
ZGVCbG9jayA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKworICAgIFRo
aXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAg
aWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1
Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFs
d2F5c0NoZWNrOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGNhbGxlclVubGlua2VkQ29kZUJs
b2NrLT5nZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCisgICAgICAgIHRo
aXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworCisgICAgU291cmNlQ29kZSBz
b3VyY2VDb2RlKG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSkpOworICAgIEV2YWxFeGVjdXRhYmxl
KiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHNvdXJjZUNvZGUsIHRoaXNURFpNb2RlLCBjYWxsZXJT
Y29wZUNoYWluKTsKIAogICAgIGlmICghZXZhbCkgewogICAgICAgICBpZiAoIWNhbGxlckNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKQEAgLTE3MSw4ICsxODAsNyBAQCBKU1ZhbHVlIGV2YWwo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBi
YWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNT
RVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6
QWx3YXlzQ2hlY2sgOiBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKLSAgICAgICAgZXZhbCA9
IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxs
ZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2Rl
LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxl
ckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2Rl
QmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBzb3Vy
Y2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IGE2MWI1N2Q0NjE1ZjlhOTJlOWIzNDM5NmVkMzg4Zjc5NmQ4NDUwZDAuLjk1YmFiMDRk
MjNhOGViZTk1Y2NiNWFkZDIwYzI4ZTJjNWFjOTM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9jb3B5X3Jlc3QpCiAgICAgICAgIERFRklORV9PUChv
cF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERFRklO
RV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9kaXYpCkBAIC0yNjAsNiArMjYyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikK
ICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2Jq
ZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IGQyMjU4MjM5ZDJlYjczMDM1MWRkZTExNWU2OGE3NWJjYTQ3OWQ0MmQuLmZjYzhm
MzA2Njc3ZTc2NmMwZDFmY2E1Mzc4NzQyMjVkYTI1NjM4ZGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVj
a190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTU0MSw2ICs1NDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7CkBAIC02
NjAsNiArNjY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hp
ZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdo
dFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9u
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQg
ZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRl
cHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ0OTQ4
OTY1MGU2ODU0NjU5ZTVhNjBkZTc4ZTYzM2UxYTUxODM4NWEuLjZlYzE1YmI0NGIzMzQwNWYwZjJj
ZTIzNzA3ZTQxNTQ2ODNhYjFhYzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld1JlZ2V4cCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbV9jb2RlQmxv
Y2stPnJlZ2V4cChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBKdW1wIGxhenlKdW1wOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwpAQCAtOTc4LDE0ICs5NzgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZFBh
eWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2VuZGlmCiAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworCisgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3Ry
dWN0aW9uLT51Lm9wY29kZSk7CisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jKQorICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5j
RXhlYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgfQogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAg
ZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAxOCwxMSAr
MTAzMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAjZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsK
ICNlbmRpZgotICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5j
dGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkb25lLmxp
bmsodGhpcyk7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1v
bihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAt
MTQwNSw2ICsxNDMzLDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2NvcHlfcmVzdChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3NhdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkODczYTFkZGQ2NTdhMjg5NjhhMGU1
MWY5MDYzNmQxZGUyZmNmODE2Li5jYWQ5MzQ2OWMxYmNiZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0
NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5oIgogI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtOTg3LDIzICs5ODgsNDIg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
QW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBwcm9maWxlLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHNpemVWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGU+CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21t
b24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRh
YmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkp
OworICAgIGlmIChpc0ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEZ1bmN0aW9uVHlwZTo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxl
KSwgc2NvcGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3Jl
YXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBzY29wZSkpOworfQorCitleHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgZmFsc2UpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsK
LSAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFi
bGU6OmluZm8oKSkpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2
bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwg
c2NvcGUpKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7
CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rp
b24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3Bl
cmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwg
SlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9v
bCBpc0ludmFsaWRhdGVkKQorRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBm
dW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFs
aWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxl
KTsKQEAgLTEwMTksMTIgKzEwMzksMTIgQEAgRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUKICAgICAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Nj
b3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywg
c2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKKyAgICByZXR1cm4g
b3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVj
dXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworICAgIHJldHVybiBv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDk2MzhmMTQ1Yzlk
NTU3NWYxYzk1MmUyNzVmNTk0YTc2YjMyYTRiODguLjI1NDI1NTAyMjlkYTQxZTFhZGQ0NmIwYjAy
NThlOGU0OTk1YjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCkBAIC0zMDEsNiArMzAxLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmEKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUo
RXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzY1ZjE5Nzk1MGUz
MjNmMDU2NmU3MmM3M2I0ZWVkNjNlM2IyMDhjNS4uNWY1ZjIxODRjOTNiOTJjOWIyM2JkMjNmN2M3
ZDM3OTE2NzQ5NmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKQEAgLTEwNDEsNiArMTA0MiwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2Z1bmMpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0K
IAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNv
ZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFzQWN0aXZhdGlv
bigpKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVy
YW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAg
IGRhdGFMb2dGKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVU
VVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTA1Miw2
ICsxMDY1LDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3Jf
ZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNo
ZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5v
cGVyYW5kKTsKKworICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfYXJyb3dfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggZTI0NDgyOWZkZDFl
MmYxNTA2YTM1ZDEwYTRlYjgxZmNiZTMyYzUzMS4uMjcxMzI0YjE4NDUzZDcyZGM4Yjc2MTgwYmEw
MzA0YWI0NTY1OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKQEAgLTk5LDYgKzk5LDggQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19m
dW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5l
cmF0b3JfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3Ry
dWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCBmOGUxMjhjY2Q5YTA0YTExYWNmOTkxY2JjMWI1YjIwZDk3Y2FmMDMz
Li4zNjhkMDg3NTJhN2NmYjdhZGNhZGRlNmYwYzNlNzkxYjVmY2U0MjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0x
MjI3LDYgKzEyMjcsMTIgQEAgX2xsaW50X29wX25ld19mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAK
IAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAg
IGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1
OCw2ICsxNDY0LDExIEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGlu
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAg
IGRpc3BhdGNoKDQpCisKIF9sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19m
dW5jX2V4cCkKQEAgLTE1NzMsNiArMTU4NCwxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRp
c3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhY2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUy
MmI3MGUxZTk2MDliZTAwLi4yYjg0Y2JhZjM3ZWYwNDYwYmRiOTE2ZDJiYmRhYzAyZTBkMmI0ZDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzQxLDkg
KzM0MSwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgbnVsbHB0ciwgLyogZGVsZWdhdGUgKi8g
ZmFsc2UpOwogICAgIH0KIAotICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBk
ZWxlZ2F0ZSkKKyAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRl
KTsKKyAgICAgICAgWWllbGRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgWWll
bGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVj
dG9yLApAQCAtMzY0LDEyICszNjYsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlv
bk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAot
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBG
dW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9j
YXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAg
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0
ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3Vw
ZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKQEAgLTg4Niw2ICs4ODgsOSBAQCBjbGFz
cyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIG5vZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNl
dCk7CiAgICAgfQorCisKKyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0Fy
Z3VtZW50cygpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMy
YzlmNmQzZDkzOTMzOGNlNTAuLjViNmRjNDkzODVkYTc4MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUx
LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBm
dW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikK
QEAgLTE2MiwxMCArMTYyLDExIEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFk
YXRhTm9kZSgKICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAg
ICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChp
c0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQo
bV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwog
ICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAwYWEzMTFkYzExZDdmOGE4YjAxZmVjN2U0NGJkZTIxZmE1NzhlZWNlLi4wYmYwMGI3YmU5Mzdm
Nzk3OGE0NTYzNzNmYWRlMzFmNWM3NWY5ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC0xODE3LDcgKzE4MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1
bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4NDIsOCArMTg0
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0
cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAg
ICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBl
ckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2Nv
bnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5z
aWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKQEAg
LTE4NjksOCArMTg2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9sYXN0TGlu
ZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25l
ZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4
cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBj
bGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBj
bGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJv
b2wgZGVsZWdhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5k
ZXggNjg3NGIyN2UzOTA5MDdjOGU0MTQ5ODI2YzM3OWU0MmNmNTljZTUyYS4uNWJiYTUyMGQ2YTU3
NGVjNzNkMjllNTJjMDBkOTI3Zjc2ZWU2ZThkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUGFyc2VyPExleGVyVHlwZT46
OmxvZ0Vycm9yKGJvb2wgc2hvdWxkUHJpbnRUb2tlbiwgY29uc3QgQSYgdmFsdWUxLCBjb25zdCBC
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwgCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
LAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9k
ZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJjZSgmc291cmNlKQpA
QCAtMjEwLDYgKzIxMCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgLCBtX2xh
c3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKICAgICAs
IG1fcGFyc2luZ0J1aWx0aW4oYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVp
bHRpbikKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVs
dENvbnN0cnVjdG9yS2luZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlzVERa
TW9kZSh0aGlzVERaTW9kZSkKIHsKQEAgLTI0OSw3ICsyNTAsMTAgQEAgU3RyaW5nIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW8KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7
CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CisgICAg
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAg
ICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFy
YW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiAhaGFzRXJyb3IoKSkg
ewpAQCAtMjczLDggKzI3NywxMiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgICAgICAg
ICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9k
eVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNl
TW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVs
ZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVj
a0ZvclN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwg
Q2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRF
bmRpbmc7CkBAIC0zMDEsNyArMzA5LDE0IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRGVjbGFyYXRpb25zID0gc2NvcGUtPmRlY2xhcmVkVmFy
aWFibGVzKCk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhcHR1cmVkVmFyaWFibGVzKQogICAg
ICAgICB2YXJEZWNsYXJhdGlvbnMubWFya1ZhcmlhYmxlQXNDYXB0dXJlZChlbnRyeSk7Ci0gICAg
CisKKyAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgc2NvcGUtPmdldFVzZWRW
YXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBpZiAodXNlZFZhcmlhYmxl
cy5jb250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKSkKKyAgICAg
ICAgICAgIGNvbnRleHQucHJvcGFnYXRlQXJndW1lbnRzVXNlKCk7CisgICAgfQorCiAgICAgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+
c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAg
LTMxMSwxMCArMzI2LDEwIEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihj
b25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgICAgIGZlYXR1
cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRBcmd1bWVu
dHMpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkQXJndW1lbnRzRmVhdHVyZTsKKworCiAg
ICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbikgewotICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7Ci0gICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8g
YWxsb3cgYnVpbHRpbnMgdG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5n
ZXQoKSk7CkBAIC00NTgsNiArNDczLDQ1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOworCisgICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0
b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50
IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gcGFyYW1ldGVyc1N0YXJ0OworICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CisgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVl
LCB0eXBlCisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2Nv
cGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNv
dXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBT
eW50YXhDaGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92
bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1l
bnRzKGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJv
ZHkgb2YgYSBnZW5lcmF0b3IiKTsKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3Bl
LCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9CisgICAgaW5mby5i
b2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRM
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5v
ZmZzZXQ7CisgICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1
dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlv
biwgaW5mbyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3Np
dGlvbi5saW5lKTsKKyAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywg
c3RhdGVtZW50KTsKKworICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVp
bGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRl
ZCBoZXJlOgpAQCAtMTU4OSwxNSArMTY0MywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQgog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHko
CiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBm
dW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCi0gICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCisgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgRnVuY3Rp
b25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJv
ZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9IGJvZHlUeXBlOwogICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikg
ewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAg
ICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9r
ZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25z
dHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCks
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwg
c3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2MDksNyArMTY2Miw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShw
YXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJv
ZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkg
b2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5j
dGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxv
Y2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVj
dG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5n
LCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCkBAIC0xNjI1LDYgKzE2NzgsOCBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1
cm4gIm1ldGhvZCI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAg
ICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICBy
ZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGU6CkBAIC0xNzAzLDYgKzE3NTgsMzcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT4KIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQp
Cit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
KyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworCisg
ICAgLy8gQGdlbmVyYXRvcgorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvciwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9j
YXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9u
U3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5l
cmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFy
YW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsK
KyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUs
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JW
YWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFt
ZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5n
TG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1v
ZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVj
bGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRl
cnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBh
cnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYg
ZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5
cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBA
IC0xODEzLDEyICsxODk5LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAg
ICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsK
ICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAgICAg
ICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9u
SW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAg
ICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJ
bmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5
VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgY2FjaGVk
SW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywg
Y2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2Nv
cGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAg
cG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5m
byk7CkBAIC0xODMyLDcgKzE5MTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJv
b2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAg
ICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAg
ICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0
OwogCi0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJv
ZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
OwpAQCAtMTg1NCwxNCArMTkzOCwzMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJv
b2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgIAog
ICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3Rh
dGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9
IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
Y29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVy
Q291bnQsIG1vZGUpOworCisgICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsm
XSB7CisgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0
aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcs
IGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7Cisg
ICAgfTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKSB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhp
cywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBmdW5jdGlv
bkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisKKyAgICAgICAgLy8g
V2hlbiBhIGdlbmVyYXRvciBoYXMgYSAidXNlIHN0cmljdCIgZGlyZWN0aXZlLCBhIGdlbmVyYXRv
ciBmdW5jdGlvbiB3cmFwcGluZyBpdCBzaG91bGQgYmUgc3RyaWN0IG1vZGUuCisgICAgICAgIGlm
ICAoZ2VuZXJhdG9yQm9keVNjb3BlLT5zdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBmdW5jdGlv
blNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7CisKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGdl
bmVyYXRvckJvZHlTY29wZS0+aGFzRGlyZWN0U3VwZXIoKSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkg
b3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgICAgIGlmIChnZW5lcmF0b3JC
b2R5U2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJz
dXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwor
CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRz
RnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUo
b2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBh
cnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAg
ICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVu
dE9mZnNldCgpKTsKICAgICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0
aW9uSW5mby5uYW1lKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBt
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSk7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBs
KCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1
bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5v
dCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xOTI5
LDcgKzIwMzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBF
TkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNO
YW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlv
biIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVt
ZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0yMDgwLDcgKzIxODMsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MoVAogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRvcikg
ewogICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgICAg
ICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7
CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAn
cHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBhIGdl
bmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBAIC0yODM2LDYg
KzI5MzksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIGZhaWxJZlRydWUobV9mdW5j
dGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90
IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBk
aXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxE
KSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5l
eHQoKTsKQEAgLTI4NDMsMTMgKzI5NDcsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBk
ZWxlZ2F0ZSA9IGNvbnN1bWUoVElNRVMpOworICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3Rh
cnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkg
ewogICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRl
KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRl
bGVnYXRlLCBkaXZvdFN0YXJ0LCBhcmd1bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTMwNDEsNyArMzE0Niw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRoCiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tl
blN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZv
OwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsK
ICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1Jl
cXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVm
aW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAg
bWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8pOwpAQCAtMzI5NCw3ICszMzk5
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHIKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVT
Nl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2Rl
ID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVz
c2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwg
ZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3
YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0MDUz
YTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xl
eGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkK
ICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1
bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRj
aERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBt
X2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwg
bV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBt
X2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgo
cmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVw
dGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpA
QCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5l
cmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1
bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBA
IC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3Vu
ZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBp
c0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wg
aGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZv
aWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3Bl
ID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAg
ICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVy
U2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwot
ICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29w
ZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpw
dHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisg
ICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBu
ZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3Rl
ZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3Bl
LT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNo
b3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlm
IChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0Fy
Z3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2Vk
VmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5h
ZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZh
cmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFz
IGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3Ro
IGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25z
IGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZh
cmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tD
bG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAh
bmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Ns
b3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1f
Y2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93
bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0
cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAg
ICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0g
dHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRv
ciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisg
ICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0
cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAg
c2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAg
bV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkK
QEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxT
Y29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBt
X2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAg
ICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3ICs2
NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBW
TSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmlj
dE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwg
SlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUs
IFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1MCw2ICsxMTcxLDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291
cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwg
Y29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUs
IHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBF
eHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTkwLDcgKzEyMTIsNyBA
QCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVBy
b3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0
aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBi
b29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQ
cm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9w
ZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0
cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVy
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JL
aW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9k
eSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlv
bkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBl
bnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFy
YXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBk
ZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVF
eHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBK
U1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVj
bGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBm
b3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyMTUsNiArMTIzNyw3IEBA
IGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWly
ZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsK
ICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQg
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNz
aW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2Vy
Q2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7
CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNp
bmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1
Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhp
c1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAg
LTE0NjMsNyArMTQ4Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgogc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUg
YnVpbHRpbk1vZGUsCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAg
UGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IG51bGxwdHIsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsCiAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUg
PSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKQEAgLTE0NzIsNyArMTQ5Niw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKIAogICAgIEFTU0VSVCghc291cmNlLnByb3Zp
ZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBz
dXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9
IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURl
ZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAg
IFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7
CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCwgdGhpc1REWk1vZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1
bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAg
ICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRj
MzNlZmRmN2M0OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5
MjFhMGMwMjljYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rl
cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0gRnVuY3Rpb25Nb2RlIHsgRnVuY3Rpb25FeHByZXNz
aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uIH07CiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7
CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBN
ZXRob2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29s
IGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9n
cmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtl
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkNDlhN2UxNzNiMjUwMGRhZmI1Zjg0YWE0YzJlNmY0MTY2NDlkMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNv
ZGVLZXkuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU291cmNlQ29kZUtleV9oCisjZGVmaW5lIFNvdXJj
ZUNvZGVLZXlfaAorCisjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFNvdXJjZUNvZGVLZXkgeworcHVibGljOgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFs
VHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291
cmNlQ29kZUtleSgpCisgICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlw
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZO
ZWVkZWQpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9u
YW1lKG5hbWUpCisgICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVU
eXBlKSA8PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih0aGlzVERaTW9kZSkpCisgICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+
aGFzaCgpKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQor
CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgo
KTsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNO
dWxsKCk7IH0KKworICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcg
b24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCisgICAgLy8gcHJvdmlkZXJzIGNh
Y2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KKyAgICBTdHJpbmcgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCisgICAgICAgICAgICAmJiBsZW5n
dGgoKSA9PSBvdGhlci5sZW5ndGgoKQorICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5t
X2ZsYWdzCisgICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisgICAgICAgICAg
ICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB1bnNpZ25l
ZCBtX2ZsYWdzOworICAgIHVuc2lnbmVkIG1faGFzaDsKK307CisKK3N0cnVjdCBTb3VyY2VDb2Rl
S2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
U291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
SXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1
ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2Rl
S2V5LmlzTnVsbCgpOyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOTU1MzZj
M2M3NTY3MjI3MzUxYmM2OTA3MTgyZWQ1M2FiNmM3MTkxYi4uM2UwYzMwZmQxZDI1MTg2MjM1ZTJk
YjAzODQ0MTRjNjFmODE1N2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKQEAgLTE4MCwxMCArMTgwLDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIg
ewogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JikgeyByZXR1cm4gWWllbGRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlp
ZWxkRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZ
aWVsZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50Jiwg
RXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlz
dCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxT
eW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9k
eVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBh
cnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rp
b25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAt
Mzg1LDYgKzM4NSw4IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQo
aW50KSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9
CiAKKyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAg
IGludCBtX3RvcEJpbmFyeUV4cHI7CiAgICAgaW50IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYy
YzUyNWUwZjU2ZWMwZjY5Y2RjN2NiZWRmMGUuLjJhMjQ0MmZhYTZlZWE4MTgyODQ1ZmZiMTdiMjFh
MmI5OTM4NGNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hl
OjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2Rl
IFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJz
ZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlw
ZT46OnBhcnNlTW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhp
c1REWk1vZGUpOworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBh
cnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2Rl
KFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9k
ZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsCiAgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAg
ICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQo
KSk7CkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVD
YWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRh
ZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8g
VGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFi
bGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpO
b25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9u
YW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5z
dHJpbmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZh
bHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4Y2ZlZjg0NjQ5ZDhm
MDljMmZiMGI5NDg4MTExZTE2OTM2YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2
Y2RjODk1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNp
bmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRl
ICJTb3VyY2VDb2RlS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFi
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTYsNzEg
KzU3LDYgQEAgY2xhc3MgVk07CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlk
ZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUg
eyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwotCi0g
ICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBj
b2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1RE
Wk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9mbGFncygKLSAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMpCi0gICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpCi0gICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkKLSAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAgICAgICAgLCBtX2hhc2goc3RyaW5n
KCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VD
b2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUg
b3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKLSAgICAvLyBw
cm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgotICAg
IFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsg
fQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKLSAgICAgICAg
ICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0gICAgICAgICAgICAmJiBtX2ZsYWdz
ID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUK
LSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0cmluZygpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQgbV9oYXNoOwotfTsKLQotc3RydWN0
IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3Vy
Y2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJl
dHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRz
IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsKLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wg
aXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJu
IHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUg
ewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2
MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4MWJm
MWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBt
YWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVy
YXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBc
CiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVpbnQz
MkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFy
cmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkg
XAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0OTY0ZDQ0OTY0MzkxLi40NTZkYjc5
MDIwMmRjMzlmZDE3ZmVjMzFlM2NhNDA0MTljY2U4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwzOCBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQgdGVtcG9y
YXJ5IHJlZ2lzdGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4g
dGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRo
ZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0
ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNW
YWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisgICAgaWYg
KCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUq
Pih2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9y
IHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNo
b3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAg
ZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxv
Y2soKS0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFz
T2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3Qo
Z2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3Rl
cnNJbmRleCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVy
c0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1
bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUq
PihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKSk7CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5s
aXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsKKyAg
ICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdmM2NjNGYx
ZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CkBAIC0yOTAsNiArMjkwLDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0
X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3By
b2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9h
c3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAKaW5kZXggYTYzMmM0OGUwMzBiNDFiMzNiMzNkYmExNmEzMWNmNjEzNWI0
ZjUwZi4uMDJmMzk1YzQyYmMxMmVlMDIxODM0YTgyZjgxZjBmYzk3OWJjZGE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAh
IXBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiB9CiAKIGJvb2wgY2hl
Y2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcnNlckVycm9yJiBlcnJvcikKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5
bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGUKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5v
ZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1O
b2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBk
MzIwZWM3Y2E2MC4uNDIwNjAwNjcyMjlhYTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3
ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAg
ICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwog
ICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJs
ZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxl
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCkBAIC01NTYsNyArNTU2LDcg
QEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIG1fc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
ZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAg
ICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5p
c1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmlu
ZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLjg4YTI0YWQ2Y2Fi
MmQ2MjA1MjEwNGYwMTMwMmVkZTAyMmE0NGQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7
IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5v
bkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9m
RnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNl
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6
Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsK
QEAgLTU0Miw3ICs1NDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7
IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIg
KzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGlu
RnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0K
LSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVk
TmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgp
OyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBj
YWJiMjIxYzQyOWMuLmIwYWI2YmZjMDkyOTg3MDA4YzI1NWQ3ZGI1ZWExNGI5NjI2YTVhMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCkBAIC03OSwyOCArNzksMzAgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01B
IDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
LCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2Uo
KSkpOwotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
ayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3Np
dGlvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBv
c2l0aW9uLCAtMSwgaXNHZW5lcmF0b3IpOwogfQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCAKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCAKLSAgICBj
b25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQorICAg
IGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIGJv
b2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMgaXMg
c29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcg
cHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSBtYWtl
U3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIp
OworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVyYXRv
cikgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAg
IGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5n
KCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CisgICAgICAgIHByb2dyYW0g
PSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5j
dGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKKyAg
ICAgICAgaWYgKGlzR2VuZXJhdG9yKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKSk7CkBAIC0xMjYsOSArMTI4LDkgQEAgSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogfQogCiAvLyBFQ01B
IDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBi
b29sIGlzR2VuZXJhdG9yKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBn
bG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmlu
ZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29uc3Ry
dWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwg
aXNHZW5lcmF0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAyMmVjYjU3
YjkzZjY5YmZjOWY4YjFiMzA2ZmI0YzQyYTBhNjdkMmUzLi4yNzk0Y2QyMGI3NjMxYzE3OWZkZTAy
YWE5NTcwZDEwZmVhYmZkMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01NiwxMiArNTYsMTIgQEAgY2xhc3MgRnVu
Y3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOwotSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOworSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgYm9vbCBpc0dlbmVyYXRvciA9
IGZhbHNlKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
bmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdM
aXN0JiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6
VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsKKyAgICBjb25zdCBT
dHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIg
PSAtMSwgYm9vbCBpc0dlbmVyYXRvciA9IGZhbHNlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZWVjNjQ3ZDQ2ZjhhMmU3ZmNmYjhkM2YyMWQ3YWQzYTI4ODdhODRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdl
bmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZy
YW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVy
cykKKyAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQorICAg
ICwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyhudW1iZXJPZkNhbGxlZVJlZ2lzdGVycykKK3sK
K30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
bnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgcmVnaXN0ZXJBdChpKS5jbGVh
cigpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitHZW5l
cmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJP
ZlJlZ2lzdGVycykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KKyAgICAgICAgbmV3
ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJh
dG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yUmVnaXN0ZXJzKG51bWJlck9mUmVn
aXN0ZXJzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZlJlZ2lzdGVycyk7
CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7CisgICAgLy8gT25seSBzYXZlIGNhbGxl
ZSByZWdpc3RlcnMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9y
IHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBBU1NFUlQobGl2
ZUNhbGxlZVJlZ2lzdGVycy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7
CisgICAgbGl2ZUNhbGxlZVJlZ2lzdGVycy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgp
IHsKKyAgICAgICAgSlNWYWx1ZSByYXdWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCk7CisgICAgICAgIC8vIFNpbmNlIEMgc3Rh
Y2sgY2FuIGJlIHVzZWQgZm9yIGFueSBwdXJwb3NlLCBhbiBpbmNvcnJlY3QgdmFsdWUgZm9yIGEg
anMgdmFsdWUgbWF5IGV4aXN0CisgICAgICAgIC8vIGluIGEgbm9uLWluaXRpYWxpemVkIChidXQg
YWxsb2NhdGVkKSBKUyByZWdpc3Rlci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yIGV4YW1w
bGUsCisgICAgICAgIC8vCisgICAgICAgIC8vICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVnaXN0
ZXJBID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIC8vICAgICAuLi4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gSW4gdGhlIGFib3ZlIGNhc2UsIHJlZ2lzdGVyQSBpcyBhbGxvY2F0ZWQuIEJ1dCBp
dHMgY29udGVudCBtYXkgbm90IGJlIGNvcnJlY3QganMgdmFsdWUuCisgICAgICAgIC8vIEFzIGEg
cmVzdWx0LCBKU0NlbGwgcG9pbnRpbmcgdG8gdGhlIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIG1h
eSBleGlzdC4KKyAgICAgICAgLy8gUGVyZm9ybWluZyBhIHdyaXRlIGJhcnJpZXIgKCYgU2xvdFZp
c2l0b3IncyBtYXJraW5nKSBvbiB0aGVzZSBpbmNvcnJlY3QgY2VsbHMgY2F1c2VzIGludmFsaWQg
ZGVyZWZlcmVuY2VzLgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgdGVz
dCBhIGdpdmVuIGNlbGwgbGlrZSBwb2ludGVyIGlzIHRydWx5IGNlbGwuCisgICAgICAgIGlmIChy
YXdWYWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT52bSgpLmhlYXAuaXNM
aXZlQ2VsbChyYXdWYWx1ZS5hc0NlbGwoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIC8vIE5vdGUgdGhhdCBpbnZhbGlkIG5vbi1jZWxsIHZhbHVlIG1heSBi
ZSBzdG9yZWQuIChlLmcuIGEgdmFsdWUgd2l0aCBhbiBpbnZhbGlkIHRhZyBpbiAzMmJpdCBlbnZp
cm9ubWVudCkuCisgICAgICAgIC8vIEJ1dCBzaW5jZSB0aGV5IGFyZSBub3QgcmVjb2duaXplZCBh
cyBhIGNlbGwsIHdyaXRlIGJhcnJpZXJzIC8gbWFya2luZyBkbyBub3QgY2F1c2UgYW55IHByb2Js
ZW1zLgorICAgICAgICByZWdpc3RlckF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgcmF3
VmFsdWUpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKQorewor
ICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSByZWdpc3RlcnMuCisgICAgLy8gRXZlcnkgdGltZSBh
IGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBy
ZXBsYWNlZC4KKyAgICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVf
dCBpbmRleCkgeworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGluZGV4KSkgPSByZWdpc3RlckF0KGluZGV4KS5nZXQoKTsKKyAgICAgICAgcmVnaXN0ZXJB
dChpbmRleCkuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdl
bmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAvLyBT
aW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2Fu
IHNhZmVseSBtYXJrIHRoZW0uCisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
cmVnaXN0ZXJzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkN2M2YmM0ZWI5Y2YyNjJjNzk1YWE0NTg3YzU1
NGIwYjkxYTFmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKKwor
I2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNs
YXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGls
ZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBT
dHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBz
aXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogcmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBv
ZmZzZXRPZlJlZ2lzdGVycygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+JiByZWdpc3RlckF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRl
eCA8IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJz
KClbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZSZWdpc3RlcnMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlZ2lzdGVyKHNpemVfdCBpbmRleCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlJlZ2lzdGVycygpICsgaW5kZXggKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplRm9yUmVnaXN0ZXJzKHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBudW1iZXJPZlJlZ2lzdGVycyAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOworCisgICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVSZWdpc3RlcnMpOworICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpOworCitwcml2YXRlOgorICAgIEdl
bmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKworICAg
IHNpemVfdCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzOworCisgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
cHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9y
RnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2NkM2VkMDI1
YmVhOTI3ZjYwNTM2YTM5OWJlZGM4MzcxMmEzOTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisK
K0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24o
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
IkdlbmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBh
cmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdCgpLCBhcmdzLCAvKiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVj
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFz
SW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCAv
KiBpc0dlbmVyYXRvciAqLyB0cnVlKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sK
KyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0ZDk3MjNl
M2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKyNk
ZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9uOworfQor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisK
K2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAg
ICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUzMWJkMzExYjkyZTQy
NzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5m
byA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMzMTM1Nzc2
ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0K
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3By
aXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3NGNhZTZhZDQ2
NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NC
dWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3RvdHlwZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclByb3RvdHlw
ZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0b3JQcm90
b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRocm93ICAg
ICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5l
cmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJh
dG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0
b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVy
YXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3Rv
dHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJh
dG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdl
bmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlw
ZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
VGhpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5YTZlMDk1YzMyYWFkYzU0NDZhMzU1ZDgxNzVhOTU5ZGQ0ODRjZjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlz
LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRv
clRoaXNfaAorI2RlZmluZSBHZW5lcmF0b3JUaGlzX2gKKworbmFtZXNwYWNlIEpTQyB7CisKKy8v
IGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0aW9u
YWxsb2NhdGUKKy8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlzdC1u
ZXd0YXJnZXQKKy8vIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24sIGl0
cyBbW0NvbnN0cnVjdG9yS2luZF1dIGlzIGFsd2F5cyAiZGVyaXZlZCIuCisvLyBUaGlzIG1lYW5z
IHRoYXQgT3JkaW5hcnlDYWxsQmluZFRoaXMgaW4gc2VjdGlvbiA5LjIuMiBpcyBuZXZlciBleGVj
dXRlZCBmb3IgR2VuZXJhdG9yRnVuY3Rpb24uCisvLyBTbywgd2hlbiB3ZSBleGVjdXRlIHRoZSBm
b2xsb3dpbmcsCisvLworLy8gICAgIGZ1bmN0aW9uICpnZW4oKQorLy8gICAgIHsKKy8vICAgICAg
ICB5aWVsZCB0aGlzCisvLyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0g
Z2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlzfCBzaG91bGQgYmUgZ2xvYmFsLgorLy8gICAgICAg
ICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBu
ZXcgZ2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlzfCBpbiBnZW4gc2hvdWxkIGJlIFREWiAoYW5k
IGl0IHdvbid0IGJlIGZpbGxlZCkuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8v
CisvLyBUaGUgZm9sbG93aW5nIGZsYWcgbWFuYWdlcyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVyYXRv
ckZ1bmN0aW9uIGlzIGNhbGxlZCBhcyBhIGNvbnN0cnVjdG9yLCBpdCByZXR1cm5lcyBhIEdlbmVy
YXRvciB0aGF0IGZ1bmN0aW9uIGhhcyBHZW5lcmF0b3JUaGlzOjpFbXB0eSBmbGFnLgorLy8gSW4g
dGhpcyBjYXNlLCB3aGVuIGFjY2Vzc2luZyB8dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBlcnJvciBv
Y2N1cnMuCitlbnVtIGNsYXNzIEdlbmVyYXRvclRoaXMgOiB1bnNpZ25lZCB7CisgICAgRW1wdHks
CisgICAgTm9uRW1wdHkKK307CisKK30KKworI2VuZGlmIC8vIEdlbmVyYXRvclRoaXNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZi
ZDZkNTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1Njlh
MTFlMTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKQEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhp
c09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVj
dC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90
b3R5cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3Qs
IERvbnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVu
dW0pOwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZt
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzRjYmNlMDJkNjYyOTA1ZTBlY2I3OGE3NmZjYzg1YTJlMmQxOTg4ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgor
I2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24p
IH07CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFz
ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5l
cmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2Vu
ZXJhdG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1
bmN0aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpOworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5l
cmF0b3JGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBl
eGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9y
RnVuY3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sK
KyAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjA4NzgxNGEzNjQzMjA0ODUyYzFhMDM2
MmU4ZWQ1ZGE1ZmJlZjAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5l
cmF0b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rp
b24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBm
cmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBW
TTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xh
c3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAgICAgICAgQ29tcGxldGVkLAorICAgICAg
ICBFeGVjdXRpbmcsCisgICAgICAgIEluaXRpYWwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBH
ZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAor
ICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisK
KyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5l
cmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5l
Q2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAg
ICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9y
RnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJhYWRhZjc0MDJhNzdiYzBmNTku
Ljc2MjJiYjkyYTE5MTUxMWQ4MzA0ZWEwYjFkMDBiMzg5ODdlYmM4NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUw
LDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUsNyBAQAog
I2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0LDYgKzM4
OCw3IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFu
Y2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJ
Tl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVS
QVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
aXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJB
VE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxMSBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Ywog
ICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRheEVycm9yIikpKTsKICAg
ICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9yIikpKTsKICAgICBtX1VS
SUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CisKKyAgICBtX2dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5l
cmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTgxOCw2ICs4MjgsOCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJvdG90eXBl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3Rv
dHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3Bl
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVT
dHJ1Y3R1cmUpOwpAQCAtODUwLDYgKzg2Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEw
NC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3NjcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4
IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdl
bmVyYXRvclByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xh
c3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJz
b3I7CkBAIC0yMjksNiArMjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBl
PiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1f
cmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9p
dGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdl
bmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY29uc29sZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxh
clZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
OyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0K
KyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9
CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1
Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
bWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3Ry
dWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDgwMGE3ODY5ZTU0Yjc1ZDVjOGQyOGE1MGQ5
N2ExZTBiNzdiNTA2M2EuLjM3YjhhZmM3N2UyZDA5ZTk1NTEzYmVmYjU4ZWU3ZGRmYzA2YzU0YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIFBh
cnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4g
bW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2
bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2Rl
OjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGVycm9yKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFi
YzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBl
VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2Vw
dGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQzMTk0MDg5MDA2YmYzZTE3ODE5
M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlmMjk4ZTBi
OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQsNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlv
blJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0
YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE5LDcgKzcxOSw3IEBACiAtIHBh
dGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0Fy
cmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJh
eS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3RhbmNlc19vZl9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcyNyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0
aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1
bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXku
ZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0
aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1Myw3ICs3NTMsNyBAQAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9k
ZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19p
dGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMsNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29w
c19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xv
b3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMu
anMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3Bl
cnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlw
ZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193
aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9u
X2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFu
ZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0
aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0
b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNw
ZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9v
cGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhf
Z2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRo
X2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9h
cnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMu
anMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEz
MmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5
cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1
bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0g
bWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1i
b2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJh
dG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNo
aWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9k
c1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFi
bGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4g
aXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAog
dmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1
MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1
NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2Yg
Z2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlv
biBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhv
ZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0
ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9
IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgp
LCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3Jl
dHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0g
e307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJh
dG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBp
dGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlh
ZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZh
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpA
QCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3Zh
ciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIs
IG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wg
IT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9Cith
cnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07Cisg
IH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sn
dGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9y
XSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQor
CiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4
IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1
Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdfdmlh
X3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQg
QEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRo
aXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgewor
bWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9u
JyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsK
K3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFs
dWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVy
bic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9Owor
dmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24o
KXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRl
c3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRz
LWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2FlZThkZjhi
Y2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBAIC0wLDAg
KzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVkLmxlbmd0
aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcHJpbnQoSlNPTi5zdHJpbmdpZnko
YWN0dWFsKSk7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQorfQorCisK
K2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisK
K2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3No
b3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
NjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMu
anMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
Cit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAx
LCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIs
IGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9
IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBn
MigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0
MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFy
IGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rp
b24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWll
bGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1g
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwg
YiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5
aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOwor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVj
ZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2Rz
LXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkg
eworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24i
KTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4
RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0K
K30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2Nv
bnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkK
KyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAK
K2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQy
OworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFm
NWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhv
ZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworY2xhc3MgQSB7CisgICAgKmdlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlz
OworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAg
c3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAg
eWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsK
K30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlz
IG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sK
KyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQor
eworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNH
ZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQor
Cit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52
YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZh
cmlhYmxlLmApOworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhp
cycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAg
IH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3Mg
QyB7CisgICAgKmdlbmVyYXRvcigpCisgICAgeworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7
CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVy
cm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2Vu
ZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMp
OworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0
aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0g
KG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwu
R2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJl
KGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5j
dGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9
IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJz
dC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4
OThlNTkwOWFiYWYzODViZjIwODk5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwu
anMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93
IG5ldyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFi
bGUoKTsKK30KKwordmFyIGcgPSBnZW4oKTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
CisKKwordmFyIGdsb2JhbCA9IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5l
dyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0
KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0g
e307CisgICAgICAgIGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAg
ICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7
CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAg
ICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAg
ICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlz
T2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlv
biB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5j
dGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwor
dmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgewor
ICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9Citp
ZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1u
ZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUz
NmVhYjhkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3Zh
ciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFy
IGcyID0gbmV3IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13
aXRoLXN1cGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3Itd2l0aC1zdXBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgz
YmY4ZDZjODk3N2JiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBz
aG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxp
ZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9
CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAg
ICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBh
LmdlbigpLm5leHQoKTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQg
aW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAg
ICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEg
PSBuZXcgQSgpOworICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAg
ICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVu
ZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIw
ZWQ1NjY4OGE2YTI5OGMuLjk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0
VmVjdG9yIHsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAg
ICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIG4gPSBhcnJheUxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbjsgKytpKSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNDIxOTQxZjNhNDRhYzZkYzVkOWI2N2ZkMmNkZDg2
ZjEyMDEzYzY0OC4uZjQ2ZTExOTczZTUyNGNhNDI4NTZiMGQ3NjgzNzllMWE5ZjQ1OTMwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0zNjQsNyArMzY0LDcgQEAgdGhlIHB1YmxpYyBpT1Mg
U0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnIGZpbGUKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgp
Ci0jZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAwCisjZGVmaW5lIEVOQUJMRV9FUzZfR0VO
RVJBVE9SUyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZfTU9EVUxFUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThk
NjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3
LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9D
TEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJB
VE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsK
IEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5U
QVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRk
YTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyAr
NDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
ID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZ
TlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNT
X1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JT
ID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5B
QkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9
IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJL
aXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNi
NTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFi
NzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9D
QU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxF
X0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2
X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMg
PSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggOWNkODQ2NWMwOWM5ZjE3
ODYwNGM5YWIyOTI1YTcwYWI0N2M2M2UzYy4uMDJjYzc5OGIyMGJkNmU0NjI2M2JlMzlkOTAxYThm
ZTk0Y2I5ZWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTM0LDcgKzM0LDcgQEAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiBQVUJM
SUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQT1JUIFBVQkxJQyBPTikKLVdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfR0VORVJBVE9SUyBQVUJMSUMgT0ZG
KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFUT1JT
IFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZf
TU9EVUxFUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMRV9TWVNURU0gUFVCTElDIE9GRikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9X
ZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBkOTYyMjRkNDE3MWJkYmE3MTcwYzQ1ZDNkZDcyMTc1
NDc3MTJmNTBkLi4wMGVkYmMwMTNiZmY2NmY3YTAzZmRkMjliNjMxZjQ2MjUwYmUyNDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw3ICs3Nyw3IEBAIG1hY3JvKFdFQktJVF9P
UFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMiAiU3VwcG9ydCBFTUUgdjIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggIlRvZ2dsZSBFUzYgYXJyb3cg
ZnVuY3Rpb24gc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggIlRvZ2dsZSBFUzYgY2xhc3Mgc3ludGF4IHN1
cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9H
RU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCisg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTICJUb2dnbGUgRVM2
IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfRVM2X01PRFVMRVMgIlRvZ2dsZSBFUzYgbW9kdWxlcyBzdXBwb3J0IiBQUklWQVRF
IE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYICJUb2dnbGUgRVM2IHRlbXBsYXRlIGxpdGVyYWwgc3ludGF4IHN1cHBvcnQiIFBS
SVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTFRFUlNfTEVWRUxf
MiAiVG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg1ZmI0MWM1YjMyODAz
OTlhMzZmNDdhNmIyODViZTk1NjhlYjJjMDAuLjM2YmNiMWMwZDBiZDJmYmE1Y2E1MmE2ZDkxOTVk
NGQ4MTA5MjFmY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxp
bmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTExLTIyICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBNaW5pQnJvd3NlciBob3cgdG8gZW5hYmxl
IHRoZSBtb2NrIGNvbnRlbnQgZmlsdGVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5ZDIzM2Q2OTFjNmI4OS4uNDYy
MTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3IEBAIEJFR0lOCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9
PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2VuZXJhdG9ycyIsIGRlc2Mg
PT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNT
dXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRlZmF1
bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24g
PT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVsZXMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDc5YTZiY2Y2NzU0ZTBmMTUxM2VkNjhlMTRhOGIwOTAxODIyNDQ4YWEuLjM4YzJjZTQzODlk
YzhiYjE4NDIzYmE5MDRhNjc2YWI3YjFiZGM2MmUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQv
QmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlOgorCisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2U6CisKIDIwMTUtMTEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgTkVUV09SS19QUk9DRVNTIGNvbXBpbGUgZmxhZwpk
aWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9D
aGFuZ2VMb2cKaW5kZXggMGM4YWYyYWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4u
YTYyMzM3YjczZmQ2Yzg5NzcyYzZjZmEwMTY2OGY4MjFhMzMwZThhMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBv
cnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3Bz
L0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1
cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxu
aWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRk
IHJ1bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlv
bnMgQVBJIGFuZCBtb2RlbC4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJl
NGRmYTc5MjlkN2UzM2NjZGNmLi5iMDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4
OGVkIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4K
ICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
PC9FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMg
Lz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5B
QkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFC
TEVfRklMRV9TWVNURU0gLz4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFm
MTU4ZWM1ZWU0ODNkMDY5NmM3MWNlNDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2
OWExYTk4MzUzODBhOCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAK
ICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0g
ICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+
RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJM
RV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFY
PkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>266063</attachid>
            <date>2015-11-22 12:44:20 -0800</date>
            <delta_ts>2015-11-22 12:44:20 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews103 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>882487</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAFBgdkcAAAAAAAAAAAAAAAALABwAX3dwdF9jZXJ0cy9VVAkAA1cfUlbpIFJWdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAMpbdkeFbrFMAgkAACcRAAARABwAX3dwdF9jZXJ0cy8wMS5w
ZW1VVAkAA8sXUlbLF1JWdXgLAAEE9QEAAARQAAAArVZbb+LIEn7nV/C4K7RK+26XtA9tbAghJtwJ
vLnttrkTsI2BX3+qPDszzAmZlY6O5USmu6q6rt/XTXnKV8kqCnMJtTo+XpiH377omcpTtjrsoa7V
/2AX9c8fGyN5WoXbeq/YCXmCukLbyt32Kt2HeXGSdb5ND6dVvtxBPVuGqmHO8MdwxP19dLp+5Gj8
h1Inywoy1uz9XUrx18c2zJPDafdXLrM8++lSuF3Fq/z6Y4Ge3iGvuxKlJeD3ua6qdcUBjYHi1FWm
GPV2MP6kwJNcnupQ92T0e4VRIdYyyv/Ns3/E6v1CbFdRvSuv9c4+OcAvB99t3qXmlIUPEkIPpupO
B+p/qEy362KV//mLGD3BIS62RXYnAp9k6GEMIgkxvhroAlQHYgGhA5EKwoDYANUAloAiIDYfW7Al
RAaYEpgEVQfLATsG04LYBseCMAYpQYZkjcWPLSg2mAkI9CQBSwUHFUNwBGgmVgBsAxwHHAMSGzT9
iyh02kJdK6Q3ZuAkpK5rIAUYJq2gb/gdWl/mAYMVAhQdVAYigSiExALmgBmBkZBvQtJPJh9bsBSS
DG2wNVASsNENFZIQwgSkDgoDaZKToQTxRSbRSdxiJqgSTAEMnTHIHxlDgosqZQA9cRjoymMLeARW
UzfArrSUkOJFN3QMwQLTJH9QBo185QPuhgoVzmJUdNTSHVDQAYPag4WgmJSoBOsSPbaQROS/CEFT
wcBzaYyAadQD6DlGp1hUUNx1vugHQ4CDpVSoc9BCpIPOqJSGQStmSNnQbBCVnw8tYEM6OjWVUqUO
84BnGQpFEcegapCoVBdqsK+62qZcoUAcAcOaMupJ/JlU5cNzpQ0Sm6qq+EMLIQpHECug4ggYlE/6
KUHDVCigKVTiUAUby/FFV2PbJDHFa1vUBlhELaIhEjYZwXlEy1gUHDEc3ocWtJh81izqf0w7NraM
qK90VMQoNFAFWJICib6ohRYCi6h2cUIJibF/HKqpZVDqLMywTfNl6TShjy1Y2C2fdvzLx2Ev94ij
pmFoVkUZjLE72ng3mHPW6vKSyz3xTvar+X+23TBDNGzidn4KV/s8g/qns5ocxsOJ/0j9O0xX+Byj
P8h/RDufbNg+WD60VOAcHB8YB98EbhI8uipNN75ai9rSwYJiYptgK2DjivboXF7kS8L767+fvJHX
VQz/r/MrWl+deuFOwtPvKez7k1X0DkypPYqE/J9kYSofJf7nhaK6BTzS96m+sYx/a2j8OqrPpKCb
xhlpmrJHGUPD3ynyf7pkmIhHFrU1DgMiC/W0TdCGY4n4ZTg0saGo5gQpCic5BPUOLyROskqKiAI0
WglhQRjSio6E5xAAaYJqguOKcIMsFca/qivVNQOFLSIYrCHWU6BwhSxoUFEBnUQMSvA/uip+qiMV
IVMiFiPToNuILEjbFgaiETIiZyNYIAZFAgSiQEx4atypKxWRYESI8kj2iCbfsoH8gX4iVSD/oUGM
AhkdeRHHWLtjPtUCQxI3EDrHtKvr1XEITDphluYQWSIuYIBImYhl0R1AIK8gm8oKRNAswjSaQohH
glQQGStTiHp0J1Agdgi27DuMw3BQBgXwRW+R8DBGNIgJREV0jG4hKn2jIh6BgBXenY5ZxeHA/Bgx
5U1HajQocBRONPovVAJ99ARRD/NJ3jo/1fGGhNEhNKNl4lSdBNAaHorEhgwXaoTImExZxf5fVIeA
i30SRVXVqipbGlWHiE2hD+QnfJlKOXEUuoWYd+oioiuREdI1S63okCl0LnqIcx/q1H4RFoKBiWZj
csO4oyhsSIlMUB2nRHTRISJhRLRIRZFNLIvdqFd3Pt2mRsKbxw91vQoc+Q8bABEfa40W6IoT0WUF
bVpV+2HVcATMb9Ryp44FxZsWsruu1f6ix/XbnV696Q/HnVanycd+tVoLOh1vfGs2+VqmvOy4PMW/
Me+56ea43KzaTslcPsha3ONxMMzK9mDuTQcDz3NftMWsk9ei9mUZtxfnaMfyuD29xc9B+byMesF4
cgnGnWsw3twCzzdm39fWd2trHtceWX1kNE39VcBZuzk6tkcdoXkDHz2b8BrXO65XchLo8gO6P/De
tLz32o2Lj/L0Pn0Z2EI5WC2R6hs5V/bqi8yt4qh4w+U5C5xrbfdyFL3lrrVbvOs9PmDR/sNkL7Y6
aOQz1hyfPkpvWlwG6dk+ac3ZJblZ+ou3b2XHTpCs8lezdmoMBsZ6VOR5U3VXxql5mUysZL5qtHBD
irfhfJy3j8lo3Ip3jWKR5EW43GpcTNkmdiZZt9bK3411vyyK9Us0cTee+cHbLWNz3U+LUSSN6OK7
3lQaR2e9umzt2URcNLX9oQydmK3to63WWoe12cvLTvpyUJ9O4bv5xrNjV9hspG2j/k0GDf8Smt32
9G3shIdoMvbKXuH1Z6+TImc3ptZ6Dn/vvJWv40k47mpWehsfAjN/MtViO4iHi6d2a8G248TgaeBy
3l6ni02ZLualx7FyQzauuXyCNfDdpxuP3bQ3fR7ofisdTNZ763r80LvGcb7NlnzQv61mk+vVXd+C
cjiolNeup5e1fof/Rvht2QkHSeCyS/vGF3SAy4PA38fb+UopRbvFaoudcxUjhS3eeyzSqzZ+/eaJ
jZ0SNHk6KP2yOnHr8rJspvNOt5y77mDyjJ6XNW8wf+keFp3lOcI28F/dAfewqVze5s+NjSji4do4
nD4WT91i3G37x5eiv7JWZWqZq6O1ORo1ccv0wLT9k+wvA/eo3S58m5k8sy4vqdb33hvlbq7MD3Pt
uFV1y+/3u+L1PFYus0tj0F2emzVlx59v6XB3Pe4MKTKtv4rlKBr2emy0K53h8W2wZQG3NpepbBjD
eeN5svV6bmvzcZBlGe+zWnpTNks98odCbfjdhZTz7s5yF4OPYdfttzQ5VN/frH4/y9J0qDV670Wc
GU9DzFwrsuVi064dnOBZ5/p1/24ebu46srTeJTy3Lji0zdHiWRPi2podWBGm7UUxfdtYmeBzjT3P
vPO+MztEtbMzT987ojMVcb/N0n5ns3e2VzlVXhtny50eI+vZHe2stDxxvtkEf39DJ7/nfcam/wBQ
SwMEFAACAAgAylt2RwNlT8jiCQAALhIAABEAHABfd3B0X2NlcnRzLzAyLnBlbVVUCQADyxdSVssX
UlZ1eAsAAQT1AQAABFAAAACdVtuSqsgSffcrfDwTzh65XypiHkpUREXb26b1rYAC8QIqKOLXn0xm
pre92z0n4hDdEVhFXmpl1lpp8UuRREnACk4aTXi6rGB/veHznV/yJEtJU27+R7hLv31sLPglYYfm
5Hr0+YU0pZ+3kzhlxfXCm/QQZ5ek2B5JM98ySdU8+DFf0F4aXKpTAc4/jJw8v6Iza/Jnyf1vpwMr
ouxy/FbwvMh/pMQOSZgU1ccCPpOsaHY4fM0JvN+aktQUTSILRDSbkiCqTdtdfjGgUcEvTdLs8uDf
DRZXf8eDos7skAXssM3y4ufd5tvVPyRBc8SrppNGGfkU72nzCZFLzl7ggA8g9GRDmv+RBMVo+knx
26fP8HGz8Hq45k+fkC/f4CMIxOck8IkWkcggik4i+KmRUCFRREyNmDqRROKLJOCvPfg+ESOiicQ0
iOET2SdhSEQNVzSFcI3wgAgRERlR2WsPhkGiEEOIAdFMEglEkIiuk1BHn5ADJKYz9AbZvvQQBBgu
UEgYER9OpBE5JIGE77AIGcIHgo8htF/kAEF9iMWIwogZEEkiqkokHWFhASbgh9gIAYNeeO1BComm
Ei4TocaKh5hzJBFFJoZEtBBxgMQQk+C1B6ZihkxGP4KBhZAVRCMIiaJgmQBMHQ4YEeVXOOhE5kQy
60IY+DFgbkILw7pMmEIMhWgyiUw840sPukCkCNOG/KEBQkb0gHATo4MJi/AsEB2y0vTXHuSIBNAP
Gn5pqETkxNAwK4QOjsAIh0JLhAmI1et+UGrcoKOgDTgJBSwlNBXUNKwNoTosrHd/gYPJ6y6Cs0cI
o+jjqWFR8zErNcJS+iZhDJF56UExiQDnNbDloL0jlSgRETTCAFsDARFVxFnjv/QAbQPVhDpK9XWA
JtRVYvp4FwBJBQw1XIGeZ9ovOqqGSISqRYRHRNLwCJgzNIOOHQX1hTxlExvm9e0GwHW8GlJAVBn7
B1JS69KI0BIqUX08CACiK79A0sSGhzRkhuHAmyFibzARb4pWtzTYKhom9tIDhPDNLzu9+ylLeQr0
qamqrKNSiIIgiD+Y7F0VzJvc5PeCpyg3+Wf3f293WA5saMF2cWFJWuSk+SWWRUmfjhe9V/b/8HRN
0CEkBLqHcvPFiQZtB3fbIio0ENyfHhF7pNclUCSNIlP0DEKBK1ViiaQnE8kgoogdY2mv4tJrsUXC
r/535D2vkpAYPaL3SF8ilGJwgZKeRqiGATtQTQH/5D7eeiBMqLVkYaUMWJEbrxLAsKucxfxFxG4S
JwUI+Ydg/w7SmDbn/HQNE4ay9HttDzKVnLb8coTsX8XoYe1CHv5rsOV40fS4j8PDDZQXgUEwAvZF
/n4qGT2AUkN+yY03J+z48iCTBfnQ5t/rn2VZ/vHT0j399i01dlqYq/KhLPeX8/YmGezVZ4cb/6Yd
WPjHV6/SizXxj8+Twf81Aak190N5mYRUCqwmQnk58h+UGm4kqDdwjC+hsAC/gmQBTX6YgwlsSaCB
JjZuaBCmI21EtQe4wcwnEUPJkgMC5B3VTPnD3ETxBPUL/doKuFxEbQSlRVbQcAW4BN5BsUHkYXDQ
n7RFCJGqgS2AhBQDJcWoZwHQeViHPo109CzXCg85wLVRn0hdBFvgMANZCqYSoD2gWzgmqCgQp8rx
3WDEEFDeIRnAATz8gE5F5gMtCkSMAhQV1kOKAapiIoy6gRQOihcCjZmIkvRExlGttIAbCi98HCIL
QqAAZEHFuAqMFYC/jFaQoR8Q8Sk6ZBj5mA/UCMQEDggKLNdzDawA2jCMoNZxrJdey9oz8oKM6gf5
GyHmDMBCoZGzTRyLQqgXqGI914BMBQJiqzzNJpCVz1B/eD1QAOyAj1mXG2QHZQSGEZBBkAWOmgAr
4nPbBFgUEDpDR3MYH6DxQNghtCbhMYF4AD0IrdXdCGnwJxUC4QXZBN0DkQTFhkEM1AMFMECgYKiE
8QGoEwoKzQPHh1o8jwMQAoCFMTBSkHAxSoh8BuUz67PAVAXnBW2En2ALrWU8tQ3cAgBEUbHzoQp+
HRf0CpIBAKFJQMahAeAiwDAF0wGv574Pc0AVvoE5TjIa3/Dp9Gxn0rR686XTdyy67NWrDddxuunS
smjmxbR0OjSG/x2ddOL9ebtPbLMUOnSW92mXhu48L+3Zuvt9Nut2O0N54zlFI7Dv29De3IKjUIT2
90c4cMvBNpi4y9XdXTqVu9w/3G5P9f5Z2z2t7eiq4c6dskf/9koPuS9Ntr69vQXyrIzjXuJSwbYW
Z3vh+HJ31oNsVpQqTqdbUtwfNWgGKc+sViW1lXlbt8W3lneo7PvjkkfrTTKemoK39pZHnRrMy3Zm
Pr+fDDqURTXxWoPTvkHd+/Y+aZXFTrZyd6E/6PXObpZy3J8D57BKfe2h3Jbdkb0QD0o5mOrvl2qm
DAt9vNnrI+/eyKSV094ty8dq0VLTVnvmBq3ROlci8byZPKb7rf2mpgN6M65yW0ofp9upusX7brl5
tN822ajfGGTrVrXVz8p8FCvKsppthi3BHYdv4Sh2ztIiGOqldWq3bGnKmTKM3PHxPBH27pnSyFwZ
duO83p36i8N1olV3yxK8q+z5XfU+naSr4JR0d32nfRuetPNkHBaRsFc3Mz1dL+5L9dL34m0gNrz7
9ygc7jfK49RWlUGRrU55kc7t8+Gq0tjtUGrv4ggQ50JpYQ/MhWWHOiX2RSeefG8MZkqvH89Wa8t1
V4cjH1yFmCVRdqreO0oVzzv5uhyUteGu04nLfkZXu1SvzidlpJ7Xh0a+pbO3R+Ktqqqze7il9dfH
b1DbLo3fIQfXpuIqHM5mrksz27JyG3qh3ylhZ6DYDdzszeayO/Asy7vf1lI/Z7b5CB1nEsqhPD5+
WttyWynGnqKw3WYfPFaPhj8IZSYP72ywrqZ27+rb5m7t3TNfngjxdqP4iVD4g81hvNzka2/2eT9W
5UYoB9VPUaYY2V2on9q6O1sPR9nGgV8TOuuNOzPahVbuNGh/0eqNRra1da/7k59WlVTp09NNyFg1
Mg4baRQO26dhfm5fpm/d9iPNUvcWFkNz1/8ut1ypYW6jXXi/rCIqFZkHVVcMxpi4NM1c4bmSrTrS
Veu828UjyjedO9edM7Ue62LUX+WbfOA3zkUy3hX7JYBzE9P9ZXgzacU3j2iZjSvqjZY06g63nmF3
HvpoGrj8PJPFVmCwbNkSUpo00njSGjvSWHRz0dvsuFuU47PbbS+CqWZNJ4fdgwVn2TtPjtZDP7Bz
LysVbR0e3PLydrSddWP4nmTrShmrGyPqJ8c4H5hi2vHeN5Ul901nqUgOXKU5MILUkYbe26xtrA7z
iRNPL3TuO0Gj2NxHo+WqOIfH9Ha/nRdFWdBF/OdfPNibdL+y4H8BUEsDBBQAAgAIAMpbdkeFbrFM
AgkAACcRAAAVABwAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQJAAPLF1JWyxdSVnV4CwABBPUBAAAE
UAAAAK1WW2/iyBJ+51fwuCu0Svtul7QPbWwIISbcCby57ba5E7CNgV9/qjw7M8wJmZWOjuVEpruq
uq7f1015ylfJKgpzCbU6Pl6Yh9++6JnKU7Y67KGu1f9gF/XPHxsjeVqF23qv2Al5grpC28rd9ird
h3lxknW+TQ+nVb7cQT1bhqphzvDHcMT9fXS6fuRo/IdSJ8sKMtbs/V1K8dfHNsyTw2n3Vy6zPPvp
Urhdxav8+mOBnt4hr7sSpSXg97muqnXFAY2B4tRVphj1djD+pMCTXJ7qUPdk9HuFUSHWMsr/zbN/
xOr9QmxXUb0rr/XOPjnALwffbd6l5pSFDxJCD6bqTgfqf6hMt+tilf/5ixg9wSEutkV2JwKfZOhh
DCIJMb4a6AJUB2IBoQORCsKA2ADVAJaAIiA2H1uwJUQGmBKYBFUHywE7BtOC2AbHgjAGKUGGZI3F
jy0oNpgJCPQkAUsFBxVDcARoJlYAbAMcBxwDEhs0/YsodNpCXSukN2bgJKSuayAFGCatoG/4HVpf
5gGDFQIUHVQGIoEohMQC5oAZgZGQb0LSTyYfW7AUkgxtsDVQErDRDRWSEMIEpA4KA2mSk6EE8UUm
0UncYiaoEkwBDJ0xyB8ZQ4KLKmUAPXEY6MpjC3gEVlM3wK60lJDiRTd0DMEC0yR/UAaNfOUD7oYK
Fc5iVHTU0h1Q0AGD2oOFoJiUqATrEj22kETkvwhBU8HAc2mMgGnUA+g5RqdYVFDcdb7oB0OAg6VU
qHPQQqSDzqiUhkErZkjZ0GwQlZ8PLWBDOjo1lVKlDvOAZxkKRRHHoGqQqFQXarCvutqmXKFAHAHD
mjLqSfyZVOXDc6UNEpuqqvhDCyEKRxAroOIIGJRP+ilBw1QooClU4lAFG8vxRVdj2yQxxWtb1AZY
RC2iIRI2GcF5RMtYFBwxHN6HFrSYfNYs6n9MOza2jKivdFTEKDRQBViSAom+qIUWAouodnFCCYmx
fxyqqWVQ6izMsE3zZek0oY8tWNgtn3b8y8dhL/eIo6ZhaFZFGYyxO9p4N5hz1urykss98U72q/l/
tt0wQzRs4nZ+Clf7PIP6p7OaHMbDif9I/TtMV/gcoz/If0Q7n2zYPlg+tFTgHBwfGAffBG4SPLoq
TTe+Wova0sGCYmKbYCtg44r26Fxe5EvC++u/n7yR11UM/6/zK1pfnXrhTsLT7yns+5NV9A5MqT2K
hPyfZGEqHyX+54WiugU80vepvrGMf2to/Dqqz6Sgm8YZaZqyRxlDw98p8n+6ZJiIRxa1NQ4DIgv1
tE3QhmOJ+GU4NLGhqOYEKQonOQT1Di8kTrJKiogCNFoJYUEY0oqOhOcQAGmCaoLjinCDLBXGv6or
1TUDhS0iGKwh1lOgcIUsaFBRAZ1EDErwP7oqfqojFSFTIhYj06DbiCxI2xYGohEyImcjWCAGRQIE
okBMeGrcqSsVkWBEiPJI9ogm37KB/IF+IlUg/6FBjAIZHXkRx1i7Yz7VAkMSNxA6x7Sr69VxCEw6
YZbmEFkiLmCASJmIZdEdQCCvIJvKCkTQLMI0mkKIR4JUEBkrU4h6dCdQIHYItuw7jMNwUAYF8EVv
kfAwRjSICURFdIxuISp9oyIegYAV3p2OWcXhwPwYMeVNR2o0KHAUTjT6L1QCffQEUQ/zSd46P9Xx
hoTRITSjZeJUnQTQGh6KxIYMF2qEyJhMWcX+X1SHgIt9EkVV1aoqWxpVh4hNoQ/kJ3yZSjlxFLqF
mHfqIqIrkRHSNUut6JApdC56iHMf6tR+ERaCgYlmY3LDuKMobEiJTFAdp0R00SEiYUS0SEWRTSyL
3ahXdz7dpkbCm8cPdb0KHPkPGwARH2uNFuiKE9FlBW1aVfth1XAEzG/UcqeOBcWbFrK7rtX+osf1
251evekPx51Wp8nHfrVaCzodb3xrNvlaprzsuDzFvzHvuenmuNys2k7JXD7IWtzjcTDMyvZg7k0H
A89zX7TFrJPXovZlGbcX52jH8rg9vcXPQfm8jHrBeHIJxp1rMN7cAs83Zt/X1ndrax7XHll9ZDRN
/VXAWbs5OrZHHaF5Ax89m/Aa1zuuV3IS6PIDuj/w3rS899qNi4/y9D59GdhCOVgtkeobOVf26ovM
reKoeMPlOQuca233chS95a61W7zrPT5g0f7DZC+2OmjkM9Ycnz5Kb1pcBunZPmnN2SW5WfqLt29l
x06QrPJXs3ZqDAbGelTkeVN1V8apeZlMrGS+arRwQ4q34Xyct4/JaNyKd41ikeRFuNxqXEzZJnYm
WbfWyt+Ndb8sivVLNHE3nvnB2y1jc91Pi1Ekjejiu95UGkdnvbps7dlEXDS1/aEMnZit7aOt1lqH
tdnLy076clCfTuG7+cazY1fYbKRto/5NBg3/Eprd9vRt7ISHaDL2yl7h9WevkyJnN6bWeg5/77yV
r+NJOO5qVnobHwIzfzLVYjuIh4undmvBtuPE4Gngct5ep4tNmS7mpcexckM2rrl8gjXw3acbj920
N30e6H4rHUzWe+t6/NC7xnG+zZZ80L+tZpPr1V3fgnI4qJTXrqeXtX6H/0b4bdkJB0ngskv7xhd0
gMuDwN/H2/lKKUW7xWqLnXMVI4Ut3nss0qs2fv3miY2dEjR5Oij9sjpx6/KybKbzTrecu+5g8oye
lzVvMH/pHhad5TnCNvBf3QH3sKlc3ubPjY0o4uHaOJw+Fk/dYtxt+8eXor+yVmVqmaujtTkaNXHL
9MC0/ZPsLwP3qN0ufJuZPLMuL6nW994b5W6uzA9z7bhVdcvv97vi9TxWLrNLY9Bdnps1Zcefb+lw
dz3uDCkyrb+K5Sga9npstCud4fFtsGUBtzaXqWwYw3njebL1em5r83GQZRnvs1p6UzZLPfKHQm34
3YWU8+7OcheDj2HX7bc0OVTf36x+P8vSdKg1eu9FnBlPQ8xcK7LlYtOuHZzgWef6df9uHm7uOrK0
3iU8ty44tM3R4lkT4tqaHVgRpu1FMX3bWJngc409z7zzvjM7RLWzM0/fO6IzFXG/zdJ+Z7N3tlc5
VV4bZ8udHiPr2R3trLQ8cb7ZBH9/Qye/533Gpv8AUEsDBBQAAgAIAMpbdkebvF68QwUAAM8GAAAU
ABwAX3dwdF9jZXJ0cy9jYWtleS5wZW1VVAkAA8sXUlbLF1JWdXgLAAEE9QEAAARQAAAAbZW3sqvY
AgVzvuLkzCmEh6maALNxQnifCSfExoMw+vq58+LX6cp6Bf37+wcRqLr14/nCj+PpkRCAnztI/xt+
EWcZi9/gmqq/f6i/gCV5qRMAGZHB/Vcf6vHvHxn4v0AG5K8kSn+xQJJvN0XEpZuoEByPIAQrTBBA
Afc6vA7aXJUJYxz2mnGOJKfXfhxpyZToTRNzzhKb/TS4ufsQ+M2fpL7qCGSeKbtdRl1LrkhaqykL
5Jva26VG6KEG1naguV0h/C+bjvo6X4sKZykJcqy51Vu8hw1yXpZCGLM5KHvrgelxPhJBNUTPjzn5
LF1P8fj5YQM0GFNlUQ3hvK0UQb+wJuBWtxYfSDVIk8belUSCmsBb71I5XEqs0KZQuA7Oy0t7RZQ7
VVP4iFnlAtCiR7K5EWk8RTsWsAilZ+xOh3JsD9QgX5r4Zia/AFL29FhWiFD1yWc7X7yMye+Mp/FW
UdO9bxjG1Es/FnBA1HphRcpFsxevc7XvK76DPZdNdLq8NbcDUC68QY3OplpwNTWHYb9LtQJ1S5Mu
JtJcxNjrlxxHnyKIGDA816PEpasrm5S5FTnJblyZFOQts8jm3Uqqq/hpcPO/UBEK+WmT/ICc1t7K
wdF34+mwL/t8yoe6pi325TRKfEJhTS2zkNFxwdeqv1d3Tg1Whc/K9TvyX+lOI/1O55N8EFb+gntF
OIep3yRdCz2MClSK6awzyt9Ge27qJVKxXSQxM3/HdNW4ZsQ63URq/QEaw0pBT2Te2S54hWMPrHRX
K/2OGbb/MULyzAlH+CwsylRj1U2zNlHHKDbH12tBKFk2+k+I30U/UydDSVBD0czp0jkPpN6JJ2ac
lyb5Va7XS9Z8JU69xDii8UBNDMV6AQnTRLsldMt1YKIxXW6372P6c6re9xbz2dsYDmv2mS1Osqt5
dQcoR2jGZCsv4ZZZVRNiRLmIfwuSAJuMJlYyVSRFAok5UEk5aMxRBYndxI12omuI1BccxwjGKMGM
kmXarucjc1+aNncfrvZhC8ZgwXSf0M0veTYwo0ba4ijOGiJuqEkRDmeplGRuezX8eiL1Dt/vHoHf
BhtvfYP2Z1SazfPxWKhJnzTGcxnj24LhbTMTGWLeNqf0K04ooWnrsSByjTR1P4AIKTaNEmhkRQvH
R3JOK5GEGyRES6lP3SC5K7YKJyUC+0XtuQM5Rew/FVNMph8dD/fzRBIwyVnHXJ/5c+7CQaJlXURv
zXrqFalv2at71Ok61fJGlOFMCnJeWoaY5Vk7z87zuHqk3+oRXE+/rsM7GUPXUOpjw4jwtiyu+0o7
zBzCPg3kyux9T9d5HJ9ZHcLMf0JouraL8LyhdOzA4eYjhtE5kMMeNMUuXaBYNgbPDrQryaysmSu8
F/QtYIdtXcvDeploCrdvi8xR7r6l5+DySsr5z4+wcGZl53u7twHbOx3qQnm/2/lGsHk6EYct5Qzk
9AR39Fv9NU2ElxngnT6tuTqjyN9G611zm0v2ymCeBJPTO49KW1xgONbJDtJHoaM5ITvYwDiEMfdE
+Euj5jsr1O8Y6JloNny/EbCVUB7mziMug8K/R1aES/PGglqM3+NyxhuO1ZskeCH2Rfbm8eCOz2Ba
hKRgpmKi+00HXX7Ny1uMLp1yj7X1ZN+5Iu0+XrGkgREDywf/iA4ZpjjSnQuQdvO9WE36wQQjDsU5
j4fQMy2Z6knFIYhqejW4FYw0/VBcF5PvGgFctAi6E8wRQhI25vny2Rgg07fifneDgIomtJt4Zl4h
ZiugkdrOrPQgsh/yKia5JBz//IP8L0vAkv9/rv4FUEsDBAoAAAAAAFBgdkcAAAAAAAAAAAAAAAAU
ABwAX3dwdF9jZXJ0cy9pbmRleC50eHRVVAkAA1cfUlbLF1JWdXgLAAEE9QEAAARQAAAAUEsDBAoA
AgAAAMpbdkeYXHl/FQAAABUAAAAZABwAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0clVUCQADyxdS
VssXUlZ1eAsAAQT1AQAABFAAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAAylt2R5hc
eX8VAAAAFQAAAB0AHABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUCQADyxdSVssXUlZ1
eAsAAQT1AQAABFAAAAB1bmlxdWVfc3ViamVjdCA9IHllcwpQSwMECgACAAAAylt2R78GdjszAAAA
MwAAABgAHABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAkAA8sXUlbLF1JWdXgLAAEE9QEAAARQ
AAAAVgkxNTEyMjIxOTMwMTlaCQkwMQl1bmtub3duCS9DTj13ZWItcGxhdGZvcm0tdGVzdHMKUEsD
BBQAAgAIAMpbdkdLBwZFCAUAAIsGAAAYABwAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQJAAPL
F1JWWB9SVnV4CwABBPUBAAAEUAAAAG2Vt66kChBEc75ic7TCDibYAO8HBjdAhvfe8/Xv7sav05Za
p0pdqt+/f4YVJOX9y3aYX5at+Iwr/NKE8O/iN2AoijCWCsswGsd8BOZYtwMUCvDaXKib0mpNCVJG
pbB+jkzsxfa1n5bUzQqUCGlcMByQ0XnYHRURMbwRpm6x6iF9LrywU6e+fpdzVydt4FRfRcEV1OHz
rtotyg322RGCak0OSPIbjcy7W+N3x1k4TBmIcOwRdMC8bNW9bsp03LvpMyl2A0bXqUP6BtETRSRE
uuAqA1BSCj1ozFU2IVnrmBO74IymKVCt5BQbz2Eu5oyctrUDl1PMXEDV1gz9zgUP95qbTAV4rWRk
yLfYuVcI25uSJl/XT7mJy4b0J5i6TYTIWljil2ORd5zPjYMlAa2aX898ocIKeGB8+aMSvP3VDzAn
knKDKMCcJWNRS/QItucp2T8Kz3wYlhn/mr2jHzhyE1uMalAngaFMGuO9TQ68jMcWJ1j+aOAWpW6v
Uj7Vbkw4yCecTgahdK8+2Nm9JcW5w7D+EC4qeQGeanqJHZp10HefTkbb22if0cyG1TKEeuVo0ESa
h6Pg2lBikvXGAbEXWRqqaYCIH9MAnJQvFc2/3z18snav3PT7HGZUPyx+cXZV0fA7KS5nUDmTlGiE
G0eO8AURS5OVJv2eBV4eksz1uuB5vR+5tRQpcmRB115V96Q6D68v5CXU1aGPHbJ5vptS6ATF085p
uHZwdA84jYVYyGZnXMC80hqVZFMqIzwrjbpEnDw9GnUX+pD3r8lptQA8yEmYBaTUDlwaXDQAxJrQ
KxDmylBgXr7sEPh0baI5S6AAthOsxUeHOgJdlmogFY5mmRCd5gyG+4TCxYeVA/Xb8J7nbsZxtxSG
/noQNn7X4tmKzG9OzkjqvRs78hnCHEx4N5pfiDOX9QaL6MSb/gFwKaL+yA6pYotFCUYyblQv/LDR
m2/seRFoRYnRoyE8t7MQJ+K0gWiUg/pHjFj4DDQuGEdqMUVwk+7oVozfVOIPPLHBb+1ue31FJS9z
pWgi+JjIBiJqXIx2b3bEbqqsOh1IU/cBSwVe56EyxqloPMp0oCSSp2mu/aPQ7nwutSx5TgM/97em
33rCkraWxfFecx0NWD+HxoCmvRzVa4cQ1XvjxbbEmmrLiCzluvmGvl76g8z6HfKFrO6E9XsUMXAb
qBc9AjDrE68UrQXD86G4vYvpwrAtIbM+n4cEUfq+KmnvM+t1YrT4M2qTNYrtRmZjzM+DCQHXzRHf
gw3XdSatYW4lwSCD2JrjaRmcLlMy4chpiinrL+JdsoJL3b0L12Pd1Xf2Yt4FuppRSSuMeLP8+RMb
PXNQfp0aW/JX0MZ1uCEYGFEaYazJ/Ilmu5CTldDB+2RO0X15ERAczKn1by1athkTrP0WWcVi/fTd
Q6pj+NBQbEk+c1bQ3fHbxdZy7dp1q4bdggPHBlXg7nyzMzzTjbZLhCs11FVdWDrFWD71ZZVGf6wS
N3y+DXonjMSQ6WDcg6INCi/MHaT0gGRYCzNKjA+9u0Y335+lb4zGGrnOrVzRQBZDN9J9T2Mon1Bc
82X4tKb2jC5tOAk3cQH6gYKuyFYGHz29vV62AzlCdT7yDLblWsL3BqHhW6QCjlOobZHqSuLtzEiQ
YRmn44sAGg4X6moJV9gghm9CXrlVRqvRdwnJD4biRDz7j+rBX/UnYiH9bsLxD/CvUoQ3//9V8x9Q
SwMEFAACAAgAylt2RwNlT8jiCQAALhIAABgAHABfd3B0X2NlcnRzL2xvY2FsaG9zdC5wZW1VVAkA
A8sXUlZYH1JWdXgLAAEE9QEAAARQAAAAnVbbkqrIEn33K3w8E84euV8qYh5KVERF29um9a2AAvEC
Kiji159MZqa3vds9J+IQ3RFYRV5qZdZaafFLkURJwApOGk14uqxgf73h851f8iRLSVNu/ke4S799
bCz4JWGH5uR69PmFNKWft5M4ZcX1wpv0EGeXpNgeSTPfMknVPPgxX9BeGlyqUwHOP4ycPL+iM2vy
Z8n9b6cDK6LscvxW8LzIf6TEDkmYFNXHAj6TrGh2OHzNCbzfmpLUFE0iC0Q0m5Igqk3bXX4xoFHB
L03S7PLg3w0WV3/Hg6LO7JAF7LDN8uLn3ebb1T8kQXPEq6aTRhn5FO9p8wmRS85e4IAPIPRkQ5r/
kQTFaPpJ8dunz/Bxs/B6uOZPn5Av3+AjCMTnJPCJFpHIIIpOIvipkVAhUURMjZg6kUTiiyTgrz34
PhEjoonENIjhE9knYUhEDVc0hXCN8IAIEREZUdlrD4ZBohBDiAHRTBIJRJCIrpNQR5+QAySmM/QG
2b70EAQYLlBIGBEfTqQROSSBhO+wCBnCB4KPIbRf5ABBfYjFiMKIGRBJIqpKJB1hYQEm4IfYCAGD
XnjtQQqJphIuE6HGioeYcyQRRSaGRLQQcYDEEJPgtQemYoZMRj+CgYWQFUQjCImiYJkATB0OGBHl
VzjoROZEMutCGPgxYG5CC8O6TJhCDIVoMolMPONLD7pApAjThvyhAUJG9IBwE6ODCYvwLBAdstL0
1x7kiATQDxp+aahE5MTQMCuEDo7ACIdCS4QJiNXrflBq3KCjoA04CQUsJTQV1DSsDaE6LKx3f4GD
yesugrNHCKPo46lhUfMxKzXCUvomYQyReelBMYkA5zWw5aC9I5UoERE0wgBbAwERVcRZ47/0AG0D
1YQ6SvV1gCbUVWL6eBcASQUMNVyBnmfaLzqqhkiEqkWER0TS8AiYMzSDjh0F9YU8ZRMb5vXtBsB1
vBpSQFQZ+wdSUuvSiNASKlF9PAgAoiu/QNLEhoc0ZIbhwJshYm8wEW+KVrc02CoaJvbSA4TwzS87
vfspS3kK9KmpqqyjUoiCIIg/mOxdFcyb3OT3gqcoN/ln939vd1gObGjBdnFhSVrkpPkllkVJn44X
vVf2//B0TdAhJAS6h3LzxYkGbQd32yIqNBDcnx4Re6TXJVAkjSJT9AxCgStVYomkJxPJIKKIHWNp
r+LSa7FFwq/+d+Q9r5KQGD2i90hfIpRicIGSnkaohgE7UE0B/+Q+3nogTKi1ZGGlDFiRG68SwLCr
nMX8RcRuEicFCPmHYP8O0pg25/x0DROGsvR7bQ8ylZy2/HKE7F/F6GHtQh7+a7DleNH0uI/Dww2U
F4FBMAL2Rf5+Khk9gFJDfsmNNyfs+PIgkwX50Obf659lWf7x09I9/fYtNXZamKvyoSz3l/P2Jhns
1WeHG/+mHVj4x1ev0os18Y/Pk8H/NQGpNfdDeZmEVAqsJkJ5OfIflBpuJKg3cIwvobAAv4JkAU1+
mIMJbEmggSY2bmgQpiNtRLUHuMHMJxFDyZIDAuQd1Uz5w9xE8QT1C/3aCrhcRG0EpUVW0HAFuATe
QbFB5GFw0J+0RQiRqoEtgIQUAyXFqGcB0HlYhz6NdPQs1woPOcC1UZ9IXQRb4DADWQqmEqA9oFs4
JqgoEKfK8d1gxBBQ3iEZwAE8/IBOReYDLQpEjAIUFdZDigGqYiKMuoEUDooXAo2ZiJL0RMZRrbSA
GwovfBwiC0KgAGRBxbgKjBWAv4xWkKEfEPEpOmQY+ZgP1AjEBA4ICizXcw2sANowjKDWcayXXsva
M/KCjOoH+Rsh5gzAQqGRs00ci0KoF6hiPdeATAUCYqs8zSaQlc9Qf3g9UADsgI9ZlxtkB2UEhhGQ
QZAFjpoAK+Jz2wRYFBA6Q0dzGB+g8UDYIbQm4TGBeAA9CK3V3Qhp8CcVAuEF2QTdA5EExYZBDNQD
BTBAoGCohPEBqBMKCs0Dx4daPI8DEAKAhTEwUpBwMUqIfAblM+uzwFQF5wVthJ9gC61lPLUN3AIA
RFGx86EKfh0X9AqSAQChSUDGoQHgIsAwBdMBr+e+D3NAFb6BOU4yGt/w6fRsZ9K0evOl03csuuzV
qw3Xcbrp0rJo5sW0dDo0hv8dnXTi/Xm7T2yzFDp0lvdpl4buPC/t2br7fTbrdjtDeeM5RSOw79vQ
3tyCo1CE9vdHOHDLwTaYuMvV3V06lbvcP9xuT/X+Wds9re3oquHOnbJH//ZKD7kvTba+vb0F8qyM
417iUsG2Fmd74fhyd9aDbFaUKk6nW1LcHzVoBinPrFYltZV5W7fFt5Z3qOz745JH600ynpqCt/aW
R50azMt2Zj6/nww6lEU18VqD075B3fv2PmmVxU62cnehP+j1zm6WctyfA+ewSn3todyW3ZG9EA9K
OZjq75dqpgwLfbzZ6yPv3sikldPeLcvHatFS01Z75gat0TpXIvG8mTym+639pqYDejOucltKH6fb
qbrF+265ebTfNtmo3xhk61a11c/KfBQryrKabYYtwR2Hb+Eods7SIhjqpXVqt2xpypkyjNzx8TwR
9u6Z0shcGXbjvN6d+ovDdaJVd8sSvKvs+V31Pp2kq+CUdHd9p30bnrTzZBwWkbBXNzM9XS/uS/XS
9+JtIDa8+/coHO43yuPUVpVBka1OeZHO7fPhqtLY7VBq7+IIEOdCaWEPzIVlhzol9kUnnnxvDGZK
rx/PVmvLdVeHIx9chZglUXaq3jtKFc87+boclLXhrtOJy35GV7tUr84nZaSe14dGvqWzt0firaqq
s3u4pfXXx29Q2y6N3yEH16biKhzOZq5LM9uycht6od8pYWeg2A3c7M3msjvwLMu739ZSP2e2+Qgd
ZxLKoTw+flrbclspxp6isN1mHzxWj4Y/CGUmD+9ssK6mdu/q2+Zu7d0zX54I8Xaj+IlQ+IPNYbzc
5Gtv9nk/VuVGKAfVT1GmGNldqJ/aujtbD0fZxoFfEzrrjTsz2oVW7jRof9HqjUa2tXWv+5OfVpVU
6dPTTchYNTIOG2kUDtunYX5uX6Zv3fYjzVL3FhZDc9f/LrdcqWFuo114v6wiKhWZB1VXDMaYuDTN
XOG5kq060lXrvNvFI8o3nTvXnTO1Huti1F/lm3zgN85FMt4V+yWAcxPT/WV4M2nFN49omY0r6o2W
NOoOt55hdx76aBq4/DyTxVZgsGzZElKaNNJ40ho70lh0c9Hb7LhblOOz220vgqlmTSeH3YMFZ9k7
T47WQz+wcy8rFW0dHtzy8na0nXVj+J5k60oZqxsj6ifHOB+YYtrx3jeVJfdNZ6lIDlylOTCC1JGG
3tusbawO84kTTy907jtBo9jcR6PlqjiHx/R2v50XRVnQRfznXzzYm3S/suB/AVBLAwQKAAIAAABQ
YHZHNiRBzwIAAAACAAAAEQAcAF93cHRfY2VydHMvc2VyaWFsVVQJAANXH1JWyxdSVnV4CwABBPUB
AAAEUAAAADAxUEsDBAoAAgAAAMpbdkftgY/WAwAAAAMAAAAVABwAX3dwdF9jZXJ0cy9zZXJpYWwu
b2xkVVQJAAPLF1JWyxdSVnV4CwABBPUBAAAEUAAAADAyClBLAwQUAAIACACxYHZHgpjKOvFoAgB2
phYADgAcAGFjY2Vzc19sb2cudHh0VVQJAAMOIFJWyRdSVnV4CwABBPUBAAAEUAAAANw9a1PbyJbf
769w3SryaQXqd/dsUalAQpLKYzJ5TB5bW1PClkGJLHkkOYH76/ccyQZjtWy5LRlma2oIAcLpPu93
E6oOffiPDDz4738oPXqb/jyiPhG/EfIbI7/5YuD52vf/d/Dv588+Do6yME9n2TDMj/I4/eXlwyya
FofT+PEojIPrY+L7gxcfP747Iofk3wMKf/MGRBFh5L/IJlCU3AUVTKfDYHgZHnGfe5MgicZhXhxe
FpN4BQT8Dn9AmGI7wBilYe4laeGFVxFAWYBbggSnGDDmDwwVLeDQBjhL+Ism0zg8LK6KlesQNiBc
+tsDqSCUH70sHEVZOCyiNMltOGNE04EwbHso33OvAMx4tzfBv14GWRLm+eH3fAWQ4YryAde0BSS2
ep/kZ5DP//CKIEqKcOQF4yLMvFEW/PKiSXARWm+nOEUkameg08sojqbl1YBU4XCWRcX1IUJ9WQKt
fswGmyjDB4R2BLuOUCWNGTDDt//1txRb0HCahXUAhBstB1RJ5wvcAgJ9cAX/e3E0QZ4cFof5z4sa
v6uBZOpfv/3WDId3BIdwblpcyw7uV3h+ER+lWXQRJd4wDgP4mCbjNANtMbTyoaJGDIjw5fYw14pZ
Fk7TrKiTjhoKd/S1cLhjCtKVFKMon6Z5hHojKApQJRP4Yh4ko/P06miYpXnuzREwzoIJ6Ez4B8F5
HI5s1+cghdr0dJhbxNiOVf5xOL2crhxJApI0VS48cFd9V2oWD5ql8Y26fTxMR+Ex8+mjWRYflz+D
2PEyOHQ6AYpeFXioR9Xf/4pGx+RR+VN/zX/T8XR2HkfD/zqg/iS48kDVoE1dNqrwy+HEype0o0vY
DvgYTuZ/fPfs5Pn795/++OPTKXn3ZgWTAjhNS9MPcVGovHx2PonyHH5gLZeBXCPn877ZbPVMTSxm
JOBGPlwOS1IvL9IsfAQM9lcjgxneN399OOGfXr5+Qsn7t/wFOftU5y/B/X86GrXoG43v9Luvr979
cSKpePrp5Kuuo1GynmTjsiimXvj3LPq5wQwo8JzVgyZl+YX1pFTM75mUz/kf71+JD2dff3/54p06
43VSciep3ErNLRG1ScNpMuDmn09PQ3qm58s37MPz11/5N3X6lL/UXy0azsls7QmNk1npf/4M4mgU
FJuwqfrG5h9f1Rfz54dvHz7Rt5Q8eW6RDqcztJCOaTwD33K9s0swC0Ep/X9CTyNY35pmgdVGNQPu
eu9eCKcv+NtvH8WrNy9OTl++eFvnKs3JPypcqJGS+Mr0jMUvn8/M66/iT/P088kb/s6CRSHkfmTT
C6+mgFq7kFIuASk9aYkqGbohJCZ6QEXvscriKE2iJcxAOgWQeX50nmajMKuSb16cBqMoubBd1XDA
t9JuQG6vkoEvgomQOL24QEj1fBVlZEDl+gTSSho7TodBvAQkOAcsJbWMEaWYRyR+G/ERm3N5cLFV
CBLObny2/e+3JPPS3JYSwnSyT7jDDSqOG0dxEWaA+aMgxpR/lX9daDArj1MJQTnX24O0pMkx+b/4
my0tX6Z7OcAjDkhcyfrf5YAy4U/gKtTlKsM0/RHB+UfpDHXm37MUk9dge2eh9ysqLr08nERgEOI0
seFQE4Lsp3ZlvFJKQWaD4Y+LLJ0lI9slGRtIYjoh1wpG71Y3KmACDDt3R+iSRaq+UnF/XlzHoVXC
9IC1Kj81CtgNr6OxQ0NdF40lpybIa2WBygxT2aqo03iMJCx+pdkPL48mszgo0qw8D17+GK7t2dTy
o2E6AZkZHedFkN3mkr0lnVov1/mylRO7SVusR0mpmsAWc3FfKIG71xDyaBoUl8fVP6OH36d17FAu
9H2d+CJsRUJCkemJizacwP/DGboU3pyeH6+noTcJi8Ce2GEDLvh94QNLMFlLpmYuFrBeg1lbOKNE
aY0KrlNIjVadMhfrkC/qJeNghDhDpNpoK6gCARU92VROhNvZ27lsVPEO2f/qMrMG/EKAL29Ih9S2
EBqobEBNkt5JTbonCANqo8rUbsRYCmfCZORNsLZbAEFKFTE5xvjzyEYXDhGWEf3BvLKBFLwfiOBj
QYAfYMBnByyN3zNvMEb7JeB/Dy+DLA+L41kx9rTlitL0Ss2N8BXtKXxam6yQ2KZjehNLyvfBsBtx
y3Tf7OsSGbbDoZNX0WRnrDYG40BGXHTzQ0pAUqeAb5sE5Df99Mln8+fn0xdf3p2cEmJJ40ratw2l
vQkrc8sE9MQCFgIz0zOB3/paf/v4ifgvzuhr9clGYOqqSYC8G7OZRDEIV2WfwV/tHE7hu2I7u1uj
2WRybe2rZG6cuGI2/p4FWUh9m/sufGSpe0HymoTATfbMnhQgypfd21Kbj+l3hvvzSQ0Ao9QtqGwA
cRGNV6UUA5ruANRpISgES5Tu2feXlN2rf0p9wzpwUM/jdPijRX5fKo3JzL2lVMdBFNtTqtItMmmR
oGCCP2SDa2jfDtWXU/bm8+9P335+9Uw+//rlg8XedhIV2ZhuY1QkH5ZDXP0Th05ePLwhtGdSnpFv
9Iw+I6evvr7Ub4itQ1CofwBCFx2XNRQqzXpG4XstP5Mnv7NXJycv3tLnlk4uyeU/GYXGKSG7VfvW
J/b804sn/OXJyWf+8rWlndwpzdM/CuvsJvqW2OfqhDw7+fP3p1+MFq9ePbG106gOlO8kHUXj61u9
uwgsAEnWeo+vwTCqB2D4hRb9Xn+TCaLuvFp+BGcviJLbzgbb8JBgbrFQM6tFTf1A3oBqpXboALjT
pmHtjtQUcxnuSEuGYeyNZkg4DxljloGYZ0F+aeVUhdDUXjpQqgwNd4nNXBsoOHfKO/5KMOY9Og/y
aOgF+TCKrGV5gQWUXbp3gvM0K6oWbC9N4OPwB1LtJriGa1h5hGoJsbTshkduGl1xViefDYdhOLKL
M3D+gJMOHOqyByW/DMMCeMIqZTgLfR/XA+negWFub7jMOvX7UVBavuiccey8wiEIZX6/RKtEW2m5
TW+htQHrOsTqjyXjZYRjIX+ZJyazuIimoOCxWwDr1faZb/AbmCKd0WfBH8iOC73YKNvMNy1nijfr
yJbHaBrilxw8KLGDPIzCcQAY98IEfMQGBpWStWz0FU4D6I2z70SDZBCXiGgzme2SCDcl2p2FK6+s
zHt50UUC0cnIpuTsXgV4pEKafrmqqe2UC+Al2bEG8s6DkbeME4ue5cDEvvQ70ehxBM5wEHs/0kh7
mV2pS+Lvqw+V8+700zRLL7LQ3ntImCBgFf0eOOcGbAPbECYH3LAdqBcllxDAYD/xQgN5q8PJcADQ
UA27MQbUyB4v7pFDDGYttSOXtqz2YGkD2K5c8wawvOm2Tp0N67T/NChAWJPF8hEIZOMPZduzdSmO
AbVs+lISjy2uH+V70xJmJ/MGzjLQ7WcUeMvpiDt+n0JnXZuO+NUC0KaTCFhSpxLzGs1gbVbQaLFN
b3drUnzCTQM4Wi0he5a/vMjSH+EaCeToAoq9CYWgO+B2gdGyxGi1G/BPmVtbeSP5KmB26rWq4kp3
6hXRpMmjNZIOeKtYRTapmFlhzUspXIUg5K43a8sSgqjtQYU/caSwpNQRdlKEWb78NW++uMwW86CE
+3oHvC3pFcAg0K6YTVf4g/vguIFgcbM+KpdNKeiy0XoyvbtdQQ7oxhnCbX8jMVSDq97OWLUgwuru
OK/6hq1pHFDUyvSvgVqDVn7TA6UXBpPDII/y+t66dsMxTkILUAt7vMvLzALZHjD4T2EwjbAEfV7m
/CPMpJ1XOXIbe+OcoW/IvqRXtWr+lbssedPaHW1LWUELAr1GNKIKbNUs78YnaUPAZ3zaBdy2xGOq
L1GoMj9rnX+iSyQ72JnxLI5zELYwWfo0jMOyWXkUjcdhhp9Vy9asXg8Br0f4dG8mjvq94nmDk0e0
Ji37UTq5LvdZzzqh3eA2bVEHnM8549TD3WKnrbmRgXRqRoQTKtePBlsvywgDwmnRNzZdnL2l0dkU
l55mHjZJ3flLBbhx6yo1EP2z3U3VimjAwUJ76CowOmhV3u1Gu7rotgswU0F8GWEHzPXR/E9vBNrt
AnwLr6ptMZ+uX27AcKvFTmxT64FI0gL7EEZpEjaMjhMXx2qpJ7oZwJx6LVcWumA0C8dwksv1WOUg
kaZfrD6aH+S4vqJaUt3T5YuoaMgOSNFyfMgF7M8oL7NAcZT8aNj/zFr2sGypa63jygRElmAy0im8
uqMEoyTBgfBG75JQjntJHehpm4Go75PArad0N2HsfkBhUS8q/519RkFoIh7YqWPg3XVH5prKbshY
Y0gIzrliXbBjFezgZdOkDkdThatcurlFffZAGJyte9DcyKyklYx1hBTL/nyCJTaHAMRp3QO4kX6n
oNZscXIxkMspneUsHpaZb+dNbG1D4HkQKkgnDnLzpSi9H7XUcpmKwsm/lVI7/FSUdJ3WLI0yLnoQ
PSOcKCcvvZNWDe4iKxscnuksv8yLhuSgkBr+pPfCYduspxErodrOLNbY6UsMqEdfiK6Sw3f1iCUt
zHA+TvaqjecLDaTqVxFvszdBdtjyU8ElxCVaqLvroHxOqy8eDi+iOitqozrmxZu3eywajww0cymH
3RnbLrfqjbz8MmjYosA4BLgrXvvuWnx2viajRdmg3TsTDdn1quDh3aTWx1k68UC9Bk3DGcRnquW+
kJYuwh11Px9BtYayTJOWi5D2XqzYaqGWEa6SjWtZ4+B6zo+zBDDllftecm8+7nFrI+ytHwZ7czsr
2cFn0xROYachGrClxSPVnPFyee+AnRxQf/7jB+zpp49ntbljRgeU+51kay82qCRBOHmgmPkVYado
7qGnXEeQ5OKBnts2SY4HNvKBHviA0pIL4c/6sZVT+XddqSvHqH5dlYsYYH++Q6tDObvk/boMEy8J
fkbgy6IbHfwCLVLgFzEHbm0hUehQPRS+8sYpeOcZUKtOFeFUAq3nF9GPXqsfpFAOLv4iokBEL6KY
tOxU8gog/EWI0c35dSMhiC+xHud3Vt9pk9pkTPZtBHV3F9qcHGMuudQF5ZajkBoNkW2DCDBqr3iY
AROsS18py6vcu91DErh3XrqLQ/kqC+Ysqi946GBEifc9t/dhAWI17TzUzkJwcgDdjdE2TppJuaMo
FmnFnpbYlQEAp66YeV3x+zS88KZBVkRB3OiLSZ+1XLh5C+Td7x/WXOMxsV1EcLoP54n5xnR5F2q7
i9Rm96C4JBKxu8ekZe/pCohJlA/vlKom5TLqekqaaYmr3gXZA91d8hQLuoMCRy0QJKNSBZRqARTe
9Vwv2JHH/ZajaJsjX1evhYPXwvkOVvrOI49zReQtNFR6/h3n94eXUWwfgfWx2Cr3h4GGDngcwGR7
yeKAGRfuyYery8wrN1KVY0Vl1gG/laA1D/Mh/Ii9c5pSSXAb2r2x2nxbIhN7qv5QvlXLcN1xsbF1
buXrNY6hwMyPi92tnkFBIiONV9eR3RK/yYNjROP2MbIfN58TX/aqQKzhFua2mIvLkUBAibEkYrjq
iE2HM3ASQ8BrcyaIE3x7eYfGjJtZ8PkX7O8SE2yS2APrNjMtBxecarIXZdjuBZ+GGy9utFBCEC2X
tjcLx2GW2eMLidsJtOwitCm3IKwH5uM+Pt2RA0YbHTCX0uT2/io+ieSOt2k6LcMTsFcAsupAnYIy
q0qUZQWuYR4YOwuF2gc7EqmkK7HqzOgl6XKRcX0VlhHwhJyK+g6ENNrsRbqZ2SmHMF/+BL/tplXR
BwEfpskoP5zaXpAD74qTLmT7BngRZBf24oqRwm2Wx4VghO7HkjPfpRFgLcnoJpIxxvZzOfAJ94RG
Kl3YsMOYZu5uyx3YM7/NaZVrC5p7hAXaVNWVhrYBxZA9L8KpZeEq8NBW7YL2ZDtYpKVEYZVcnyXF
Mam17wNxFe8PIK0DFC4tc0vVjHAEB8C8WkN9WkksGPaIRFa/k+L+/uARfEWPdSKP4WRaXK8boyey
49Q1LgYNs58N2XJGqFtrwS1/XGdRHEdD4A770jnG+EC4dLhsuFZS5sislhUEm3aVFFq+XuMrlTj7
TTuHV8bp9qwXxAZGdQKwrOoMw2kxX19JvYOn/oE5O3hKDrSPn588Kz/S8qNY+vqT8uPq0AWu+tPS
9HK4nc8mBnLXjoMaK5ahyK2atL+IiPlhonXHWBkHcVzmpnfFC1ZfWI8M/Dg63vWIiEXtd4zARQ/o
tofz3j35sLo53ZCBYfphH1Dxbqh8d5npLuxXDv6BA8il3ovCXrzvRHvm9jO4MD04BaSog1NRfn5y
cEosXM212uvNyf3c3KOWuzvN7bvfXeyiP0YhjoxfgxVqbuTAflQq/X0VKeRu9ynmHYzNqVx8OGYn
wbzdLIDe2lJWeW5BcX7cGhOCM9wuiaysDQHT5G4/APrBQTy9DOxtFbjXjW0PzGnaB19dXBe7qF2D
XFoLcpmUW8FcHy8t+zprQ11wjM1WSK2q7leTGJllntVdOkBVAcEXs8p1uOHwMrUt0cSHbJTo+76W
SFsx1i9lVyNToxHHvZPWEoCTdk1PXZMW1JGgvZOW1+/b7mX7jq/LAM/SZ/u+LiipdqOtPVxXtGob
7BiwEJgJUdvr/5tcZ7VIazEwH15NQXDtDSsCdyXS7UE1haBhOrZ7IsoMuNppdKO0m2VDUgFxZskw
2ChyXD3TRvzynb9H5TefFMd+9dlZmtVMAZZVykFB0S4t05an8e4Wairc0OhvD2dNkwwOwpX90wl8
KYij/zQW4qgPwTQXrP9ranxUUbozbftCnBStKsQ73scMpGH3oHVA+LkLu9yOqk3TrMhvX5sZXg8b
dkpBBM7ZPdyRG7wj6/yO9S0amrdcftLDDSUz299wzZ6Zw8Pt7l/52orzLmRyU01XEmo6tCLl5/PX
+oZxmjc0nOI7n1tar07IqzF7ykhnSmh542UdGj7QpITYXVyq+c7gArvF7G2Vbbf5qd2Lykpo2fGV
6vJPfLC+xsG/iZIc3+VKM1xGkKdxOG9DG6Xlirn5t0MM5EehVy2ntr/XTSAoorxvTbAGD3M9oNku
WFhOBs+/VmYWLCtvfCxQ+g7CYUvsrs/X2J8hojgk7AB/FXiSzpfwb9oqWCZsqM/24fyA3ZTbRGC3
JJwGF+HKMmFv2vC4i9TlIg03+ZxPj0eAt/xH4wNBTO7DLol2tb/dObGhGKtEy4T6Bl5c9OM1zT1I
MhDM34/m1r5LcNqQCbVfhmMwIfYswjho2VnQPX+L19qhgl0ORvZ1Oy+Zv/C5qhjNQOtdhGF1Le/N
K1j2ddn4NKJQ+9CJYGS5KzZv+sjL4aaqArG0caPk0RtqVrJvVWlS41py1YHGXPskKGVy4HTbJld7
igPYd3euW8ESx/bQ5fGEckXvrBjr+SO09SXHPs71+JQrLffoXIOp20+Q1K6dtwMVLYzsMBzLsOM1
wThzPvo8b95c9zBqueG5szTNzQlssbYcGEX2oWcUo/4++IQp5ZgcGafA62OcOMqzobfmNT3q49sN
sgMjtFCNa58YJgY4gu2J9/l2JRnE2+3v/xWel0icpwbKmGuCL3QD0c7gG48WA4rH8598X/3gKdYu
LFsivYHgLikYi9XN4a+TBvxytyDz1nlJLsB5+XuWYkxb7rmyxlbYE+qUnFxhmvlb5AsnqU5HLUBd
SqV3i5uxgFmEk2k5VVqScmvqEUxtdRxBzAnZ3HfLtd6fYDKX/IhD4CqI2SUDgUtZR1F+Y4nwKfss
DOdJwtIDrsYfb0eWrI6aX7KWkzJyYWLSbky5q8QLlXQfFopwl+hsSafl+E58w4oynERirHsBqAIj
+0NcLR/mXsudy7s882LRmOVRbxSGU3uMBDZ4N/ZYA5c0w2UG98L3BPc8sKfrjXID6jT4pZXYk4BT
n+1k3tPhrNwE9gvfU/QQb95iORhtnGfmqhuT1Ax83VQI26U34ToZelVJ+6a5KErm06ThfI2h1VQJ
jHxFr3G+PbKXZOsqk6ONZO1WQzrwkj3Jq/B5u/1IZFkO7cUrX3bhtvXOCR5Mu2OguIyyUZnPXGzG
gSPGwVXj3hLe9sU8CzrwkY1yD/TCfFaO+tLzR4vn6cuNv7i3K8yytGkxGcPnZ7sgfulnL4hfd0sU
AY3heOXVUTX42mNXNDwaheNgFtdd/HYrzFQHHdLMN/vp6uW0mypuxdKzIorLF8tA6kCc/o+8K2tu
3EjSfwUv9lOjVffhiI4Otz3emY2JfZiZjdi3DoqERNgUwQFAtTW/fisLIEUBVRRYOEjYEWo1RR2J
ysrKqzK/zF8e9tslONifALKtTOq9b3lV0D9I+m48h8KuN0kfXmsULgdJoYNdeC9Kqkb69SqmPaMq
zmExUiwjjFTPGu0ORxSroRwmXySkVE8W9hZHjtEkV3Ewq+OqK1VcTHg2YPj0uMstIPmWVcttXRoA
7NokFtV5QAVjtinlqvutQ3pTBjKwfruK9CRi8eN29eXgfTZtoeyI2TwSaxYbGPFpAps2c/C1RYax
kRU+hQ7ja+oFjAQfQQ3680jg4pmTeOV9ldd9AMHEda0BFzegdjQjYx8vzektOPny2ppMhfDhmDSx
yv1sKYu9y6aBxaq2ouPN4CbnxZpGYUHyJaAuVdcxCynw7Tymqr3c45yqooSy6m5zqroB3DhPTw0G
D/OOvNUJQvPo0mbQGsjUrumOIllfPFFE61c2GndCEpvoUQ7gj1crMwtzFEGAQxFSczvExvonNMIv
uWdumpBWhDTjHjbgdBKAEaIysxtRw9s1x1pRANZCAoXv9ys5SwaoSR81CXf+IeX6Q+xFx3GDttox
JNfsYoiseiWyfbnbl26uVKkMAtvOxzsI9QAzhMh1mH/JJD6m+mT6D0g7bpQEisKqNBzG5EjIdx0E
s0JCgs+DIMFMuqoeAq5jvHkwQnG4Da4xgh/SEmZMLF7smCwToj0/ulNucNMUUp/r4F9VFdy4eagH
/KngHgVgnr1vzZ7qCuDKBOWJbZKFaBSaVM5MeFE4Yrp3YFxz86c0X26aVdUWSQfw/qjqKR0WL+68
dGiQji7LUQGn/rCt8eEwvB74qhildboJ63Srr3yLhtHqMPsPdAl0/n7Ls+3je6BeZlN1x4Eiw3DB
mniX0AMSk5G/6iq3fekmaER4J+h8dSHyU1P8jNLgiofvxNtuGXK3y7OyavvytBIwBDRUpwty1Vn5
voHeaPka3XzlAVjZbfjKUMtSKIDaeW1/trIeE7gh6BQcDcBL1mg1sSd8X0Cy8CkZVUSrUjFApQxj
70ncXql9w9iW2idG7YtBheUMjFYjthqMlSd6GN6A0N12YNZ/2mj/HKT38PX3MPLHaM/V4RuHrxv6
ARApKeKTG6vX4klHvM3eGunG0m6Mi9Xkg4h2m/d8PWMHioxS4+sLPJPn1LN4Thpi00/7D/Ps0RAs
0ufkfA8iwjNhCJuJgEk5i+cM8nSu8py9w4yToAJQhkrQ1NnTokyX5gFf3MEWg3IYNQsO4ZmYCE3k
EGHKSUVr0TVakYLNgkWcvz2UD2luvMEJ2FQl8SMxDz51G65yA7qLzEODcIKHOJkdDyPlM1GstJE9
rKbijMSbGlJLMj4PN0fPw+gQOY/nbE4wnkLWiNAsNEHysEls4ULc7fJfM2ZO/1geJ9xZVY+Uls5H
CrugbyS4+2xJVq6TPMAk201CV2db0PU3E/zqD979rpgqSq/+uJfcrnYDUPBlH2Fwavq4jc/dspod
ZB0HqHZIcjYJem5boWwFB6ilUxCW3WJfQMtdXCzzdFceG8R27UZDWCEjA6XEm2s8y10KaMF9Y1t3
35MI2zXQ7MV6sUtq6bSIAi7AP7BZiI7Cssa1QpO8Tb0LEsmQ7IUbp2fpQTWEEVMSX3ORnNBw8Xgz
Uvj//vqP+Fu62fzdfLNuF3RPvzWE5fna2ndN3UOWNXyc6r4E4iHeY0FVheQqXkMhzikWmK0HgO9W
cD3nFBqWIhJkkNvSYmsEqFjDRj4X8S5NAJq7pUARFFaKkHuiDhTjZbZ78ZPlXF2f24SzKbh9Sd3n
MIyuL+ZC1KBLz569t6WUmH89GFkVAJ8rL7F1/bRHgg6GRFdNqDXSWkXTiGJthd11o11Bfd7dNCBk
W1QquvfZ6qVRVM6q0jmqGB/AcaprcH3TdDCHpjERLh05NO+XL5uk6vB92pfViOqdxQkrynzvHu3K
hOg4pai73aqrrHz4nyIsa+GVnNprA+jHbFvCOzAIwD2zCHcEP794sc7yCeMsEt23psC/ue22Vca1
2c6BCokaonsSjrYJU2O2QrKsl9UHwt5d4GwE71pQ6qGTjmlJqVvnEEyHXaj/LFKhR+VpbWqpGpTK
u9KIjUbtSdEpiPX4HdrHdbA+0a+L50WtuQ54XdsXgIFxhxeA66/REFL5nyTP4k2yfSzXbnA+iYcm
09ogoKJ6aItDw3npg9rVdg5Vny1aVvZzDePZ6yJi79gQDhNtxDCJj/eWJhCPCEPD0/KoCMY7tmH1
W1pdAK57HKtqUIXxjXd5agLZ8swMICYB6mUQOX+1y40hA1VdIyRlezg7FYzY1/vF6mtVxFm4BuRQ
GB07OJXP1evW0Q3KMLt8Gsd0CgJQEX3C/suWwkWPmBcK+KBOpNYUh36Dev6MbZAu2nXqgb/mnjJO
AWU7fAXZ1uq1Zxia8WSeAEL0PHkwD7B2JD8RZcyoOiF1SMYnkFsngFeN78X49dfLzJZTtqqmYcwH
IX1s9fCPTerKT/Nn3yzgId2mxdp5BS4a/ihgrv9vQCHqlRdTdQ5jmLLFb0OE6KFF77Tmyy7GuwCM
TKije5iO3eohhguctKySY4ecWOGLRijpccSL9D/29rDyYKoEkn0vJr87c0eM0oiH3G15QbkceFwE
hh8GGeA2lSJfAnDiOtnskrxNCyPFOkKKqimAdmmo9TyTB3DmdboiGap+OLsHxy0gq/LKrVOc3cwL
I4UpDyN09EXTlQnFMxt973eArunGLwIgQK4G8XnbFM+giHIyHc06ozLcyLZvC6PRrO7cZmX68GKO
ydbZacOhHxmTkOv+d8cxeID9zX7qXqWKi/si2+yNewRTxYrShO3xt3VqTsNu4UpAcGIcM95PUI01
ekiT3BsIKqxMjCv6MbHzPImga7ATJQ33p3Vif7f5bLvQPhkxcJSBaEwCjkGRLPcm5nu5W+WLxzh7
tp7BUwZ3TnW67UzKD671RUiQe6R6KinOqz3jhZKIqAC7WkfNx5l3sbGbHlTeMOPy1lU4LTmqnIZK
5+8eP2PUCm8VhNLDkbT+CWnwr6IUeKJ8lACSu3KHKJD7jFsEZcT6O15+gtxBkLARCQoXwT5Xze8R
lC6ChI5HULn2EOvxCGoHwaCm+64EqYMgqJbxKBIXRaxH3EXmpjh1DERCEiuvuro5qfQQnxjjZ/T3
Gz8MRxoGbnWbvN6dYI0646quhXESQo4W4tUhAR07vDvQGcZwF+vs2z8SmEeT/w1ExJlMwirk3sJB
7dHEj1vC0e8cOdwFLXlHbJf3nQXicxYIJT1vyBpeqtm1xcaVn2YAgciGJeaLo8DXp32vNM85cXRE
xUAaAmcVg0QyLGNgnGDbtBgvNnBzCop2k24PaYvXkmL3VA2jc2H29VitUwdUWIsfe5LUsA+U5SuA
j6s0dlA1vmLDuNrUe3o0vR3O+Avu65jLcQMbxqLXFdjHMcTNIy429th/tugFHz/eVR8Pi6Js3Pvc
p78lxcf7p933T+lT8q+XXfLJiuF38Jb9Oz+Wn1D16pcs/4TaMwMwZQBMgubA/G0W22sVx0WX4X9Q
udf0i7AriI+Az84ZnvNZB4iqcxUyZBUd1TptYC+CWmdqtNa9Edhm1IjxV9yc46JH0uHglRsjDLBe
xXKxdXgQRMJ8LoQVnh3PYgvcGxf7pXmCwqMJpBimofZtwqaVPpdwBzGjw3qfL9LNJjkrfVKyOZkC
42u5lSjRMzMGvpUgwQbxvKTX8xoN2mUce+NllJqfMvMtZR7+mF8v+xZGkZqruvQtCVM8n8DFLMIV
umA1C3mzsY2721koMpq7KRuAAVV6Ec3IwOzydFv6tCadqap5MKfTcyTJjLTMYp8vPOtAWg+c5HPB
oI6HHTieTnbzi4n5mE0ohd+ujJpZeWSY4fETvHXGP6Saq+Vh/lrEx+mwx3J/FFewHe65twxHeE5O
2y7Pfq1wVzxxJ5HzWUzpyT+pSyH/qrEZjXEZkMh8TnKoW1q/3OfpCjqzPqdl8lR8Wi3KxQ8/YkIZ
F/I7+VMzORFhHVRIflmO/jxUM+IMIMRntJ3PvlxIv1V0rzTinCk2reR8sG98sW84BUmMBz04lpvm
izMIY3O9XqBYz9jH9KaYpBrLbJLzZvPGVFNHlCcmYTDDOOU8xFuwRDGeqJ4Oaz7e0rCz+EuPR9BV
qETwiJvnqsUigo1H0FUYRdkNmYsL4MgY0yNujau2MiiT15Wgs7ZSj0hQTld5SPyljhiNQRBXCgS5
KHJ9Ww4bMV5Orzr/bWECgBis5gF2roKMOAS/7tocyXVErhiJBpXk4AuP/AhxmmQIj1BH6vR6uG10
w9ffo+D6FMxv+eHfrUsJgkuc+vm99SiCy9t/+nMX84ijq+rqD++rA6HRbJjcoY5EX7G2Y9CaDijg
nYHa9GY+tJyJ4vTeEc/hXJwprcBCz+Zc+0oqKJunavKeCnIVe/BT/YbSCLt9Qon13NSmj8ecjt0q
QD0oFXAzJm6ZjWcK4ZG6aW13pookqKjj8v5vE4tzpW7/kJwrG5FkprcRiqOZGQJvoYsWc4jIztS3
XNi9PHpI09XE0ZC8dLM+45IR62fBoxkxH2Q2NtdX74KGxC8pzbkBrOa08AD6SGq2cgaq4J06Ick7
TVnWXUxWxa+aex8XRdrCfiKRCIFUaEp+blZ0EPpVA7K3ateFgaNUXb6w6S3k+Yog2Ql//8qL8FUC
4UvHmFxHP3/onbgipNv0Ie0S60vUuNvZVxju72YgJ54SI9apYEzfgC/ri/MYmcEx7VyYgtEN7EfX
ohCu4GbkBlT9JcO/MJYXPfBMFOMt/ZW2162I5JeLSferYScoHCERxWSCza4YgX60HDP/O9aPZMAx
uSwb9X5RLEN8/MDfPtJp7L9KlxZBpBn6k1/gzUPwzyhC6jUBgJsogkpgBWCJrFuDSN8tXdwvV8l3
6OeHx3X6q/nfUees+zm5V0yj6H59wheUFTNE9RTa9stPP//F7JI5e7/811//9t/VS5caCnEWOuPm
ucp0WMjB7w5DiF0whAwNR/I8DCFFI7LTWVQoxyPoKpukRI1HkDoJjrhC5mSpHo+gE9mRj0hQOIsB
RyToRHbsBF+nh0N2JCEhcB9kx25zBIbxq/iX//n7d/znyrmqvzCe/xY8o6/b5Bu4Q0XLYbA13Xw6
V6F+sMpfuOgpjSfR6ym/5eZhjEl42lVjZ8GTgBfWm7ADEjfGk4ifshU0FK5qz7GaUvmxNI4DrOLT
q8vfdKOhCQTRyax4zbvKjl/CSMFYv6c0r0x4Gc5Ixx3P2F6/OymFdEQk6xVvGTL5fgdjTM+Aw0vJ
Ik7ITL1gjDoViev3m3Xb3PIBMkoRsRCfyY/L+LlNPVZusEYir3qIP7yj0z8MoQQUInps9goPoPlE
J64bVp73xLUVmT11Nllpzhv0sW3sDy12KRzAxm8+ZEblAa58mcVFsl25ZgLCTFw25dmqe+GVmPJk
HcYY9xyn3oirj4PVdw69ToG5hBOFp5Txw8DR0bmrnQeL0dEJY7fCxHRswtRNmLKxCTM3q/nogsXd
ylPKsQkTj1FUYxOWnj3mAdb496cNDDyrLziaxjlZrjPHlTzoY6IFHtf6t29msVQBu3qqG181IhjD
tko0jEQ0IlpqMXJ2/d3cOqV9lIWlYa+hD2+ZuOLB3kQX+6ckXuaLYu285BCsYynMTbrg3Xrhh5RK
rKgigxz5bnvmG3EloqAimYDnuM/222XinSRGmI4YGzQ0sPzv4FBWDWvGgfze9k4agamGJH/CqL1v
jGoxtQZDSPBrMMbradeMIgdGsTafCFOTnymBpeil/UAF18Op3NPuMI+YIDe9F8QhtJhzMdAhP2WR
T6l0xswI2ok6DmBscvHSSt3i1mN+bu8pZ2qava83ho/s4QE7fjhy7KSGJ9smv6cFPN0H388cVX2b
T1yxgHDH1lVVn19BePJqZo07dcIMtQur3QaSozo4OEjN0cwxl8ZQITFYxYdXis/pKsk8E2cxQgQS
xKo/meprmyxvk5FQGxlUbOWNcqqx9gCz8BrvtFt0oNKFCHFLO00RcmmIbgj0IxzZ43H0HtiuyT64
wZKIhh7gpsjWJzg2GnD52/E8Q0xSv/505sh/b+OWCjBzx74vISyxf/bOfNkUT02M3omY1vT6ggLi
cfR9uVNWMBNqvGvCwg6c2KQmToD9foSiaPih968HpTAuJ+WzE+PLfoO4Jd+oOD29flMw3HRYL+xV
bO+eF/ndQ7ZZJXlxJ7d3hSBLgtec7TjTm+Vuy58RJk9LI6TocXv3r7tzolNL90G0eZuDSOB+Cymz
/XIdINYu5GlyHSn2S9wwQtoNfeuGZYUBhhAxioZjOTNDIyLIMfesQj5bmHCRjAusZ8fA2lITQsb2
JeMDUwuH1o0jza9t5hwZKo3FdbmCsfiTWn+hgzJtQXc4nCgow5J6qoK2AA5VBRzfSWgfMZ+Nv+gG
CKcET+80Mdp10IhT+9kOo9+Sl+pFbF7F600RL5ICE+VOqxMcUUF7Eyz2u12Wu+J4LHlEJsoW6Kuf
8ap6iHKpP4ztSAX+RlW/9PXL15++/vz1Ly7oAYKmF/w4UojfkGN7kj/l5+57RJg/3ldNQAd7SEOv
D87ArLTcF/EyW1Wv3QiZhHFycXbyDBzACVVrtT+fvPGJtPILmEZCoatwG0ssbi3sasYiWDqukTkj
E+3WW4cYUv2SiP5uvLFfr1Zml2ePX9PtKvn94xPdq9YgcYhi9ETrfZsm4IbSpbweRjiZ+VBTLfpt
eRKBRQsxCW2K8Ju7JKDFJRlYwJ4W6RZ9LJvuhdRcAP4+x3T6HaYcWgLxYFxOn3ZGpdhvGl2fJ4sn
JxILNbEsvTGL/GEcLSm05hMJMXkjxPYAEX6FrQ3KZ/a98aIR51JPxOnmCO/44tKMQTh96eXZ+zpq
mb/sSvTRvGxXaxFOJmKvbE3545xPL1MYuojIgELVeWOxZpOwmqFmP2wcCUZv7hKgV1Kmi5aWjAwY
8ezzTbwoyzy937u7WDgzxymkheHXwiYpTjIXh3eMlLdTF1CArMJyMGcoZa4sCQGxZVz/MWXnKDwa
Oaq8BZ8sC4o5AjZjNUy9kLNOCCNhHMOeGuhQDxU7UgFJnhtm19iQ3sJu44FHlIp530j29CyPcseI
4+aDEDXUXVZ1h7UvEvMkIBfHGviLakkIGi6Bc4CwcgqSlSDnoBWiQBWNbD0bhhNICHSVzKbxUcTo
i32TnAQS5k+PTpW/8bJjO9uVXYfFNNjNBufa3pJYMPz0fpOWL7FZ6NL4BkkR2+PkbqihDKz3NZze
SF9L6U57nen9lbeVaeR8CSNBkvVUN9tsGw9hLkUUVk3ZN/QmEcf9ANV9eFoOQC3EVFDYe97IeLfA
a2gIA0NDbsL+QokNw/wKGWLBI0IFuhEuHLwQPFymYpUlxddtVn610tHCAWIRpz2Qjg5oZsuiiq3c
pgAwRlAf8EjIPL9igz4sNhtohbNa8YA+WukYr3LBlFMj8ldwcTDFMJND9QCwOm3afPz69G8H7iyo
sGFQMy7ktaePiUvAlh3kgQ6DeMAgG0EGg7zKts60hFRQaNgvsqxP0D/tf1/2D9CGubjP7FzIxerl
n6UH2IMwyImEOLPf6PK0GtYwc73ItzAWrZWkUIiCshwN8fnYfnqZFBxRfFdpUc9dcQ2oRwPyJk/c
JTWECxVRSW6MQbbYFnQxiHDc1MWQI6Y0opyrOT43xmTkvrVWCpS4slghh+8GuMdpcEXvt3UKcDrt
dAaVcJEl0CwZwmb63FzPUu1cfHAG87wVmeeJZRLPc6Mxvypwfhc1TqRks2RuEOTTLWit8JLq9z3m
p+zZg7ijIP4kdJ7nXwUX75W5IV99jr8l989lGdvk0WFUBnExSytufNqBCgYX+1WatXK4jpJBDqkI
NU+PlHM5DLfu0919tnunuBILGQnZEwJht1m81FUV8XK93/6WrOJ0+eLJrhuBCKnLugU9GXx4Lut3
EHqW7EGK/SmeeyZDeQ44EPQM4gdBnM4zYkGYD6omfSXCFGNKIi6YnGmApP6sso01RwOZUkNjkxbr
u8r12NmxjS5jKkkkEB7sumDtuxJggMRM5eAHALcPgOCECrhyU+OxcrFYNi/VpGbGEE596Nrsf53y
5ksOU0Sv/pAVIMK7VyLws7F3nqSCvAZm5A+sL449f9QRvlNE5Aj3UCdM9yHnccif34ykn7sJwZz/
gcVDHktNXf2znEwuHQeUd3L7ahAL1btSy4b3NsFQANXqDedtKcHGRKA/smejztfMy+GKEnKzCbnZ
U3dBMg8sl39X8o9kPVoRmntoGDhjUSweofpgmWdFEa8yS7h6+9ADYpScMZpLt3tFpIooVtc8dAfu
dDXth5+vdIk7F0cE2BqNb2JdXawNEWMKXq12397vVM17EuHB5c6WS7p0GQBpTH1x8M6m+HfEPOgP
PwSw5PVhncwx1JP02emWUo3Cps6cqLtKwVgUW0MVktVpWSSbB2cxJ2i8kJZCAKO3n2KolIsLQ/TB
XW6DwyIbp2R7l+Yrb7ocF/UM+iqQzbONo96H2kFgHA2Z+a9cA1fkLYjqOAxnyMQ5QYOI5W6RF2bj
nKaIc7CEaMJUF8YDzdpprc8X/mASMcEHoekDK4vDCqtcNX22k7RBovbTQxoZrdY48UrNAbbDxcvk
9/IAu20ViqsjrZqbg9BQzchdUkFYBOF/wDL/vc9gNM1ybQQiKR2VFYRqY3v1EIfqaOWJ26+FIiOp
hhX0E5pNr8J2UksxLT1MJqXH1LTrY0HpXRBEE2NtV4t8BVPokviYRLcF4UX5skmKdZKUJwdxtwFv
BaJFqBc37yTbAjKXzgZjFQaM1ocTEv+hJUsQ3F/BFUn+nNQ1A+05Q+ajxr6rdK5R9CYAXyYfvy2e
q9YH64PcwZcHtVxH6Nvs+3T5Eluo6pekaEOwMk57GwYrlk2JhHXcPWSZo6z+/8m7tiW3bTT9Krpx
X4U2cQay1eVynHhqaidjJ05SezelltgtJZKokFIf9ukXP0idSEACQVJqeVMpW62WBQL4z6dPa3J5
ZnlDVXxeKsT0aqkC4VhfzwDj+MwyuiNYQe/1fBpHSdzheqr5ekfCkKZBEZz3mV7TIfGRNpwHXjze
4UaZj/HS5XpxyMGGK1u7aoWxWec9Z6+unC7X86lp7JRhZOC9euimuk7iPllrDzIC6slr5FN6Fr6G
mn4iJFqcdu2MHa4GGpCQW3Wf8p4H5VL/ADHOVD+kZCUkr7GQHquVDrYLxJxrBxH3T0JWgiGeQNvV
xXcwm0kJlljEZAugz6IR1Z6IoFqxUN4T6dRJhip+5t0Rn0j7aQY0WzPBnwJ/wHZ7sdLsHof0so42
aLAgU5bDPLfNSIfqTYR51+K7ujMXX7AwU8ubL4pHOAhIWWUq9AJ2cwRHYnmUhJLpYeKDxPQYgcYx
TJ7tlP0sx1inJRDeFDEUusk9BHuT49LbvEvHLxaeV9CyRlpx4HOUT/83sZ8fF/r82Fm2gRDqkfqL
aGzZyj1dPA5n07GbCQAJU5zl9pTAnVtv1m1a1YVXX7Td2QpI7zDezWL+6R3elen/bFjEJbo1tXS0
Ujk+x5EmYJ2e34ksklfBqJUy18tlko2GeRJtk6nWvDAcnQzmsnkyT7OX0lRZZmuTOh2vM/grSwzl
D10Ov8RQmtKe82w7tYzhEEIzQIBu95xUiagCUDeCO1nBOaGSUdFeIo7SOdhf0SItbu7tn8sqtRPJ
EYdenaD7yUfvaIyi4UzbrgtNAI/JFvv28Gb0pwb6YhAOcmgDc29UtYmmme7mbWOBtTQhJsiv6Mpn
R/dZshhNTglacAJCZEVD0ihTtF2J9MOjdGa2obI37vQ0gT5qBfOGiRmRA05I37Z3Rw7OkTw6DYlb
NKyGOri/03VPHJMuFY1VqWiDKoj1LIfrbAsqRmehAeMhVnme71/gZJglY9tAJ44GXjOd3VeY/73W
X679L6s1o0zgDnewAJa2BSSW0GCm2hD6Yvg4fdD6Q1sTw6fhS/Q0gWGIZWBkBWiKK21gRyAbM5iX
ZCEIqrRWDorOOtMZdi8NKb8Scw/Ca7ptV+0v2FcBxRnTxShLYLjyJmCzXt1L49W8XVra+DnMN8MK
SXYOUwGzuBXNbgbx1fLLWMU9fO8Go5q0qoNuMl6SSyECdlKfNZfPtWB3TpsjMnyNzdTA6fwhyrOR
lW2p9Iszum/EzGL8UgamasY0pZ7y1X0rZg/g4+eaU2aWvPf+xIfR0HTp5eXQh93PRonOposkmt2/
1b+5AS/mN0iKA8e9wZ/gPbPCh9UtwcXLT2l2i+opkqL1PQ62pU8Mp7CPpkBh1tlE61St0t9tM2t/
5jugWYgWw/FEd8l9mhXxJKupLZXmLd7N6nqleZSv7+bTVRRHeaLl0NiuU6Bxhos2q+7mt5brr4bZ
Q5kweV89YmgpDAlRndokPr5JAM/yWRVZZPpwvZroi5yW17h9AlL9TW4iuOnuEzl0XqTZ9EFrOBNO
29KC1kpj+JfDmV0Fcwl15yJELnnnJjD2gkNqeCZ7sac1BBD1x3a/NocAiBz7+y9AmotPVOC/qIH/
Ej7QY9XH9FGToo/vLdUkU6r5l5em4kFzv2cISvt7mtCFCLjQwPgrwl6VF03IB51kqaJZpOApe308
YJ+gGHdzDt6hYcJUpyueCKYSn7Gp9uWW4/vI1Lhpha8FxPjeUaPgCfhRXeTA4l7OtGieJM8RXOlq
CqACFrWHCJMDzr3AjhqRE20kobVcckCwyAH1gWBp+GzHJOWBUKwJRMnwsaarhizn/RxW4Qw5vcCj
+eHzz1H6qKXcFNBoC5fAFtdnVJsohzY6yN7fNRVf6BoKWEot7WXg1neLHhwCrvMHkTB1vNL32N/2
HRMuta0w4CHqcjtA890mezidQ38fVMFGRaJ15pqATSFZ3C6q08DZZAiHxEov6kNRddKHipUKEF0O
9xZK6SBzmTtBL1SAMNjEiNLFu+FC018W3Q3z6cguC2CKkWy1xqEFB1g3dZdaMCQHOEQhWRcq577r
b7ZqGCGk3/SC0ydnCgTyk2YS5bAiCrUhTgzLtBd3Ib2sFB2daNHVbvyJcucnLcMYXF0ZwAxBQH9e
Hcp1tvP33mIwz45ZAdjjGB8yLbBGk+lsvH+WVooB14Z7hcBxAwWEm5hodoNfqyYU07g8i6OqEZ/F
MCqtA1lxjzp7so6d7PJxtRXe8d2SlqYl9zK6W92pa6C3gvMgzVcvGXhXLDZOlskCbqEuJ5gytYQX
Jds6TDX3yh00Y/F2ZIC98Mn7ogPmlbjErqyfXhWE1ttna8ESJEZjclkSqONnM6+ib9wm3b45F/c0
m+3JOTKCNBYDTHxARnqjDBosICqZnf3q0k0nVDK2Sgwcx32Q42ZeAb78xR8rWURUXZhbLHDoiF+O
BjmOL39j1sqdDXo6ouxsT+gzQsqr37VmOwNWV3lPeYFOF80MQmFyBKiNAW6oV0EqblGniSk/+wG7
x0Eh3EI8pff3JvJRILQ6Oms9oRba7fjwSTxmvnrVsnb5SE5uPPyce7qrIlCsil/pczvVPmgBjPg1
nrYS7LU89jGRrRR+pTRRk4Cccq1hBG2Txm0UI469EH3qRl+1IGkTVy1QH5YP71Ed9QyidCh8sXro
1hrWYWjAQ9jpVEHGiWoXoo0Xv75Aj3W3ZRVHS10IdOt62eykwZL4+JIMhr00XzJ4FhfymVJaXe1I
gNPZvaG8fAUSICVKm+NUEcRJpUwJD7jsYwkr1+RhhOKAlfYCsktTH7taZdO79SrZxPJHafrXNHHM
++cDVZEOG/Jcu7wicpbYXRlOrM7i6ffpHB6SEgMpcBsisEABms1PF6sk0/RxG99oAYtu8TOOHrIk
WRi0ev0WvnU5shRB6ZFqEBwmZ4m2kTLoKgLO60hOm9hz2lhV6gbOSL5eIfJ6aFQQFng03XAZrkfI
Y9FK7uw1iCSzZJVEIIhs6X8JuWQSIuVqcb1Tct1tQyMCmR7pVZXUp+IpzNUKzZfdZmDM3QxnJoOn
v07/21pivuhH1K/a6YzDhO/D3V/2lhEKYeYziRqHFJb62hQiPDid4jVpgxPajjD2YzzH0rtY+83K
a2TyWcyfY8GumCj0GtSMRZZWpkBcgihZCMF4ViM4+BGZmGCIBOtYjhKv2TDEp7s7GuYvi5ElPKnY
QFYKcS9Ef/Ucl5Qk1Csr8RonWbpazZJx4eICSoip9qrUhy/H9zebj94q+K+cErlczspNQUVu1alQ
kg6olJhcnEkklaEHtWk4PNbTKBirTUq8EJHUUzvCK/5CTpS21u1fwQ1+9eXVMmcBFq0lGZJDD+d4
agZiDjMrzqss8EY6NHlOFAZRsFmlul5bcYPYiDD7BjYh+9O1JwhBSTLAwZz84+efPxZNvP8qBtoZ
greXcca+xamv/LKIpOEhy6IM2oz602/MUmurJUYABiLo1Z+V4gF0vZytNa0C8k0y1E73oyzzD1F6
96eW4LljOKK2HOk3IM/iWHUkCppVr2Is2yq7/Z/0ufy9NjZwkunzgKGyxagZ9zQdQSTEzr+BK2Qy
nOr3kZ/s9B9Nnb4LkTAf7RtQiF7Yon4OmD1B4zcE4rWbDUJ8C5tA16/nFP8WxNY3wBJxyE00UmNW
1SVhQA7/Bui4QxfUnvIX2kxj/0/NtNd221L05XXaA6tSX776Bgw8gr8F44HLV16igjhXbYV5Kb/t
9BjTsBhYXeI9pC6vhkBbQkh8pUhpQEnFFFYCIEBzrm7rX0H1b/sjyyfpkz2CQwCilHYkM9LVJMmW
wwdHEob4ocqeSgSBD7yBWBhvzq6eJFWQwReItj27p6le7imCI4xgkNFsaqcKaVB6URekl6/vzK5c
tYTU9GqjNnGYdFO7W7qgR0rQMQM4P9KlXjHwG7P35vXvv/7r9jjhmCmQAvH2gmPzEN53igYsxPfO
k5EWjquXbYlvlGtNagR3tMymjxAEuMvSJxforcS+jRSuhauK/F6T1fZhzPxJj6fgsWeXvvviQYYa
4G+tJ+613kgye3QUKlVlJ/vd4obsb9k5eV7LpBCzz7Lu0TYu2RX71M8zmiQz7cpY8l1MyQGXcU+7
Kzro2tKH586qY/W41ouMq/akuUqLKYlODUyZL4KH9yYP1rSj82LOPae1ua6uKEcvCuKLhbSUgzau
Y0hdVIGoZ51QzP5yxWjEdTa7naxWy+/fFXVOkzRffa+/JLb9c1NoMXZMytGnQ2J5dBjE6Qc8ugKK
sR9SZIMLMEPIsuMXIFvnPA6y/d0ceVnBhHCL44A0Aag/fQL5Oo/0u5kjrcg4BpujEyKcLhbpCMjw
EXL1cystaQtY4Y742/D15sdddw1m1eYaLvWpMox4qyNdQPN0lgwN1l+2niX5cSA+bCaL0cuQl37E
r9D2XZlJXBAXE7QJO59+nu0WQ58HtRQvjq8vknPaIuiGwE+tQgKrAL7+8Y9P6QLGeWj63dR8WW1E
NCCKtq6gt62nVX/+WDWoGMZ6QdIx29hVAKTeQoRxUa00mo5xtJw+J/YpizRWTCvcdjJ18TjUsjTN
8hK96imNgAdzu6BDejsB69GYRprJwF1az8Y7VIV3VVgFbU1T3BFd721Nu8MrR8CHSxg825ZVtXEb
FdG1fDW0WdKlFR/LVsRgJwOsYJg56vdaSAidbZ+cWJ9cUuiSEAq1Zn6zRom4YhlYL+VAStbpKnVH
DXPwKloNl2jSWEuFCimKtvW6ungDCQDf6S0pXj5KVH2UbQw4gzDPDmlylK4X9YCwInEcfgxVuJ6D
uoCC9gG/4WJHYGYDA7rZ4SmUsf7TXdK2HmkcVHFX4YXJUD92GaSHBKgF3FD/iYQSR0UrbRzffv84
nK2TW4aFtrCQiClBtpC3F5Ql7TBOzIMXrG3XmjLQuh5QBxof5h5t1I61tJHssXYxYNp0abBesxks
XlCU1EMe32ur7+1qdV+v/pNgspDmy7SzJhDipMmx2Yq8mgTXYwbQrTFtvs/D4PYseRiOXt6N0/Xd
LIlcCR8utRmDiPTc4ZfPXw8o40mfaxIBiFEBxQySEF6YRpAS36tGptqmWiU30E5+u3USa8UWMPQ6
4AwuN4WDku0EzlCq9DQ7ZWUu48m+YXqWhtzCTyZSBVybbdqDETmP6dgKOACjeySh3cpPaBMpqNPa
ATxAzKt9g3pbnZbpM5RAvhoHLLPt2DcWw2yYr7Zjq8potoWgYhxrVpNIdbovq/OsDQhESRuW9sFs
rQTQ+uWNI0MXQiglsBWXeNX40B6mgR3rvJVKtDfZGts4fhNPPKVPfcYMjjHngPLdDR2f6B0liF5K
0HsNiKg3laJY0b45PISzikEyB1idyepj8abFBQDyxUIGysRuVCupg57Er9UgsiTTNyVojNHXYqxY
yNVv5Hd/9u9u7Zr9i4iS13fdlKFXoX8Vwtd3eACpfF6DNiZXKFL85t843PKHZGXUWpGNXy+MsTzW
C2XpSx4Vn7KW/0PRmSQdeeVFz7jdTo6553xXejwLlCXzdJUUaS0DNgTbLka5HcsJY4RkzYy+DrpQ
6FWbS/XxCuoaNboQ7KKGkajDY0ocoMXt9RrDxyT6Yp8BBlOOFcFhMdRaWQKw5PeGHd8tFw//dTfM
E06/m/7xw+dfn+L//sdD+kH/9++vv09++v0BXv4Ef/zw8cM/9V8ffxmjLwm88eNPs59++eNXiudf
6Bv8ickfPnz4Tb/4cK/+fPj3T9kH809nn3776+v6l/nHj3W0C3yFnC7UFWp3QtFrsYTrkojikGir
lYUKQAfHHD3COIBWXKV1xsnrCC2FOKb1rISxS16c9Y5CeTbx2XNgab4rLI0AC9syfQfwtPA1Ghqc
kGsk36DyAv/xg4SSK3RYBekiTAnkXpjWqxQqWjVnVXrl/lNjCetQTCSF6sjHODWqw2iIUoLbi6oB
lJGLKyR1dIVmNSYhRqyfuC1MPeQ3/4W2mLhBZXvPfLuPQkNZqyeglAeJKzQimOB9evZWhx5inVip
VuadYz77HuJodJ+l8wiKre1xDcSh8op0alG8v58upvnkdpWtk1pKXsDguGu0LuQVWhc0JCiwpWvt
xkez9CFdr/ZeWkxGahCdkWyx1P98glT45wJr+t3zpiynxJ421ReAXW1txRG1QZ0dbfP9ejq+BT8C
8ga18AYLr6g4Pqn17dsKFPTb+ZLuhrWiOL5ZLCeV8d3af9MuSLU4Z/vwvZ6HESScDRhvpeAP3GKA
vwaX+GbTK/KGfHiDP+n/tyvod6BnRL81Xs/nLzXnOcjeqH6VqU7VkpqTlnuDIttjGam6JfofkyKw
YJnFKL5QZYGzrAChSuynR8q7Kd6/rSKyIkQHop2U7poEBYm7I0EiUWcSdrdlp6ytO5QAc8BopSjp
QheNRSxelbCJ0fWYB1vAOo5Eh/RJZO9a+AYK6PJVsqyhVwilNTJ+Vcwv25nVJnlVlsXn67vtg9qC
dhSQ/GR3d4nFhbhr+x3m9e5b3pBP8D1vyI/6m95grr9Lvzbfhhl8H4NvZPvfCe8X38qcVyRQt37f
Vn+v0s37Tg9QxVI7gOxVSTEc92bEF5TsAE/lBnK+M/KliJ0xfOhiVGsokfrNw6DdN3bbZoNgb1j1
6+d1yto3AjhHxxDcRpIM77Sy+2E2XPy1fQ/avlbJ80obZNOhHaICxmuEpOyOwCpaq5mRkFB7ojpd
yRmtJORViUSBRRsVMQNwzGE23r0yDuCRViNBARegYZVhLezcwHjgAg1EzLo0BAOIcge2vTDW6305
rzyCQQOZY/QV0V84IOJsPNDWu/QLArjuzhEQoEHaLog1Q1oabB6K64odvgoibEBFV1V++xfSPP2G
wfnkrJNz2BwAEEC+HI72jmQ7nMbSjKTZjCLV+WmUpQfpMlkARoZrppPUfB73EIhYLLdE/3yf1sGJ
ogGiQQ2Y1o6ofL1cppnWrhWNDjIMa606kCGa9ehSdzbjgUOennSXnrOPC1MDQrtjn4JpTmBKKITA
4m2jOwt4m6/lz1/S2VQvfzdL72DHeTQfrkaTKE9m99b1sYLRTT0ZZTuEj0zLC6eJhhinYT6ep1M1
ThYvUYmRWvxmujDpBDccEAP3nvFuDmZvhNf+JGr4QHQHn4g2h2Q9Hg4jTzqpm9rQf1FVkS/14RQK
FnTmOgdI4ZvVMNPsYsZBRPpRUUW2ljjDIeZn/XlcixQDH7UWUWeI5QJ12OK4ErAfZByavoJGvCKF
BeyQpbOZ1hf6ZL/qA1796NCbSFBtHRIVuOienVL8bCyoejOakMhzVKg98FZO9hjNkqEmqRIvajnM
YPiqlneLUQIJu7uX6E87wxMGw5WCEJlPT6qLkBZ3o7pqRIhBAjaWinQdztqFsIrMQFJCGu0X1FtL
QQgeYIl7MpMW2jiBGUrFYPPic1VHhLEBbyX/nfpHm2fz6TO08xSfiCaaGfLoaZgtHH4KTGDyQxVr
oIGtWg8mB4YId79jL7IUuzdql+CYnaV9NHUWTTzTT6StEusdCJiTHJLGbaKL58lqGK2GD6CH79Lx
ix2zRJsmqL3RZ7f1CMzo6Kho3DIH1z5kDLqvMT4X2fmwv8BalaPORn9UGoisMUAuz6XUd2S2mUF/
jN4w0gI5RCf2ezuqK3nohE1gXIXFDfYYTfNZ6RibSrrFcrntS1xpHTm3Y8qCiY3OJGm0dQJKaA9t
tKBZ+5hsHNZA0BWZNnlYJLEnHnjvFZIhnZ/ViObTZLpKZlPHFEBFYNQw6TK+tlvQEVcjnIGx2r/N
aDcREahB0ZEQ8MWKUAazQbZPD5ZTA7YFG1C/t15MtWn2z/Etuvlofl06SLcLaPhOs+Q7EzXRv/mu
RHb4br42QdgSnEf/PHyO9MndVqdRYqXNWT9c7J6EivEmrdKOeYI6tjlR3MuJIq5QPyxn0k8mnFld
Fv7EF3VQAf/mLDPRWEj9m+/prheO89X2NT+Lt1HMGTnicxAkWdiUzNaHgGIad+QFlPFFR+8oVtKA
QPe/x+fn59o2JSL4MiujGNEeNaeJMyRjE2YHa8WNI08ohLoFPw9L81i2MYU2qgQoym6zKxUWwbi8
fqYkKI1+eTVISVD5agewXUG5ERv37tPVEaA+acoTWlCXZpt8+phEOzBFa5IUq86SxNatOQx6qAii
spNl3UhSuD2Jb4i1iCXvnaWluWggEDqDnDWJ/yPuChLIpBc6DyhDafOHB3h/MtRs8+Pnn98VYni4
Hk9TOz4MYPmi+Hw2zmxxwspR8OJsdFFQIpVhKq/7CIbLM0KANYnluRQzOdNCqIUEKMujDXacfWAo
A3eyVX66gZ9rD8+jsAb7WgFxkmk5fQDmBkYlVOrCo9xWT2Nfb91kC22lSMUk4ZqEWEyFqOWqEccd
GGN/r1N9GMD908VaS0IthIr5a8Xs4lkSbbRN7phM5gsEdgoJ4Mh51IeODrAkF4tj2p+JwmG0Pwdz
+FoGR8XMng2vAO2Ypp8SbTraSEsDO508L/XRJePNxx0AWy3OvByFQUif6nicjtZzYJlxOh/a/R0c
QwiDkW/8oIXoptiyYO+S1724PEIu1AVC0eWeyWHzQnEb7zuru3meAi3TKgcZDpzL0sD4Johd6vyt
sFiAS07wWQxRqyTAWin6YaX1dCYuvGLKwhqavOXksXpPQqCDAMf9+oH8whVsseLolTVS8X6zM/Ym
IOg9oj1xYBnJgZJwu38jwFbH/dmgjqpRbaC3GRBW0cQbje406lh84WJNRHoMNdtFCGNhBran3XP0
0AkE6bpIKFrst7ogU2exs6zMKyAXR3oTGtOFCaFYC0FIHNazGLBzV1cPgK0x1q/BxM8xM2NzzvaR
GbFS7aKGWR4dDofR3r/VAiUA5sNbQSfY2ifRTTMA6foDF5X3tSiemRIdt42P+a5XDmrlXglDFsRw
WxtxkgAeDkDZLe5nU7uZxii0UonmD2NVnvbQDIYBWazFfq3Uh13UR7z0FGsmUUqFYSf5WHkKcNaS
x91XW+d6GK2CYtHsLHw4EffFicUcgIBz3Nxc4SINp4tdKbgll0PBmMGqRxpx6RqqDHEekzSsa0nD
FOtkp07lpnD4he3IrH51m9iUddg+8ko8dSQ/IctyqkyUQbJVqHMfBTT6xCHLTqaQsX/ZWcb/R97X
NjeOW2v+Fe0He+69FbaJdzBbrq6Znk4ytybJVHpSyX6aoiXa4rRMKqTktndr//vigJREiwBJgSDd
k01Nuv3WBgkcnPfzPL+WwaEmECh3NX3IghAGffJsVVrie5AA31qdWLX6IJ/C7caaTQkbmt13XdSW
twmh41j+tvQ2l1OrmZn1JhXyLQz6SdcYTDqHJreIU1cto678dquLBj2dIzA2zcPJRN98yanadBe1
PkSV4U5VRtHAUSjmIdSnVEy4sTadAsAZLJr2ig5q3+rZQpOIgh1U98R4dAKQEqI38QVs2dAIDIdL
8++Jpvf4kaboNXKlMIkWPIxEyGeS2wmMvbAmEJh/8yemMn8A0CQ5GbE53dnv3ToABihbpwgOmVJf
TAw0j9VWechgYAeD38ML/R6p4AzjkEcslMTAEj2stdVi+142SblOkl1QrmMblpN6AK42kzj5GtMZ
fYqkgzdSASVUSAXVs1Sf1EFFvFpVH93t7+/NbVBU6ZeBeAk96aF9aaMgCHVULHyYjuMJH7Tme/3p
LRx4Et9tknfL8hysQUITvZMsd+/ufpduDNAQSrZgEt9DoNj1UsD9PQyR7CJ9LW36GsnpTPAlw5pE
RgNRqZxUMXShmmVYGQF0YRg+xGbJqWyWhJCNk5ltBnPJFdm70bVO6czMUgA5kHzCRTt64IWY1N0e
Nu041lZZb1/bUAmw0ZLRKW/fxtKMB+FNOKrEcIJWCHTmzdoajBGMVdDJZArbEDWGNbt4U7LWZg9l
MYeB77m+v/1OYYGnvVOjkj4NvWiUpsCUxQUuAUwW7AzVcpOrjZl+9aoBgKpI8rL4oZ8gtwKo9oqC
EADuJZqDihRTAuhRbFSVtu9AzLzrkXtAv0rLz8G5qD8AkGasW25qQDoY5ftQg0b9/LJNbo9Mw/VY
34d6rO8wrIfCsI33GmEuJ42SLrQ8hGA2jeUxN53BVA1z0IIXXQjj9KAK9ykio3x70whYA9vuFa5Y
hbRWbo22kIuBMPdTxW7CJXJ0GTCXwBmH0OhIuKzRKeuvmnsLgUmLkim3NcuzoHNr+YLxcUKWf07B
1FYJ+ONIhQUyjCilDdN7fo1Qu3DMpYdMQ9/mYcwWlBKPLtKZ1HTMbQBwO8HE06XotJIUU0B9pNKP
3m30+WpA3SaCq7FKRalnR9Syy10xHvdwRXR2t+dlJcCneSqB27xfToV3q1KDaVem3WJFgItTQ6S5
uBOHTWxoAKXtoI0bvm5G9AoXzOXgek13w1cxniFGA9tdjalGHQWXSfEEiDsAk29xTVAIZJRyJrPI
VdAfSl+3wDYNCwZRhhP6PA3gd5BSI/A7F8ghw+dgpXDIxzga2yJ/UEtBd+BevXVhvgRAIYCjry3W
aEcaDCPkp3Dd2hcrIt2CMD6HBSWa3Zt76jKqCmltqO9AxbJ+unPK9HG7SVqQ5dVUYPTG/ipnntRQ
ujS6G7yqLVxgpJoYthsV++f3gPABFgJg8eP0vsWeO07JAeH33//2482zkvHvP/7lh4/fVxmVExF4
FtznRVI55LrFsGuWXHDklnHr8wnyxzuAuTrWQbfwdbX5Rn9WcOB2nlD1r/aP26NBbVXsGNa5uQlP
nYsQSfCkReTkAR1OvYGP+/qMj8df8T3lnZgGVV/nuNKFbdRIMmi28uEyV3/Dvt7XGYpf46e4XBbp
Fqb2l+a+HDYQD+lScdZ8xEFZLCvCi0N93Y7jwwh1exSDTq4bhu1HygReUC4mWMzG6up4Yy8zONQl
yDVz4zw9vHs21JKZ8tjZvOq4Z9Y1kmzgrN7wxptnA8qUdO2JMC3zrE05auVI8EJKOtttrCG2rLfR
W+UHsrdVuFvT67VNChLQsYXmuZG1e8bob8DVZ5yGnqTuXq32Tt3sFvY4W7BRhdR+sfuS3JUgbLtO
E6CidCycO2YblHwwxZwWVacsMueTMXFrF2jI22OuIlZrypoIQMykPioBjReDEmL7+tCQDEUM93GG
XYoDztBT8PZqhw2DPhCyC+F9qcDqNui5TcJ9tMXvC13K26WPiaF6B5CGWDIP4aNmjrRnxhHwzU8q
NcqWQvX6wE7Xdf1VXIEkmkl0ZCjmCi00c+Mq6Aow+EDgDG/n0HWFNRdFNMk5vFeBrjLIq9sqh2qY
YhTh1AJAtfWXFE0awXKipJlz72e6Su7j/aY607TCxu4icwA/DsspPXZlnWrnDgcb5V5uzCitgAjV
Aww6cssjBmtgMY/8IIS4p+pMmmX5EqzBU7pUBqFuL6h+zOy8RG556ssSpIhMqwI07XJbA4QonOPS
dChAgoEvW3p/Ciui8FLdLSBveijyfWZ8pCiUCxLxKVN+h26Eijwh3iSFchxiU8c+A7424i1lVaol
8+zhYD+L5NcDjqMecTNU2BhacOY/Tq6ZSp+SI2+HBc8Fo5ETdhco1V1u+KoZ7VnFG4iLecUWcNfz
wiyyCJiiXEu7J8kEWlPtxj7lK9iLpPKaH8letip4kKVxmf3vWtO4EhGLiDjEdgcGsxSqbcV+C4Le
QRsIGTekDtbhjQyTk1ZYMQmig9jkd9o8J+8yRdmRVsOG1iMkRjVyuPWtEuTtzU4DgYYRQIyQ8LqD
xDA7pX7TGI2n1dZfTtXgwwiDCp7OJ9ONlUZGYOSP+LvZ73ZlG2SCc7rg9K1NG+UT5TTMgxTq4osF
YhMUFDstx326AYosdexWtYQwEBhIOfvNZZGcKQ1B6ChH5vxaNTuWV6vN4dybt8xY1gas5sjLNrc7
6U4MBePmswbLWCM1s8nz1R+LJMn+oKXNkP2Gyo5TY6qDYgl9KJYiARfo4K6brw1QNfBReb1WzSZQ
O/sDVB5hVasgRcAdSaJJJLoao+yVZYwgmRbOq8y+JHef09rBClRYay62c0hYz1xTw2SWOMWMHKBC
gGG0BAN6oRvPUHeVJVVmtQhex67mPFgU6g62kYBJjW1PT6q1dTWqMo0RGT1S2sZhYKvSNk/pKsmD
3brIdzugk9RdJVBlBJbn23fvzhL/7x639Prw0zCzdJ1t17foLG8mkeByEYmQch/dYsfDsFXsJQAo
UD9GfZPefSni7a8G8UdM+f2Yonnvm3LF6XyqJ3m8U1JQxZRGlcNDN9SqwWmjZLnOg7rJqCyW77ab
9+U6329WvxT77DbLr/9l4eEYvEL1y9V2Xy/L7a1+7ysc/tcV+U79dVpZffINMJx/U30D/tMftFIE
0BXp1FPY8u9OE/5mvzoUwDbgkCT4tdQKJGj06VZH3JI5Hip7S6mHa3vZsMAwrr7+e6UnW6oOH6Pa
1gPOfq7wWZbdGGUCxaWvwldbRmy91ZEKBOTUsfVaBTzmyBqqfWKylzZBQ4lxTU5t33Sp1IJRfhiQ
4zA679sRMut6ctpUdCMBbd5i5TxgjGZ9ZU5nyf5jG7S1LyTI4UcsZt7fcBpPGQI4m2/MIjGQXsLj
i0bOs2fdvviZI7573p0c8Qj+d72DhkDQ08q4x2nWguQOyUJS4i0XOFB3CebBl7hPC+W9QMnhpfYj
av7K53KzM3XX6mS5j7aqTopmHjESMnzdJlrm6lt43o1GMwu65F6dRNsRv1NH3CoEghNHZ1Zg894b
J2jk39B6jNOZDZ6cLqYxjO1LR5SZMUdIZr4SLvOb9Zh1ES8/Q9HkDkg515tSE6+CV2i04wimRUfN
NA2JaMz4B0N5BwfH9pbI3pFTpS+IgS4gaF6H4b8D12rw7Y8//vUfxrINxmPz/PVN2a3TYvVanesG
KXCD9TNYk7yRwG7Yb70RSGN8DeKQPs47wcGUR/9GuS5rciuO4678FhUCsWl0izWHoVx3OVHYazZI
nvI0XdN01H+tpg6FLr/qurVJYjd0Uid7yMPo7RxyRuU8DX5m3gWElQyMDYGNbb1ZvkvvjZ08GFq9
xChqokqYgyoyjcuXbGkpD6ORw31DzAYULZRps5lqFfNBGynzU3g/+CMa0OIXZSmSZ3ODIAFsFp+D
uK9226Ydw4FU2C7+UI9d5JoKes6a1PMuKbJ4U1tKs/+kuyL8+Nv38ef6EKDc2WoGWFAkZvLTlPPy
v4xTVqHS3QJ7lvT7dJN8gmmebJngdtMJIgLY6glCsxsx6z4AzjuNHKcmuj2nql9dU3ZAjFKpWfVA
WWIomglAZaYTngcxnEfIJKVK7dF5jfiMjTAdEBqh1kLIl22zmjYEY70M/38RBFyFoicOkMJlmu4i
Hw6AOQlH9PojTFwn5e2nffY79TgYqz/UQvChWuoK2odhMQof/vHPPxtcPi7Y1D6JLf8MxOWeMPHb
cmp3CpygGpuYmyclZ7oMzDE7cJhRaLqyrWmFoNxXfTCmDh+gE40mNu91kBZir4nCDukxpbYxVRZN
evYv1ulmdW5UzZx0WCfWJ8CINFsTMWpCpOXENmHOq04+G/MeDvEcwSA1BoPgLsgR10iTlMC1gVuj
M1vQFm7uU+RUqr/lVC6bDkHP3TVLuyomkVtjiLP7oJtn43uYCujMvhIGzA9itDNhnq1VThq+jFlz
CMnasFb5KreFeYhH5h66uvAJntjMmtPEQm2rdL9F2TbepkdonQNPmLEjJQQcT0R95gdtHJJ8JBXY
oEQkjpgPI16RKMMQUHvcG/rsfIDWd/qKEkWEYCGG+orY7iuGcvAV9RJGTUAu0K0HLYNa2A0kq9Pd
2Je7/NGsC4njKIV1+BSMTzUJary4Sre7DMkcZF3Tbmkrm5q1OxBFEETfLDx8ScoJ40Py7TFENEWD
hLlgY5yOcuCMF/OMD9gcgH/VmWguk6hQDgk54Qkft7/1+tSN/uRoDHb5NuhgbkNYonlTuTVUhj2R
SyFwZj4isNfwROYcEuMj5zkcJghNG2GY/Ai9dRkf0IdLO5MeYm79VF02sPI+ng0DSyNHyAYHX8zG
VogF97qzltsllC+HuScqrRKk5ljJRkC13gbQV/YcQEVDzsP57zTAipu1DIXxLPyb8QWpiNiYXqNT
mwkYnlefKW9F/ZQenzhW3LQEnaYq1AauLN4TgAwT7rn4VOGmWQ4u0g0wvhu3zRBJUt3LcTxTy3Wc
PcDVrxZbp0kRF8v1CzSa5ZkNMJsCv5acqD29ZvawdagjaMoe12NkH282pMM6smIIFCMmHrehc6wR
v5WK0lQHRleeYv/DzU1f004McLr+WoTNt1EAPemo3MDJHcSWjiACHGwO/Cvt3IAG/IfwqW2lgDlH
EO7ZubFPwyEV3TO/Bh+b8bLwSGLstMyVZUtW/8iLzQpk99CLsS3UxS12Fvg+CRqM4YnRR+tH6eqW
lREf2T7qYjsBg+8h2X17YIoKnuLN3pKL1eH6jEB8+R0A9HQOVKs7J8J/pwTC7w0VZlP6gBGXRpqD
qjGki8HgqHU104mxI45CetXTZGGP5qkTrcRzbu2IhWCvZggl49ilWb4dxGlAzQ81bqih6wW5veBF
fn0kQ2g7wJf2A9SA+MsDIP5ej78r1ZAC4p8hA4ycyOQH6e5dDrN5Ft2tNjEiU9XntA/6Wmbsziho
bxcHqC049YVU2nqjHlEXr9RpFi/3+0z3b9ZozbVotZ5DhYvoooJZ2//oUw9dvUUoYnrc5IIHcLk7
ToRh4wyROQ0GtLtiIiQbk/B1ACYw9SwYzVGbPxJjdRT+GORTIvEG/kxnGoAK4ILwEggQc6GeU41b
MeoCjNUBmJM3CcaMOxISaKPw7TmQjoSswI40eEOauKLQT93m+DV9vLqpS1nYW/Vbr9PHB3T7AEh5
AQrDZ/V/qPDAl/FtXe6BT0jzE3prLgQRAeRtNGRiVNP7axN9l69eegIrgr+Ge+BE26HBWPUMgW5f
XgE4ZUfdhSmHnEg8C4FF0pUHjIDjhnsO141aDgp7kHGc9nCVE/CHPK8OtxUEqUsezqFSDuyhyAdy
1OEr28LQCY+RkNKNr6djpdxEUYQR5MPw215OKT0HeEmm3KXCmmFhyjN2I851dRzLp4fgPql7LSpE
QnOxQImzL3CRQeJMEXsDx6xsJJosPGBYedPEu5mqYkgbJQthExUwGvJox6DkyiF1Gb66KBFAQcRC
Eo5MBGR5hZ5syADgcWCqm7TcQXVFu5z//elnjS77l3yVBHm2VJfscxCvVh+BLvHH+ifN0SdV0SeX
U2cEW/GPfe5E9xuvlRIekxZEtw3OFMgLlsnm/hv4Dj5hMLYsJIOhaSKdZNteGTuDezV7B+oqIzaz
ns1typXKkYN3R+Fssqanm9U/0t36u/1uZ5mprZxgz9sPQ3Vm9AnATZq3Hefb7z78wcxiiXFEgFDC
76ZXmNMf9ESGs46gWClc7CcDQC0ZgHDkjMSZFXvRk5QV/y58JVAXXxuY57XxFTGj4cj0uQ8T/5dP
ZiPPMZT7/Kep9jBJoeHYDwkrsxco3HBFuzzPCoBLM+GYEWqE5gibrxlEzpn96QODkYS4PVKne0s7
itbc82rmmw5RMJVoXjunvtkZS4TQ6hCxt2jMPH+813YBmPqIcg3oPJJwmEiMJvVKlddX7JQ2tHij
0UgjaD4KqMQdeCYr9pStegpo03oJHtXTmdv5xcg+1XOfJM3iqipwiPfhUbb5dr89UQJoN8nSvMXh
mSZnI3iNW2UOAYW8uHWny15XkqG53c3IqgAvE813B/4dwktKRhFRujiTXVebhnh01/dFml+D/pnn
L5GS3lEsWV58PYvaQZKGbjzSF+hA863mY7H4DW4efNJhfCk0/aIp0w+VHDztzn0egFrEbCJ2jVfv
XY39dHQAkEi5X1/Ro1BfDsA///zjn3a77d8O5OlDElK6DZz462s83MKVeoIifzFnAqhbD9PRvuy3
mtizIkozkjoxBl79NJe65gIGb0KbePUFZeM7jhn6wMe5Ehcq4woAw3jcuKqrzMpyM27mqyu59Vri
LfB1I4XttOwrsWuP/kKnTUS+BkNnSWxIoGKmfgbPlEsNX4nvNsmxqGfYE0SBMmQ6x8hB5RHdxyyn
RqvEEcaSs/EeZ6l+t8HjpOpqjVHbr0coX/W2bTcvZ7N9OjSmaBG5dPa3WcbOKMUwdIZNqqvNeSgY
CRETvA+KMIC3MU+wuudq5/0yf1Sx1OpWybhJB4lBE5D8Qq/SnNRnYiCmEh/kPazS1YdNEhf/0Am7
v9rbGjH0kQ4qxHIfan0YPBX3oTWrkFgOAjfjDv5R3bs+yAHmXuxUevEkR0Tlgg5q5ecOfnF3SoyE
A1swuM95uTHv2qH+qmMpwUH4oe7f64pJhQbW624W5v4axXQGbNUBFg99gRHxIQaDvIcuwdCJ4UFV
uaGartzGu+X6oy0Lh2gEKZwxb99RpNVZ0CKJVy9QOhmQDhUEAOS8S6khhNEmW/MjnXCh4SdqSBgd
UmdKvTS+U/9u84MLrISIzXe/OlwOrtxhFEW/ddeTiRDztzAfXY3zEjprBg35DLIZx+LBcpOX+8Iy
SyL4QDK7cbL1c/qYQKKhQ3VzPHSAeKB+6uPlJcr1w5xP4oH1eLgk5FROohebwIdpBuWZ6gv5eUnZ
mOYRDHC0EfNrsEzSaFfUjKCBLLJ+HGMu/MYagBdbYYwd2vdfqgewmCUOfKRsXuecjfJJLrvyHdaE
RUgz67p4ay5NG1SgaWMSEjq9y0V3xka+zKHvasSp9vSklAfm+wAHm+QpMRZ6ld0GG8Y8nmjvreo4
cwwWlcm3MPS9jdgRhkYt6f0anh6hmdo/tDLcvQR1n6sV3mzQtP+FJrhnjgnRgf1ifIRTyYgUJIyi
i53Kn4r44TG2ls5BrQxD8Bjkth06vS7pyaYSNlDML0ul2g/b1QsHVowmvXqWOkKkudOERw8sy3dd
6EWAKIEHQRmOVs/7rbpqy7g0A4JCnyDlfv27uphlI7WPgOeJ+ney8qekKNKVpX5K8MCOo8tVWces
C6YDETwc8z0O2oFAtyJl3p2sI7/14RysAzjQ/UUInlI92cNKyE4SPCbKs9aiCdhLQvxEkDXlg23g
eigeAx/NJ2R+0wXhv1UDHS0oZS46T9MfBWdHVEl5Gw03DNVCiNJw/DrV5xrTub2OkEiD9o9fphaJ
qgaYPzy18RwlUCKoXzGRb9NZxqCQJqHozR2I3Gpg5MjYok+pdQTOWqnRyLtNNZpvHKqTIOFsRq2z
iMHVrnMygx9lrC5BXzH151ToBmaLwlUu/bD+L1fxOtJnd8gZ5uFASNfJL6HZk8cICGRcqp0WEhPg
Lhk5V1qZ0vs43bSzRFg93EBCzmEiFGcvYCjOO11UVDrOD31Mn5PVh9pCtJsEoXWwmydbwEyoy125
yGfgmBAZUnQOpxY/Q2HtFoVGLg1E/d+rw4SG+na5K/ZL9ahdbilg2zvlPAbdLHUwWdJJUEgFdWs/
scjhwya/izfBU1ykkH4urQMyo2S/R3n3TclFgqlNJ/McfqdaBd+GeDfff/2S/VQnR79PKmnIC3Nf
giALgsh0PnE9F4P9R31HBVRCzLkst2YHSZ009tfWVVXuNaNQhUIAjKuBcWzYeOAYCIci6u26wwXQ
3OnqBuh+gtdDWMOy9Qgz4pbv7Qwl2qzEdTshppjN0X/RQHI4INyeWnfsKpnBmE9EJwyyyzhb3eXK
sAZQLDM1G2O+EEhMF0IeCLbIhG+psbVjAEd6NnGH4IkzGV/iVN2BbJduLHTIOngidGLPRBIUMsSF
xTMxOSYoQv7jyZplsGOMKwRHLXwD1aRMt+17Zp8Fk5HlqYGEgaFvw9FT/1InQBGb6Oi7GsiBsYN6
7rVep9B09dKfoseQQeFuFfMO8JxjISZYJ5utBaEEDB+lk3Tg6J5Ec0SkdLuc/56ZieGgTh9OJHL3
+80mgMhZeeSb1TIuVp0KSF1rmCOdpEBhkkZroYJqsWRfnWXgSHLqXyV11LHAFeJTGaPhkoHEwDl+
P1emMkjdWAbKlVfiGom3dmRrtY5tnixhbDK9bo5pAZbcsQHqomtsLTNiAOElEwjtw3FiNsuDh2Ww
LOJybe7CImxkE+urxNuX5K6EhXc3KtyFn0iC45cgydMxsUvV/5E/pXGkAOpv5SFEzHZjezI+UkCb
L/Z1HI3JkGaX7fnJmI0/1oMpk1zJTl0uoHjr0p/khK0rR/U1mwFngLDY3luDOYd7z6fONIdMIi6Z
LdN8/lQCmmwjn+qwddpd+d2qhvSVGCkjwDULI52CHLdBaZblS+jLsZM2cOBM9G+v0+xXzez8miy1
M+cPsHxiytxH9UxW3lYkwoEocXw8+LWMIo/xVQcUKjSRjxth6dCs5jI0xjJ06yoaYF572sso+Upu
tfFS6yEeOpf/01OChKQ7ne3mdxV8KNeAnJP6xkpWO8iTRATt3dPvBZBYdmbZdd8MnkEJasZfgw4E
/Go6xx2qamO1p1B2B7qQkvbcz3PUKb2ZOKIz4mQSr72d5D348d1xNiKIj1Sx/b57s7GhI+/MFohJ
f2MR2f7xLin6MzDDILV93NeuHLGuXIppVJdRRDv6iCvz5zdh3JWvJRMULAe7iwQ0JRHTjM/bMc7H
9RVeogiGjZQJyCthNp1uNBtsaD+doE/I6DIED3l+/2L1+EZ1mVYE23/SLAr1JzWnQkWAp5w683C0
nOna22k7gAnM55R0Uxq3cQFR44mevYPbmkOzzKhWZIiS/qzkLn5Ibk6tpkm2KoMMaiXVuRijG6gN
Um8OtRK4uwPEeNrpOHMqPCvaWgB261iFjUmhBOGxbJ+D8QBCNhLS5rUBPtAedxtgZfdkOJMC6MdQ
xqAGme8zacl/1zht5QqQua2D+VoQqNbNfy3GGeQuS9STxJUjsUG6lGHVjK/O/gjGP0gvIgqTAZE3
xZhsUuUCvihtuLKkeiQM9V2mDH/66yerOWz4Q0UKSCGVGl4+pK10KlUhAInwPOrA7A0yHaP5M8ht
yetMKKOR8UjzqJve9/KpHaQTCah8dBoD5I6NQrBbPt/86vDV4LH6crDpmuAkeCEQn0nv9lKNwDQn
81biPJGeDB0sAHw7jyAFp6bMDs0Ply9Ek93+ZtIs+LJONxrzIwP4sMpXMQZrlMP86ait6IkOksft
zhiXMMpGOuedptCSdSfCrx/YyAkZpnX0wSNlcLgnrZdmT/EmXdVmRjnCRf6lDJJn4H23eL6ISEgC
IM+Gvy6sVrz0Pc630IR/YwCKlEDvElBwx6Yfo5MPEAkRnzji7EySyyjUVJXzQmcyPwPkhl22TJNj
vqAonEWZmQEJlEiHvtN4Ddtei3UDFtLMkgbjSIx62fxKUe6ez7c6GBmlOFGTIekdf8kiu3RUk1lT
NzackC34Q+Uu3RxSJPbsiIjwyBmjM19glxf9/dqaWIlM7Q0cUYa7rhKDLCX36JQ2z6Hpn8JJWLzT
MFpggf26Ahl8rGLSnXlNDtyXEo+xSUWunKv6HAJb2I1CaPbk4aRFqKMHbMcxQ/C6ci6B64pCNdOr
H51pOAIr/MlAEsAhsl57X/ssvr+vSmF3L8FdXCbBLn4w55rwyK6LdvhVO2CmlsY2+eMhK2PWgNNg
61hEQ3lQ8BDm1g8xsrBu1cX2vBgVfGRxyByM1ufR3WILZCRR6Ffx1alppfp+Orz3X+/NkGJAkEbc
cJ1eC6QV8PxMMqtHVN50R5oICaniUv4GKTqMlJ6ghI42CqXagXgHvUbYwjkJRo/OYxPqVj5jMlRt
9ETt9kYp7IiblCSyiQOKLqMkI7e5QKtRaoqAzSZJNw9kuE06Qs7Zk5K6v52z6RJA1mEPPnISc6RJ
7EtShsALOypTZBbJc43Y1eyrhDLyBsGiA0y9Zh3ddqVItWVywQO1aUIL0QjE8dEk9q/T6OMI9naU
R9avgc833JIwcqvK9Sseq9oRQIE5qdY/lYOsCl9o2mXuS+/Yjfx7w1wDYnIUnGhT8VaVz44MA0ZK
1sYVfc/d2gLS+r29B+MwK58PpS2dWS5hYkdjjekvq/UN2BMsFAtBvfVbHhu24/0qzStCxwHFHWiE
HZUx81Brw6Pseo9FBXCx0oq1xvwQAfQevy0zzNzy3xdmRKexGWV/zEQRczPKDntsb2ONmM6/T6nD
y+Ge+xRdjsZ8IjQ2bTfvK/ykX4p9dvuSlNfLcnur3agrHP7XFfmuXW5eMDbO1ijv8lulhHZ5cRNn
y7XaJTDrypMMvqjvnxohsDmjXul/l9NqLNy4GOoJGovvs6Rcxlvl8h8eQz9Fy/CBYmT+2HF2+bYX
lYS+VX6hj1ZNxfogtw7klJmpdFQC4/Dh0wCpy7NUgto6AAZNMBLxaOqoomuQKHIE5Dx5BuviGEwd
OWLMxXY6Fg6rrarrds/keatePO0KbTmjbghuGvqqnr2J9zvznD78dsr4dN2Ua7XhIMTG8CwaSCg9
VqEdhjy0Yao6jZfr2IyIA9lbiv1YRpOIWTwOJhc8pJMtG3Q1tNGFZGjm4iwJpZeXLdPH7SY5869q
0EWJ/VmrbvnSgM3mvHzo1jLfUNDH/Nfr5YJdRSxlVhpswSmdIi/VbpS7rFCDQwkdlNGoLWmA7J1v
jqlCz93EzQX8ohHlmad4kO7cnduZSHp6WiM3a3qhlL5HBjnF1F8PIwyf/lEpV3USH62Y4iiK+Eg0
b5NFz4tB9lypWreOwaGaHndVj6NJDtlMY8kWzKVjYADJvPJB+TS/mGM5kSGss6mvBQTiU7PTCRdS
TvCOB0Z7F+Mw+Je7jAsNlLK2CsHMjTfSj6nr7RLnZIE5eavMQpa3Egvqr/rHy2KpPvkmy7PkG1O6
QYSD9NRZaPmYlsvzoDIuX7LloYbbrlljbYOkcPEKLneA35s8YDLl2kaVXDmpTkQ5nXflMVdWEGbI
zbzVkOB2iSbhVJvHqN7uUa2ystC8AcBFNOmbtTUBAtvuvzuswpDuYaLhQCA9qPvv/LrsN7t0Gxe7
00dqa7ebWMlNVrcZHWnR29UKru6ozoqFVIoZKJewC5rR5QRSWBL/7pkZhkWPlLqmV87fSSdagD8F
GjdvD2byGtLPt/onbl5bTRrCgoRh31ogzwCk34axwriLCjBIqgYZv0tA4wV3+T5bxcWLeagBu83v
D33JljaA18RUzt1z7iK3p41tXMTuLQYRA1T3Ft4eISBNLtmcqs3wZql8hbt4+bkMYmBaVp9pkBSl
ggrNklRTFBmLljCjw3xLsr3ziwq8YFE4wRhUK46EXHieHSi6zEQ2wk05jstmmnOYlT/zBkmG3opF
CNWUs+o67Dboy/nUbhXtYcSi6YS1pZFAXMmZon+bVz/wkIxrXTNZ2SJ9Am74O5jog/q6SQQYk45N
M7WKaiKVDlJWwW6dFh1SKSVz7GwvNzdbqHHr4H6flfF9ciSUM3cMReAdj7K+W+2WBuo2gkmoMJgN
FCohIWIRUf9ge1bb5wLr27xNL0qE0+UhX3L4FPBRAjjkQN00s3eBEGMjqRktfViv+1Z098wu170r
llE6Jd6D2L6F7XRLqEhbgbUB+YFydNECVVt5ZiGJSO9fKn4Y49Qt1fADl2/r00OFIqxuo4a6L9P/
bVEHXOkjFg06O2FLR2XJ7ktefG5AFoNCBF14Cw5i1WeWaNYqADGHb1wv80cVlK9uoe3tGKgvlX+1
u97Gu/XtTf0vXzXlVb+jCly2LdIU9SeOLn8Pd7WW73cwx2uvtailKA/nfKT7tCg7niiCSf1Bjdre
nqj23OwuiYTZmcjh0oL2b0iHzQ509W+EA/tmxSAHtk5G9kHThwNJrMUlhj/f5ct8M6wCAsQR0dj9
Pm6v3viDVn5tCCuiUYy5wx43FGZSFHmhFCGMx6VLs/fPFngQjeTZKgctc9AtWR6AqNf5Ssg6mTsn
+IIOmnY7W67aq6rZd5UnpabvS57TV5nJijmVLjgRDoZm9PwSBmxaNOZWmBtwl0pOuwfZIEkxqDAi
7K02WlYAUNWcb8IhVTp5UE+zGFD+Pkjm6z4tOECp3PyQUedrdp8UyuMhITJPGqmXGJTOEW7dwRpO
3cIYOmzEqkd3HF+vUtMtvQG/mGPiWzWXye7nqiAeHMhSzWl62YqSnZWWlnfzAD+QEIboLS45Uk47
l2zsQWaV2g/qAzUsxSWYWe6gK8GJbTSaJJv4RXNerH6EpKPJ0AjEnETm1UIPRZJkn/61V17NO/Wd
FiCrcsmJcFvkApccRWNkf3Aqq5FH+vvffjTKKIkWlDoISg0Hf/ITfm0gK8UlTBgd0qq2VDmWMH/i
sBFqF27qJSCYqNzCTVKFIuXGEtxhQHNw0aoOpgHziI41DcRmGpz8LdizRr9dY/c2Kk6ziCqF0i1l
/uwBsdgDAvbAxSlxYg8ibM6gzaA1I7FgIWGe3OaHHJ7CmjV3cVI6b3fvtYYc+Uy2h0Y0nNCLqMbo
zA1Y7XSzs/KCpXr1F9FkmvO4tkRK4naAT0kBOS/1YZBk8Z26EobsqdLEKMTUs1yulagEYZ2RMAfn
6vcRQd0ODQIcWMLwPgKmCMILE4cGtXxcQn1wLm9ASuygML4kd3GxXKdPSZ1YqKMBDXdQrhMVqVrT
oUDYgV0krrldwf2XleF9MB/I4NP1q7HhFxNdefKjWQ+d1l0eDO4hF7Ofx+ncQYQ3mq/0dCyGV0PK
IEdvb7lI6CKI/VcXd15dGg4c1BkfZ4TSRUdcGmdgJ8fKYrngT2Uq96U5Uw31SCdXuyGuB69KJ9KO
L2ouGCE6kPjadLtVMPMS3BWx+u2Bnlq0mGDGwNGQo17qddOt4fUMCoYsmGBeXVUru52Tp/rapuhB
UPUlXbT51+3/+b9tfSlddPzgtr5dAdVF3dxnzlcPnY4Yd4rvTb08LnnyS9fFhnUlmX5dYljXRa+d
NRvXPRjbzXutS28BK+N89h4xLhmd/hWp6UjZ9Ouy9rpOishSNW7WKEy9B2ghqGMK4DAFri5sasbc
RpqTh8xwIbnh9LD0ronUflY9HWaUBMDWkW6bmarlCoDVrhKyN0dC1PdXmF9hggSTbawB5ckjJIUn
aanSz4m+kPrjv//tx9t8t04KALg1D2jxBUPDkGWn9iTdig19/YX2GhTHYsEjPr6QeJrxsGX+hzGI
jE3xml1l7lbe6LlIB9APZdOzvA+YDMDBCJ3/dPGYKHzzlCjNuMx1IkadtNriJ0vrDmByuYQjbS+w
Bv5q+X88jBZIykuCy4sgQbqBQDBayNDNCNwr6bm5rxVDAJ/VZBP1JbIMycKVQd4qL9AqoTEOzcTK
wEQ6TyqN8pC5SeR+dy91jtAMMgRdlZz70TEamFgH4TWPrBXBQWOB89CPwbz6Hl1JevV9ePVdqP+M
9J/faRP6B3H1kV19jG6vPn64+vhRfdSCpRza7CnGT54vzUyWWNAFdfHmG5J0vCq1pi8S+3CJUgvU
LXZ42KjfE77Dmon0J/Xim/K7ePVt8VCaozI8ENmyvVLNpa0kqdwV+6XGN14lu+qOWpU3AwQ8p74U
v04JDxEbc6s6iFCOBGibNPvcy4dC3HpATgfQ2JDLjgIzIPzBU7UI9RMvDZvg96Cboyhysq+DCEL0
KffRgwjCod9sRgXilFN6rUAacgX942rZV+QOtgqs7nxjKvoIua8nUF/9nCr/Ar5ZrarsVmakElE+
G/Q7jNJpsEJ5s365S2/iTVLo+1TBHq3jbLUxTwVrHFkkPL7yw+YXeJJfYJL09Sk85kVyc+h9Kofp
eiolUbEYd/S9NHFjkK5qVpwkq73njgSxYEMJrzztyD5LjQUVrt6chHjmB2mLZoQ0EXI044Ps0o2B
EZEAZgzrgdC5POqA3sPg6GRCruJft1fkA3zlCofwtdtvoNr/+5ub4w78Xi0Rwi+/ClHH7z/+1ptv
rsjHlnoVCxYJQWYxJxpA0tvG6S73Y0qpnSsTZHSRSn0W7NX2rZL7MtBDVe1SFYFYKZRvnyyifGTE
pi7Al7hYgUlWVvpBjxbep+rxOsa5VYAh3RKERqNxp64BWIpyHX9O7IV3rnHNmNvx7iCMi1f5dveX
fNWxSBRKN93XHUDap/MoJgPxpq0ViM7mLuXOqVtIXYaELqnJUafL0Lp3cEyG66aHVqQvfdUn8hbu
kSo/ImbIIHZgflAqYNje480Dru/jKE0z0WEOgZFYOGXJjevDBF1SKB24yUuYhFM3U+kBpXTj0hwA
SoKdFc/RI1Dq9AdIiuHv//Tzn40NwBL6KkTo+S0bOt/4vm17hiGhSvzHnCe+X3vemIVsgXE0rbhn
nRR7DCb38GTCbmXYpRFQ+7lklOqT1kOAh5y5pQcVDaQJ8ZCms+c0IgCdp2/vxjAq6RvH31SySf37
gw+g3XyrWz/Ipzf58xAt+fFaTCt2ut3QD0/eJJLv1+QIRTp1NpkSyfRkxzJNjd6knu67KJvW8Id0
nxzC8t02e2iTB0CQTiLfjmonUDWUOdzKUUOBBfW9qS0E8LDBbalKgbfw6e/jLYz61jnkoM5z6Xud
JTvdxfG7Tf6Q3oMbl6yu1ce3P3376dP/0IiEMIffgT+Iwwha9Lk3UUmzuHix8ptG0JPrkk+u9qPp
TjyqtQ/cVOqVH5KifUkpgsLp2zfKQuVPTuI+pgDOdeCZsQZ4AuB/JZ/YtTM8S+tEhMakEb6krcg/
J1kA5VE73Aye3JvrCF0YqTTWV5VEC8ck0SiPeDSVLFdfMIowpAw48SU4+3uYJVp9+whAJEF8v0uK
4PgUd/vS3CImgYHO0Wm76B7V+2AAbRSQOfkKNFokKPJth8HhwubIgehBWW+36CTlQ1YHymPKplhd
BcGbzUvQl+B1TX40o/9P+7u+BIDuVZO/LU/nD9/+8KN2dE5K2e7rAIMtC5mnlNorGp+uNmgYT+Rh
OCrytV4YYrswWPpW0xV41iaBYOAQC5gTZpDDCMX099Xy8kBdRSbT0uZtaOtqGbKBvM2ThvhsUgeo
p/mTUDIQg3BieyUIkW8UrfdrXoQ5hzr4mGSGV04E9UBsCmVlu65YIM8xYZtQjaEFItiX1zK8OouF
9L6Vy3XymHT2JRMg/ZK+s/lZ3gjxQIQApz7fWkP9UU39g3RPF007xW4NqgPtgG0z2rVCAnkrySYP
XsyIoVwZgugrUMGUIDwNGp6tjuLkzTqoFYxHgQu6AaD7d9RrwNsjXl2s5AxOdZ1uzC0RALQsfIXD
y00KRWmrICMEzKjsLXIpzkULYw4FqShEuGjG58cNZHWK5F97tW03//zzj39Sn/6t+vTjM7TTW3qI
lS8Kzfq+r5+ZFA+hyLW51LvXFzEyQTz7AITeRXD3sgX8FoBq0QbZfEdE5AbW0ukCmCsVMNrvlqfo
5XkG/FsbqzOmIaGaBtKXJoA0WA0uZGN8koAZRqbIVmiGOWhRSMCrN7PVAt/kpbP/Z4h+fcmSMn4C
F08TqrRHfwPlXLlAx53pkMYwXXafZtU0WG6Gd0WI+z3hAb0vSp7ZAkWh/56Bu9wG6CS0x/YWSSIm
ecS+gtwuGgXI2dd+M2TqI/Rrqcpkk1hBQJWKFqOHAB/yCjt/d0CmtQ1dCxiHFV9VW7W7K8MhsSJ9
jU/ClsEGHvbyvsgfzQcWavzgcYbujGmlYeuO0mK1eJr5xWWmueO9lRKEibC4DPaZ+ni5Bsw088zq
2I6EpkcB8fPJ5d8k8efOkXKk4km39qmLencvRcu9vHcXv72iZVzS8fjwNYzbgSOxKxvLkeOsekNs
a/Su6obGta4F6pByf/eYKncYrs2pydjaZUnGOqppluVLiBifUnVZjYqCV663D4e43uWGlhiy4Uwy
pfCxx9yA+3PwkPs36o917qsD7D3CbpFnh+NoZeRCCDE3aF/Dhh+4RM27bCF/xjAWMFa0XVfmgszT
XKvP3ULyMbJDr1nweoT42sAAo1wO4JoXbz8jLqjgyLMvp7ERdvEDeHGaW8fNcF9XqKvBPXQ36p++
RdfaK6yKFcqf05Or//GpgrYFb+vDOi4+qKjsP8JnJn+n/iD6j//8z/+p/tnN8d+1TTYgrvBwpNjH
d8lZ22fF3UtGQdgM+P0YT6cZu6MdDtrRG/6INsG7V+Z3245usTIHmAuvGlkZ/cNwe5AlX7pdSAyX
11s3hOEeaKTowjKDDVmyy4KHNhfOiffK7Zmu98Xm0A9/hHwdEo+1FIThkl9h7nrNbbe8TgBhbzPz
5z1vSn721RxaB6gT5WNn0UwOszkJwd1o9s5I2XWyB2A+8oeKSrZK/lw/lg+35NpILMuxJu+M8NtX
7DhiMprYezZ6q0IZVjSP12xbnxIfheMKCuKXx3j7bve8a836Xz7N0MExOFj5C4GFd0tdT4tCyR3j
iax1cw00OvWtDgukoLwJzdxLKFThI/XWt3+u5yDvrcsLwcPSbCUF0yiY0zmXPh3ETv+QSRV9UhcY
6GbiQZ2dRg3S6TLr5SVQ6XTBz+gQjyoP2NaRdIFUyOWQSNJP/0pNQ4B3otVUS73fZ6l6kh9WtzA8
AhxO1xqt/DCufPsYPwdqJ1oGBCtnnGEXXGr7DmB4tu0msVKlUk8sRsseQCpEKNSDhjgB8tKXC2KT
kh6oAqQHNhqMhdeVrMlPHEaTbOCdcQOdVutWZdl2XWmA1aHUsTwon6TSWTf//PTpBsLW5VEtJW10
avUX8boTljYZuWDc4WwHGZKKFidbJpVuLGypMRrygaAbw1/XdOBKvDgZceDmeLqe9Oue3gduA+L3
DZeGN2RuaBAXKX2McSgxIzalH/7uCodZXt2CtgWgkg8afJMeYrWhEigYH8jdKsdnKOt2PRsVll8L
Qsy5aMDtwMSP7lvm+ecUNvhXeyGbApXOILCgy+5eDXHdneYnTK1NptFxFjwmMZAIafg52hw9pDw9
xJCcR3brZnKT7KJwYD+5n3cOuctisyo6EiLhXeKf10V/7paJSJk67PMwqDkQlREQMLoeRLm/O5wF
zICkRcW0hC20yUN7i4ff46q9K9jlebDJLajfiIW6z6sr2pUTlVKMuvW6gvWsvncIjB+TXQz9NEBH
qE4vfbq9wvhTsgs+6B9Tn6jv1o198K3TIj+r1asf0iOL1U/etGNlYEQmkiEHLd5kx96ti3y32+jU
o9KfcOMyJca3796dMXK8e9zS68NP32LGr5VvfRZTKquyYCjEfkXdqnc46HbKPeidfQG+SLBL1QU2
LAT/RYMySUMMNAAevIa3D5Tk1ViosY2PC7rdGPZ63aB96D44/oDRFVMxu2cfiHbaTkq8Cg8zVnZg
Tht5jeeY9aUEzOLLyL9DYLdBQcVKajzPiAIAvc9XF8YtVtaBuNyYjnWqLY7LtIXeAuQ0PpeSljSv
HAhrKgeUYA1ZygAZ+rcha8aJ1zSM7NhJKnzePxSadxJsF4487WTdBWphplpgl0B/9JExzLzuo1W/
AC+uxFO+Ija8IlcuLQvRhKuaucx1ZsDrziIzmq5wSxDZra05DwV4S1x6fR8tKeq3WzQlERPHaTwk
UlKK+uI0zVjXjtOI+rdilFxV0nTkxDsw8g6oCGHqzA6qGYz0DEe8Th6PvEWGC4up1ORFEcE+7TAy
hmkCDaX8GX5PHXZWRKHnFAzCPXLOqaeXHkKuyIiHO1zPjdeTKAew4Tv1esvgQYWO93FaISraS2wY
Bh4i7u1ZGlAW+ivBUg8ftItFDEAExATrDt2Nyj62ngsQmYdBVEz1YCZsLkDQ5V4vvzmxTADB1uVY
2q8LQYb6bJurqMN0BwTMWU7BFGugig05FS5ZLqtUazDiZGVy5ZRFwoTQ6W6UscxL4T4xr/7HKviy
TjJgcU2gSaNHYSvrxCHHN0qHVq2tVQGoshDrdJV08d4IwWBcdR6BZcwhaLSzepbq7qcPmbIUK9ss
i5Ml7n+19xqQPtndfs5TGRRt80QiX566upbJLgk0v3p7UzX8HpLC02KNaGCdbLZmkcEc/z/qrr45
cRzNfxX+Sefmdui23ixpqqip3u7p3bmbnema7t3aqqurKwecxNNgWAwJ+farRzIEsGSELWOuqjsk
BCIkPe8vvwcGsIU6V8WtyxcDFKqnn8OPIxgxKD/p0YNm6KDQX7H+yvTzuHLdSiBG12xqiwGVUTDH
sZ7XHUMjIGDcpK6ienXKFD0py6GGn8tQZqHuuv9s5wMYZy5DcYG6WUCVKVcqsxOtpCzGDMCVUehi
m6MoNnzaeT6eZuNvI1Nrg7471nOR1CQQxY3TGPrr0HwE80OZwVKWUZpPhgYEyZFKgiZ2RkOp2flM
aYUCVO3WKnSmBAXEEhEKqF53zlhZclGnZTFWNBCHuX7A4wSArUJj0dpRP0zQ5oyMnRN8wtvqrjre
hEEZF6WdCDzH6dfoLQaDAbAIQ/YLusvRVQw55ZcBrlcocbTbqeb0o+3WlvVgAr6YDMVte/X6duWi
yK5RNuksFUwIJoxi6lWVUEkCW8oUYsmEJ6v89vnrz7/9+iU8uzAIgRKAQWRN9KVVTOyGiP/9919c
IHy4VeHMKZych7kG3YB0f4mWU615VSZCo0qN85CNnWA9jMoBimMauLqhevg/dlK+j0CphfOVnXFz
HEEzZBdRHZMYt8eSEI1Zs2CSH5JUiVA5LDVqZg9RA1gm6Wrn9gAa4lFoIZDlebp0odxSiBZHLJCi
mKT3U+g2NVoLjLThXbYazvP5/b29n0ZKZbPgznjwcO+GE7PZg9ITxXI8uk3u5uvVD3fTJP92q56b
5xomSD3vzaO3dtY81+QLDEMmorgLup2lq8f5pLAYfABEFknZnzBnHLI9CIVmnm3PtKKkaZbXoFwA
+lAji+u8KERMaCwIrzWBZmvdevKUTDMl32z1mZTwblg+y/WqYJmqH1cOZxBDXw0LyPXlZHXAHrZc
nXaLjQBQ7A+1gtnkhnxUNqF53y9Z/s3U/gGolvnNDSbmqdKrLl8PcuEGi+gGS/g1+emD+eWHd0lV
EAAeoR/OeisdBnDnLh0G86LxmWUmgWURYhHpTS7EXHdu867vQP1qeMpLIgZXvRHV+3Xg4jM9iNA3
zaMeNYCEJByPOxFrteIMI+wLTNCuJp9E6oLZm/da0EdOFWCR90hydgEWsFM99L+0oYsTEEw26CUD
IYNQgPT8OWCsBBHeTaq0Pu0kYN68EEHO2IXHgyW9UKowpr0k7hiSV5jYYpxfMmfDGO9Vg8SsIwkO
GeM7xb/J1G6RQpUsb5ExLk93Mh+v9Rj33TgXcxL2en/abM1LqQ3GUKtOyQOYl7H61gHpweSAtJEu
5dlnM6CrLzpgVtjxwXmzigdPF/GP5CkpaxQcgVdKpDpYFIjCtUGkUwP5fJhuFOcVjiZUGUlP9FZf
3XR42NUaNWhmQQ2N3UAu3sjh4MHzr1f1wxnxWC+PD2qMz9i13wkPJ5meL5OvfjP+RTV4CKM4G9C2
A0fNjYUW4gMbc4lHUVcUWWbrkG0CHPIEI22zMLbkO2LkiSzlxfsaz1xHo6CVc/IyLFZQLWptiYUB
qU2OmoyPGhMVZ+RpYeF3AXUFA8pCruJMHDFI6OMg5V0wknKTqaPLV8dj+jBX2rnrRmtBI8EJiY12
Pselk7hJSbsTmMZyzJjoXmreHau85Ktk8xNQsoVPGWC0hDUKfsvNYrYiEUhz0SgUd26VsX0SJ6cN
rQC/c00dJwrKiaHrURHQ4fxsUwwxQx2oUMtyJnDviY7XKm4vpVDSxM3hbz4DPmAycoEqCAja0/YO
yjZAry7PNZ3db4yBDxtsMQ/TyfBOuV7KJ9bOWGFvp4DhiLFsvcMdjTq6jjALaXXsVrMYGlD6F0d9
8tv2/cNVsnxIVzZeYzEJf9una/IYb4aZcnTZ5sFw+K/z1ddHZXLanUypx28GLAI8Xfun9BeFOVxd
OZz20h4ONafND3b1mBUmpaShkovH+Xo60YjJ2lCyzDOmysTE8bULUIiCx1JcqDYfQT5cdFbWcEAB
3dQXYQRDhzsp4DwqZHTUq9Nm0IunRJNbAwHACSAxNkoZPGXpc6qYdD1bvC++KvvvHQS8itXLNC0e
UyV6N1VWBcR1hC9TI084CrSvPYY93KH6sWq1YBGoqDGd3anbg7J3M6FupQj8br1K7eRDAZNLyF7a
Ak4rBuVaAfxKQ2yQ6pVoyayxbZZpOlSiSYegNfiNhe4oa5atdHHWTG09zR9Wj4WDkcHtYK2u4jVc
N83yb6a21o5ZQJSd3LXTTiVFmBHh0EW6BmexzJ6SVWopx9FPlS+NrclaGgzs4fDc7IZYQyPVSohu
4SqwaAx0WieDzIrb2v8qscuGIBbBcMxOyC0DYaZfpFHKJumoYt7fZxoBLZm+LZ7v1av0zCFzrabo
fJRMn5OXQmlxUOnmj1k0Olb2mt9AWJ87mCWrx9nUptdi2gxow83wbroigGQVd6xj7BoGNdvlNYka
HDWs7K6SQ/H0YKMFwANFMtAaG7gHuB/LSjHADzUBsrUKTkNwqW6P19///fdfRqelqU4jM0pD2Vob
vZDlWHXFEe0FmLGWSSziDErsf4B5Ju/gBTfkDsaXxvT7z3/99Y/xbPo8+cge7/7yj5fJh4fNf399
fhrjX1+Sf/45+vwwGp2SaNDmTUXXRbcUCcwjgR1MGJ/BhVZ9HzMeil62Tw7LapfheKFOCVlISFep
MxxecJrID6xvFZuxaOZjuZXDw9wFSUYYoILTzg5XV/jYjjZuFmivX9Ym9AS4rKzz4AtBUv0t/OYn
QKpNi9GXdQ5UrVPqaiH4Vi2lHpCExbBQ3/7lb1/PyWdFMe5fnh3R7qE001ittwbDHLpFVi8L9XOy
WEwzE415twGAz28w7wdybHm6KsbJIr3ddps0mfWsCGH2ou2+iN2eEIcwojfmLRG9jphr24LqQvxW
2q5ZaaCd1otpfcwEg/igwc29vcodR2KEANxGLIP7L2rHVrMJ3JZQXtlmbVsDA9ws6zrxJQWlRArk
Kzpoveiw6k9CUZdm33z1mC5dk+ORNExHOhpLh/VYOlxFSYYpKVGT5LyiOPivhNQyyQs9JVrXkO3x
wCQrYAiVHVsHBp03AtRS6x7QvdcnsNAtBUBT3rOusEiMQ22hJX6lzGxbH/rW1Id+d0qkK38CKkTY
xY67qBw3oBjLdgbbrkwvKYrsQT1MJsVwO7M8W6UzF5QFi4IbqDkMVnNbpwwani+w2R+RFbkD/f8X
xyzGUZgDhGJNXbjtRy8M7o9fZOnq7bGomVS0Lb5MF9MEUHX82ERA71PP4vCQqy5lN99EkY/p7GM3
C+rVvSzb3p6F76E68wL1R0xyGb35JVEnPJtPsvssndRwvzBLGu63T3hhYc7Ln8EJ4Ag2WLWWdK1q
gGFP5P5W+6vSgkbtEeev26JnjXsFY2RHPZtogBpt+PCgv6WT3eG6J1UL6L9AHWxWt0EeNLtAEYrG
HSoMEmgZHBzeLefPBSRqzZTXif1zkgGR7ZgLRuLsar9qsqVII/DUqQ7Zteq4ukDLSW0BOL8yaqct
DjA1krqSRQqoyqGk3n2y3pQwqsi+mFRUEYWjvZrEHfedGC3dE5VMF4QuVHutULP1PwkBcfZeKL1y
5obYbzAua690V5FxD28wz/J8PlZSpkyfqGdq67QEVw4ii6JA1GgNgJwiUSQhfitoeCLFLiL185Q8
ibQugUCUtdNAP5XqaFfAO/yjGB46F3fpPQDdu+KqWIkZaKfpmWLxAcXyLcXylhTLeJPO/A5nqSHG
qIwHXPkBosF1W0ujoACseEy+peAYTaFEKh0u1XPzme6hsrfCgg+LAtPb1iOJoB15rj6UldR1a6oM
zsLENRTVrxfOk4VPpynwIMako4PFtQcLwCwCBSeq1NXKJCEkHSFP0bEDtiwN1v2S0rScjuhA/GKN
TPcT29JomXcvr/3MUNyVTBzouox7ghPKzqL/lLMTlRgXkNNkJ6fBmvjwP8+Pyt14Spf/e1QWfr64
lhCFlTE5Z4fnk1LMWlkPoeBIvcA2fOQfBNkT90xoqZR75Ot4BcbYIILL3jx+jsUA+cH0NRMbs2Rj
ipHtMB+62U9cRwxgNX94cMQAOBQXekGD1OjH9XSVwbQeMG4BMek5WU5gJskys3tkEiwA1uHVZMUs
WY0f1UnMV/PxfFoj2BGKoTki6lbqEKhE6oUJkSCiH51xJJmMaQ/PQmGxfn5kD59AFZvG/xxtTIQk
yxfr1TY8owywWbY6/IU2yDfqm6dkuk5Ht5+naVKk5TvUw4v6+Orh88+/voWgyxvlwmf3Lx/nObTC
F4/z5/fm86AKUJESn5JGPYsxjHCHzALOIVR3L1Z1bBJBA1506aCmNWwZkWb10E3HUjEkwilrQ/lD
9e9uvVq5tDakPuJur9zL7JXy9JSH1sJRbTfuSTiyJrmX7bQoQNrfYnoMUQXVIxowgXoTHDHUr2Ek
uiUiHwUbkUiX0XQkOeb5FLr957PtZ7Bg/amz8Gsc7o7SOIr7y35pzGqCe7MDrEJvzyDQytz8Sqnp
13fsEizpJjETLeazd3YN/un1TciSfaKEC9Y63XkmUDmWjHfGf0pJntTaPI6aRYTOYL3ye8AlVnY3
+BvW2BTUO2HZhR7VRqBVjQo9eLjL3VsD6lJ3XHd58epz5ak5gBrdzZQGILRPqScEY/1JPZgNhWLW
QAUe5flmi/ThWL3DBA0URxetoMBxkwXPBnmxYPVujGU+LopKNrcEJKaINVIvXmsYgPkBF/yi502w
V7lUuAWFpJddT6BOxZQj4gK5/4h1JZcLwAkIEBqLY6lU1mUJII7YZWuyJLrsehG7AiP01WI4tkG3
AaXwJihgbMf0stTEeSvj5xhU2QGfIzHgHbcrr9E4JqvnbGzH8BJigORlOQNF0aXLI1nfuh3bdbsg
DayOBpk5EYlgJoSVVhkdxE1qAdrcapNSAH8Nu148LBOYC1zjBcBUvcuSsmxixlSLaY4qZ9Q+muQT
T/5dGKZKYZgqDuSdlsl9pWb+SN2ZWdjRmVGx4DMQJO8vsRHB5F7K45AaijhqnaCVl/XvOR3ilpUW
XywD+k1VZDQl8xjvLgqs5AMM5E4nujHHngpnUCVELmHu627D5vXwFHn2QnsTJLUTJCLQXNqPJWyX
Tm+y/K9KhyhL1ljE5auMVax/2pa8H6KsfF8FhIwOq3y2Ve57f9KCAAltUW2ybDZ2IA4bwA/GorU9
g89NOZzDd8/LuSJmjwAwOzv3Ej4GGAdSrND6p4eAQadJqqubrXzMpScCXEeqjUBskGEWUpIwB+Qh
0eCpwSTJepVNsxXQdBVmWoIuYbRvPUrtXgrMrwqlSKm9j8RzRlZQNWaVYTHyBNb0ES7bpJZyJ4r1
3Taja/XDJQwWwaGEmrp6nUEyO1Vqq1qaxXS0MAq80/2pHAd7rtI8AXRiLkJycmznZIAYa2Ilna+Y
1IHSQIXMupBm++NrKQ00qR/3GgKbnut9hx/6hvsryOCgFYjsP8hjc0OYjAPGXqxuSIwCOdhHJw7W
z55BoIjQ2PjDV3tha9bemapAPZvr9sTZWRfcLfPONo6dx+DWUxxcXI3TTFF2slwmL3drmHZlB76N
m/XV7HH267fGnViuF3qmhp6noYHN7QYXASCpzqS07QCqZfU8jpu5+X4KGgocdJnR+DGbTtwDJzCC
gqMuW90f0jxdglM7LhZ78ubY6QuyG8LB5gsapOHWMCXHzZJtJxyFh3Rl9ulu1+c6EhddtCmkq+vC
6rr8YMlDKdlOtqFVdehwAHOFA+gFa1Q6OS6hdqFMC9qR3lGcdGddFmFPyPN2Yl+vX5H3YE4266Nq
kdlgTSx0j8wGblJZ75vZoHHQmKaw+y+AD9tdw9OOFbJ8muXpHqScE1Yn7rfgl/UZgaIxjP0Imv1X
D/9aZ8tvruHKiAt15qRzAqi/eUAzwLRz/I0b/Gn7NvXt6xvVDyeMjzdO5+QwjH6DhWWyknoWZivd
4A8wWGn3IOEf4CZ8ck5ZYgJGgJMuO5lMRmGoZ9RYQikxdKfHV1q/yPotlFXX01+hLEcCQNpZuxKe
xTSBdOD8YenAnBAAcUJ4cBPfMJcHsjIHe4XJDiWUHS1SbZvxbkSxvSQLQ1Mvi660nIicSWnBu9JZ
1GNNOlHXI2TcDTkQh2bmnsjpfdQ/ROFDskWST+7mm6EeX1T2eepjgk9dZku3CLN28zFqhsoYLkvv
I97cpkS2n7E/CQ1tsRYoQM/5TTFtyijlJWmKKr8fHVzYdv7UfmrMMlpECNYNM1FH8TptBpgQgGat
tAog5cEwAh35HBRZ8jnQt9up1XKSQizUQFt1u9VyYA7M+5iqF9psKCVjqYhDi4xT6XjMOvLxmAMr
o2HE5zIVAJJeiC23IGB2e0+0DSm6r8WeO1aevicmeIDN28eMQkECutLUJuVXpcn35MhrC8pRDd27
f3758u6wjk79sFAPP98bPBNQ7qmGOHnMCo2YUhTK7walmWto27n68l9K9X8pkRQj85e/029Jc/MA
X9VHB2yU91++/PTxLSy5sIUPyIDwSHan99LZYvVSz1gwcJxFnVWf/Diepsmy0rqDgcEwxd0wNHf0
1ECHXHhXec+IdA0WjCUEiki39+zKm5ImHeLW69XMqe7zyQzi1qlre1SCgOjqyD23h8oxANjQ7ljp
DEcHRuz0ZOWv5ovhqw3qaew3QuV3EIiemqhPJ8vXiatPQwKAaBSaPjbWebYcpnW3ChXZtGLsKGb0
K3VvMkqK6FFSqDpKikQRCTZYwaGOh2NFgt+GitaGpkPTVRGUTmfZZJTk6s3LX5Q0NIo4+VM2uSEf
X5/+E5T7qGdeZecNeb8N0Uc68P6T1qFKcyZVzanRx5XmpBdid3uvEQSAmiCgw20nxUs+HrpTLhyg
SYMBLW75Ms310NcaiEWixChh8RUIL4ugitsNuzgWGYtlNlN+4FNqh1OkA0JJy/o995p1oy6UoYIp
DW6o6ImQ81yzsj2UL1rOKjjFU4YKa2CtIKzPoz6oz1j01uAHvg5Pp3J97lBlojR/+crRrXFRLHnP
/4Cs5/eQ7NRfvtPj7D7AmxxiF8WKJ5jwsm34kdDTcKbJcr8yZPecvg19HopARtGbbPaARniDhw/L
NM3fLvIHeAofPfWcZKsRqfgzYORHiPiUvdEoXEuyD+788Xq1JTtFqpTtyerUyE8HnbXyftH70Weo
BswQBuB53PHmYSqq/QAEoGC1vurkzuBlJoVVLYo49rOSj5c5wdLzO53cd8yxEogOmE+ru9fRbqXv
LCm+pWXdW2EqKQp1wA4C42RAfQSyc+MOlVD6y/NkUpjOHMXgw2JpH3QEMyx9MkeBqFwTW5XSMVA6
YcHP4kgvlEcDZ6E0Q/E4X08n/7dc56OXtFDS/cRwpJP6z1icfxRvxsViVK6lzl4pjNt8nqe31qnU
Xv1JPrTfVgceMYxbA5oXtppGZaKDieKT3Z+ZzRVt3L5CIjfpdtibVIWjd2Ufb/lxKxoXg8blrAkH
npavzhJUqJ70iUqeKe0W6oRO140Lv8jRWTJvrx1Nj7lMxoru7DNcGKWK6DuTeIqtwbesMf4ZZKHa
sNuBz/GQrv4GqO3p5MOXL7+vp6kdxIVr9L2oWxFrLzkG3HpCaosLnVt1OFrVTbvLvClBYNMG3rl5
HJ4/Q0jZkX4FfU2v3+rrAigb453dvt9pWGxLGJ4nSdcat2RGpYMCqdedIaOVrHYvlaz/zxvyZ0gw
7V7i1Lngw0jajgrO+6CWKYleXW/O9WfZRtGc+RCv05d0SG0114/FNnWnyBQqZtwsKsEGFL4S4qiy
zcv4sNX1StbO7t1nQ20gDGEUVaJoXhOEHS2F6olIqBtptHTO14ol0X5kQBlcXu79fHm4e3uWCg8Y
Jy2X13B3J9dS3oxfVr2drDNnXaPnmR7X0qmdAbJl29qRPjnaTClUVjAZ3NgrP4fOHWi6MHVxdgQE
4ldzc4kr8apCO/ocyps4Hud9VPNlq06PIEzVROvaW4tfh+mBuleq3h3OYJA+IeQyB17V6wI3M/Fr
W7OIsmCHA9wkXGKNBRnHezhO8nE6dc75FBjCjXGrO1xkGyW7HuZvH7L7yrwLNOCyIzX0/M0+RBjQ
jQjtUxd4VSzUcUX6PHzOlGH5/MoV5SRIxxgeqMDD4cydg5GEJr7lsIHcPeIMDwTt1PYFlaCN8ikM
+KjEmsB2LaNyLksVStQokzJqRC0B40J12sa3OcwrRVI3axHMRhojInq6tHy+H9Q7cW0MkyaxzEpz
UrFK4FjNOGQY6joELDu7GQ/HIzoRZnZBRge41WX4ODHbEGpdTIfp8nYcVjNN1DPLOYwKKRbzvEi/
ppuVa7IX6tbA0wKuNHVsMQ3AU4tpH+LVXWCh2NQv2d3O/raSg9RTpDohzGK7d2/vWoCvz4OxpYm0
1/q4HDXzOKzNFbvdI3vdeDyAVHA3xozZq3VdQgZxK+pquzqNUW+ZKqWIAieqzo+hQd5KCM6uI29V
IyxPmiclRGyTXNNGh1W3YLFOu0UoKw4RSbsUhvOndLlUZoMyzdL7ZD11xh4JjVtGwE9dgTPGiMnl
dNSroK5xATxncrodZVcDyD5XiujkJpTdYRlBVs5PohR1STi7LdgsC6h/ibtMye/GMJeCV0ceqpkK
pgvX4o5Vuo+tSTVWB24+gHNRxsl0BKt80hLAUpa19pwR5Q24xjrtE1umfVIs++DJE3ajENemVnrw
dBFl/Apk085QsIAXi+aUuQXdGELlX/GYQihwOoVh7FaLC2ASSSCq8IDXYzFWLIKab29H99tZmzZS
55CIpOKydmS6WaTLDFqLkunoPpkW6ZsTMY6dSQS0jj/t/rr+/pXGbsgnRWU35CPQ2Q15r36t/u3e
rJ4Bi+oQhMj6+Y/WsBGgiWRSEGNNcjyvt1Rxc8r7Ag9gZr80fHZFpEmZeiyqfqX0YaUAFmkAZEFb
Bzi2qYTterpLwt62SJrVfZ61yR+3v0sno9VynVZm2Q0YD7fpyvxbs32HycEhiyJx16vbFgZMsjOV
flsKM4PXeO/3HZM4cKDENTyxLoICqUM/8Jmml+/AOCfoOrK0KBL8ovRHYOZGHLc+cKXa3642K4uh
i9EViDPlBV+7st99vCtU9oS3cgF9Q341alGggeBRp+HO+tXV7mXXycAanEgrOOTBTNELoEICYj1H
iF2FqCRS9Fjn0aiytp2SEo2yOl0oKXpm10RbJcVBSaHOTf8TagQhPTWhT6LDURhHfJdCK4e6bW0y
O0IkBegoGV1HGRvpNJhfpNN7E2BShxEhe9MWGVDELs39VEa9kl6ErkX2tBe8/2bvypsbN5b7V+E/
0ubZwu7ch6tUzp72xuusy7uppCqVckEkJMFLEjJByVI+fboHICkRAxIEBiT1Ku+tJQqiOFdP3/1r
bIQHikAJdVICVo3THLG65vFsjtZK2VVrMolrAMwVVlg8NwlU8ZK5ZU4zl3TiOEFtbqXDym7F+LsR
vtJtQup9KBxtTOQNAqhm630eglYWWric1m5xsB18A368Oux1Ro+D/XBzgAvAjDgknzkSyc+NOKD5
x5Q9uAEsaScGNMnukrI3DBiFV1dwFNFNPMvrUIDYQNimJu/n375+/PzvXzYgTdTLXKd6F9Ap+fnZ
A/DD8dk9sojp/OyEkbOzs4fip9Ni2/wJOOsUQwzsl5G7kMyxzF0wizDc/DiuHdNdouD57fD6Mh0n
a1ibyyi4pofgp3sj63Ii52dnv/3H1zPYm53owJKBDVWu3ioiv8VO9MCHv4gvstv5DxfjePptkZ5V
vqHiTwKWpqhVTdk67OChDgKb9BF+WH+TOoqsx7osvVbwHGWaIxrdvjRHRY7F6uRt9O/1yjn3c5Sn
k9txDJcLmdOPt9MUCPnj6NxaK4wW+vRTnM+jSTZKL9NkdP7ldopyhDH4AsPhSxgQowW2qNeDlz/9
+nVdWbADpUwbrXHBuGGWmBu2CWCXSgJq+W774rvCu/pB1L5ccFtpQh7UH7NHPxir84NxoXt2SHJ/
FwPSroq/BzKwO8I4BLgCUoqDkp7o4HhyyZdodaDVv4m9KESpFyKs46E21VbT4E7F6WiZg7kh30do
gf0cj4OW2Y4nG4KdW3kc7FwQeZBiGmbYAYtpmDiSYO6OrvR37z+9//q+MyOl6rAxFXYcm08P6V8U
O+5CmKPnWtDnu/m1VvAyuDDMZvmW5ihNTemLOE+Hi64u83i2tqFFhIIyxo6uLM/0bKBKpbg5RvcM
r3XPbPPJaARR0Ywf1NVxJDdzxxToQDKpERb80TGEUyAw7Mrh88I99bQ9HXTT3w1h8nBl03icr+fj
lEyHHJZQqQ1lnpT8psR2yabJbJbNolU+kh/NVAYBX9gbsRyQTuiRZC9puj+vDa+DnOYsTFjscMoG
FfpZraAt1VcTQdqgyYVom+fhVmv5/mXRtJZBs7S9Qzn/EPai4v16H/3gO8Zh+vVOfrd5MkNw7h9u
4jwHJjP616MkyB3NqJ/fv37XWUXCsFB/+3+ZZbDui8AbRTkxwaLO1Ykvn8C7L8fp1fXcicJy+gfj
at/5ZDHf7z4U1TeH3ohN71kkkCwA+z0Faob1A51bBPr8TZOkizL1c9H+2c5pQdyK7J0dgh2wNyNg
DfSo9kOq5YALza1/n2dJ0lUsEyGwuZ4MuFfVZToVYSDCBa68lqH3vio12BX5MAT5Kblj9Oo/f/nw
+fOb1793VgOsOYKcmPzprRCC9+lz1APFKWe9Biu9sSJCbLsk7N6dnbWuTj/L2uYAtWwgLQsHTZzD
PuNsm2Dka9YOgWctsZJhU+YdC56DXUrdA0rsmoujzq+hiO4phLt2iN50KCAcJfoFRmw4Db5jsXao
s1dKkT14J1p6HquuimBoV+usyUugqiu81ka2Mr9OZyNMrJk/LDyA/mQXtXPGwZf3r39/+3P3gKvV
z4g4rNyJl+wG/hVwnsqyZzFPsxvw/sHOXUt5WBnCqToGGcJ2jG2FYRKg3Jo+KnbqT72AI0VoCyWf
B4Fq9U/YqHNbooVVnB2EHmUwQwCdGH+NN/fIws7s9iAtJ7wqTFCrCsuu+k11LHbYn+poB7K3BM/N
42qmQsMH+odCI0j1anvN41nZhQRbMdVgO1ssVuU9wvf5YQMVAicK0iMsR2VIiS3CW9VHbvbGPHZd
r/2qJL7CEe0akkQgcvxl89p1CQhq4fwZ38UlQcCw0QRboyTTYTbygGgXxIBNlu2+sVKkYnzvYzLO
+mvuW9PdVIOtz3tWmDaSoGcvJEeoVmOPQEvpyTf7ncctK5VqYt+uY5NP0nz4uIV2Mo4fEmz26JDJ
f3Q/n9PTSX51/tvrL19ORw7rrdJZ2eGVE2Z776vq6x6P4Q617+vGTTjA0nr5rSlp19HFe6/H2fRq
eY02NApXrtr3ELoKa5N662j4Ih65BuR5Mge2kcY1uNtcDwQnB9QCmSGH1K+3CtBC5f744ffXv75f
qNyrP/qhhHVUJ4zfM3nC3zBD//HCU1oPHEmTHWHiQ4ArCKV78P+7kV01/7J20A/OJgViBZlDaWT+
TprGUd2+T8JoEpRxLbSS+pVqA5vfKEGRttU453+nQAj4yt2axI9XyNlAMHEIYBHdYfFPGNp9Po7e
fPr89pf37/yN93CZcvfR1hSOKttGtaN8gplwF/GsAn1ngZE3Ap/rMvbHL5+NkfYPWrFrJGaR0J6H
94+NS2/WX7jr2JFvbE4bKT0dt/0PxJs4c+7L5PzP+OwOrkCaTc9JBQACWwPxvgnhdn75h6lshh4Y
Q/sfGUSwb2xY9j4IEHE+PGSget9zHPw779CNXHhdh/7BO7RUexiaek5bS72HW+cdHZhdM9Q3upu+
DOLl5X3VXcOAtKnsf7FR3WLVPhgcjB75OCy1YHz1fbXG8Rz2vzo2bdhyhQZFX9CN/DS0gY647CcH
ivG0iCH4nVYIG6P1MXVjWPQEf+LkedJeYTnZsr0CWGmN57OhtwJVcL0V1XTf5860YiE11WXO8EaV
1bqKyU3WN927t1Kj+45o2wuLXbV49PBarQZcsH2fvDRtbJQQFWSX2ewiHY0STD14GCf5dZLAvuTV
vpvG7nYfQgFCbIkP0r16hvyGricge8LYI/8QPHz16oRJ8nqHfoiMbYneUgcop3UXnrGIVcGujNOp
wwP1eksUaYg4HJoAlKEt1reD36gOAsqA1iWsPMCSJRNdGN9e2iK5OM4+BLFSwqp9+q780HacDpjQ
HS/a11k8zS+xFgZ0UHfzEIO3NlRsQPvklLTUfC9uL7A362gWX0XJHRyAPz9BEdqsf++jQULUp3Aj
whhQ8UXy8mZ6VeGNTDRNuaaBy2CZ3vugFLhVzypcTYYes7SLa3mUzBF/dRTl8XR0kd3Dq+KWFhPx
R+JYQ2AyGjyXnps2Ls4/i+yYaDXI4gnMw9fbTRszEFp22dcsyaNpNi+6Xa9vY4HzrQaUyGcsab4L
ae8ZLdt6WIYlBbuP90dYFWWDbUm0h9VkeTNNthc11mD5nO3uun16EJthkq0A01cehInIZlGw8AML
oXrVpZdF41EBql3GJos2OhcPG2KUVFvpAHD2qOh59TwwqZjaTWkIVIgjjGjNf2CfsWnIHNjBtOxH
OR3OkoLNRumkpqLAYHKq5gdYLZPmOQueAowgpJVDraSdxP3wFteGF9F70hS7d/NuLia0WubJ5MZZ
Lc7ThC8QDOd8efPf4sX/+Ojev3n4ubj11YL8CA0PewDqE0rQhqJ451YjBT/cxAnD7BxtYxVfp1hf
9LACkwA9dNnnbJbcjGPgkBfJJeY/OXw9b8ujIlmsjSqz2rV0Os2GSLB36XCeToqua/UobRTs724K
8Q4pTN7sFakQj7ypBrdTU5S9kAwTiMvIVGf5v7prl8msRppjMInYI9Z2G7tte9B29UAR0cZo3sr0
yiOpKcUwGow+bp8546NEtMn0qXA+EBAxsLxLWM91RCIgpWzqL+FBQ5m3CUU1Pa/qUVkU14Y+W2bD
DSZkNdgyeOPGLUsuovjmJn9FKC+o+qk8Fw7WhxNqmzXDbG07rDiHv0SQalCvRGiyZFvJknVSGtE1
PJplN9EovURKBHFcREn9vXVtYRt1E/zLQb1r0oiFwA9poxaKo99GhVE5U8dkt3hyJIjdV46Eokp1
F2Or1buOjNGCKVY1d+emI+IwVsyvBV14RZJmxxSjXudVHjVn9ReOTjQFNQf/D9/1CX9TljOYhVX5
cpRN4nR6wqxHnyEMc0gUCcKIXL5CcTK+JCXM2Zf6OWgwm8iFkC3NFY9AtNfOH+0IJXWQ0N1WWdAM
2oweb0Za4SjCf8SG9RgJS6x85jfBaK171Nq8VGXoVqD11Xj/9ev7rz9/fndkG4faNZN7lrzC8k7J
iSsen+NJFR02N6ibTAksrAhmdT19XCReYHz0Mrud+v1c2oC5rHow+9bGrmImKAXWBA3LYjchnBiO
8GO6h6Vu3vXKyrlQDdEidp3IJM2dcw9nsB4IF3wglH6+gua7sJJFEiwjOxp9drsOW5Tf/suatvoP
P4goKLtmn/blHA45u537swKMwpqlrlw1u3ONTibZ3KX549FvcqVL4KzdSiKrR5ZNXZuVn9784mos
vD4SopCpH/01K9Cu4MXwepbB0pJ7GDQvAiTFSO4SErCTQqpzSmm6J8P2a0mSPpWMt5rGchOSfBjf
uIL/ySLBMRmPIpyE34mFmHaNfUqB9NjFlWy5RZQpRvcTifLnoiJ6j1b7syA77RfYi5bvWJ5YVH17
tJmN5OVRW4UdUMG4OqQ087HG00XZGTxdE23F289P3urPTSTcxlATcFxJTKfS/8skGaEUzou0kkLK
eMWKsE37nm3XWnFUbxBWko4Cs/Z8ELz37irCU/VigPMB4+q56IghBRO3bUAFNhcjboPQotgEmZMu
B10cbtnfPLpL42iZI/M3vCGpsTl1O/paS0SED6sJoQysZIF2c5o93kf/ePBBwe7ktg2tAvGhesvp
ETDftctdsFx4UjDQhSf8vYcPF4yXVFgt/vD4714Vn+YpUxeKtolNlhv9Kp/HoNZnFwgAGi1WCkrp
MLmpwzSnXNqGGIPbjz2/rU3Eh4UNGO2ktVaLN5xFToHvEP1cEgRDcltJqQ0q3mCqcE9Bp8tgeZtR
6BfKeCj25LRHbxxHmgE3rP2lmINRtjR15w+gErr8sYt0Gs8eVhabX0/BVhydXJlYTwujT0BNB4M7
ztHBm+OI8/TO32NUswFts7GL9T5CMXBLfAe670sY775iY1vlMgM6BumXZcNlGU7u721EKddYpx2K
Ym7HY6cjx8O5P7HMatAxhTp2xrD8t0ohJqGjP9SSwIJ1yS9w0X9hKlzBO85dUttKSq5E4iMRWBF8
MEdB26TEeEnjJvMj2RqDYEdd8kLTyVUBnlziA+CVy4sYRX1wglszYIz0wKj9kVC+MyZBdZGOQ17G
YL+PXA85uGnJ8Jt7kkfzrDbfV5jd6yjrD3KWDBPgklE8m8UPF7eYduTVxAVH0DrTkY/NkhF82j0F
ddxTIkqwIZMmz5CbYAQgpMefGUUDHzDoGRf+sJpDTOtyZYskkbdfvmzzSTAq7IBJsR9nnfAjX5JD
p0I/YizVMIrj7xXm/urD64+fXj3l8M7lvcXfhACPhpDOZ/tv8V38pbgD29xOiqHbSQSjXmcvDmdx
fu23qCmskYYC0wS2XLaO3BI6wUZVJNgaV+xxtdoNESNugUWIAKH4VTav964oxN4xrDP1pB8K1OFt
DkvOGyIrN1+WS1IGC+NlnKf5mlUrBkbyQ54hb1PsvUPtOodFRgNm1fOp7EOxOo+HWUhhyhkTIYlK
+hkRwtOQ7mLUFYc+vivR39fpPEHR5vcSWAHXRoRTF/Jkdgcq6UVaUzqvwZRgRgXdUV8tQXF+6HpW
7DDiuk4aeKJFk6tlwRKhzlvp/q5x2MiXxGuJFeEWTitwE3agwl4M4/dJEDqQAXSQysXwu1pJy6hX
3bJWOwgLLOi0ilLHMJOFsmcRjlox2hNigiI0WsbC62Ho8IJpjWqVMa5sR2u8oK9bYHxNjBiqLR2o
YICgS4ab3WCJQF5D1bwhXn/LNf7oW2S3nMe9aA4vpkAnL0JSsaWN3Fds4z7fpaMki24ykNmzrUax
K5rT9OAyrnrTKsLtLT95LR6Jt0KeYZFK+RvtEWbawK6KLbKM7bLAYrR1gcbBYmnUUY3txoGAxKLX
X95+/Og2hkWj5DK+Hc83d/SSHMxSs/tkvDwiT6ajKL5EYhqOsxzDqNHttM5BSIXBdmKiw070Jo2w
7ML9q/eobavdKD7hiQMupCNf60Zgj6y7f0rWqEvWIXsGuyxPuMFT4k3KyIK749+X9fawsez7pf4K
o58Y8mpRhFbVXV2BfaXjGgZOTcAbTzzaq2zkBG9+vzZ7wKnkFq50//zF7y3Qzvvez3Lv0uRvvy8P
m0U28nOxg6q1a8n3IV3xwnDVgsxcqH0dCS3K08ntOIbzR1P3x6Lk5uPo3ForjBb69FMM/GECQuUy
TUbnX26nZyfYZAS+wHD4EgbE5VpXqo8c8Kdfv1bgYAbSWMFD0grGDoBcJ0meow22oSZdML611yLb
gy7ju1OnPXE6ZrTul9OJRgimOx2n38xwEK2ibxbXTIMSmP+nj4n3+AyQddZzE8+vQ5ojlDdyK3Rh
P1IheJWyu7EfyfzsxzpMgBbnNklGaVx8jYp5Fz+UupNTfP2FgZYKkMxBlYFkcjN/8Pt5MRDeCHSW
+XOHbqeX6TTNr13/0hhuYzz8hvH+EizzBjks2JBjfF7jgUXEL8LbT+FRoSmO5jIRciyWWmST5rcX
i/f4XS4UNpyEP+MM9uYKecQUpjW5EdEd+qFnsd9yllwMmLYHUpVfgLR48Uh86DqxoStgQjBzTlhI
ei3zUedZ7kCxilySutJSsaWFw262+Ht2YtjJ67cVcxxoRNp+acTTbZwbbK9oxXMUHCf8A7Dk2cMJ
f1ecY0hJAgpmoNO4EY7+4HJSZr5FnJF7JkjEyeVNHlHy7XIWTeJpelmgnmXTahY8aBksCAfFK7YM
hbZipYiMJfm+NuYlvGedYLlED7YmoefApGp5OJwE8oCW57LFAwoaNG3YzeSY9BxFKdP7OjQP4Uhh
JFhbtneXhB+3gw+ada9vLsOaGJgKxGkz4AsvqTxSbFympSvVBo4xTeaIUVCbl8Lb+Jqm8V165cBD
PJ2hIq+jh0nM090tAFFUZ65fhW0r9fT4Ql4o+nB/7kN0Mh5P4cNnQXsQSB1US5tfz7K/a7y+ujON
TbMCMWbm0AfyxI9xwNC/vJsCuDo+F/5e50RqwBoiw2yjWUcdWEYH/CjxUKhALywRQedOLTNCDBST
R+a08visupgcitOQptLJ+w8nb+DfO5/ab+1+iIFbG9In7uf+GhbUyQdec9qg4A+/Pfi9/SBwGAki
42bxlSsJBXVsOkeFx5/ez7gElcY+K09/ERMMmndvbJttXy2yFK6PNFDEaHC3v1RNN5/N6TCbgHY+
Os/n8WyV4xkt8JrG2VUVeZ4wexRzhslVZnyKsvn84uqPshnGyz9vPCtgbcIVPazgKmm051QitRzH
lIfjJJ41IxRqRDhuObtbJCN4W4JhdjPXgVTmimITXSdjYB24Z9XESYuZaPsf2WpQIqQOwbSXsAzp
FPjAdFiTFIbdYlgbBXXrUmsXqYwdNMOIbOQdmA23Jke5GgRJD66bPZLW61lRmO/74mlGVKPWBJ6s
X+wfyw0NdkuxKGADHAWnsLmUhdtcb5LxcSUQbDMoS60idBxPKyqCWXeuGvbvdDryW5NWu4LNcCor
RkNckMhJHS/DxzJ3JXvgRY/WWs+XhFQDzYMFydOJA8WZz2qANigTZsCFDHegGzrjGYMoELxn5yg9
dbhhC+Sx80l8H8VXyTnxxHd1s+rUY7zSfUZYhCXE7FUaU4P1rAeTjR62cDoc36Kif37mpORwJSXv
H1fFMPbf/3P6FyulJS1ya4YVJXIgtDIB/TL3vizCNoH0mmsMRhuaEBfjeOp3JROiB6xNULSvuyyU
7pTu/pgiXMP6orV19PPXXz9FaKzMU7/2KrDVIZHPlY304G0WkpPW5sN9iRaSORCqPOL+6neFWDs6
gCxZG8/DnIxE/5zpe6iixpXSLdAUvbHBzUTvMxVWTFABGVldfKfELF7Q8gUVixeqeCFI+d2W32lN
5SBRrGelXgi6b0mnJW19O65n0UU28id0SY31Y7o7oboRqnOPBgwBJ54fo5tfp3maxyf8DbI8FPRx
nkxSMCazaVCnK9uxVsUfL6jZfs4GSnYLrJWghasnZV2/P4SrsSlOpwN/dAsfQa8Do/n2lMUsYYLr
gvRSU3TtB7qphVozv5//WEWpZrrL3bydogYJ+7qhITXF9jMsQC5skdrpxdrWtKNnyxGHc7kgCJ5X
78E2GpL0Q48bsO0tYgm2SSWuQaN7ulIHeV8L44q93YXuxL3vEEdwU7ty9IVK+ky5LPzGfYnhv0K9
JMhuUWm4iWHwoFXaCJa+g25QUceensZG1wVXCjSF3mrZhrDyb1E8HWELk/TywZ3JeJKOzgvl/BNw
zEIDi79PR2Dyrx5/fw1KBzwpFKl74v6n4vJHVapg91pVnvDFk8ULzRZP7OIJWbwoNbh7XvlkNVy8
kOufs/wrZhZ/vvgrsniz6/yGainiP8VVNVBoPZBWWRPyqOE3N6CBJx4py+hgxyqYLoOBQsi6OJVB
53wsWJfsLJm5FtgFqr0fkpUY1wh2LwWiqkYQ2l2z3rsdrKZ0H8oMNg3wg8wrjmklbcXH/yazLBon
06v5dQQL9wdCjGiIS7cbSfnLVTBdSvWqyCh29Jkcm7onhczpAAvbsKOXQJSoNX8ANesPSt5v7bp/
YCEVKGVrHgNp2nsZOI4zzG4eHv24cDpskjwKJA+RhAW7TIvuy+vs2RP9B3uHEsKOXQ3cSPuBI4/C
tDI3WvDvBVp0rSVqWNAAnd/DjtgXjAcnvkIR99EcGHRGB0uEn2c3UdHa6naCCSBRkX5wDTxmXGP7
GGyDLcmzJ/peY3NgHMpAZ7RWPVmEYpbvrCmsBvXChCfKOWgZwyZ6K8OUUkv/3xLbYIkR0sYka2SJ
EatoLy4fr6sHAcIZ2wPP92vrmK7wT8CN+gjxMUXJ/7F3rc1t28z6r+iL42k7sok70BlPpkmTt2l7
2p446SVfOrRE2WwoUUeUHPvfn12AsmUJlCkKlGS/naa2bhZJcLH77O3ZtrRAaaG8RXSY4diuNGFB
1ZXBxvEkv05xqkecVXLVE8E5+sz/6p1QEaDH1Q3yYRsSqhRr4b6X2TmvgFH0s2ockjWQbP8R61JT
00MeRh+UqUjpWpUlbHOlHw/hwovY3yHDiUKp2/zIfu0yTkaWgsLRvToubfdGPEGrUzFFCDPEcCah
RbAC8KtarXrsIA1cOwWuYNoE3W71x/l4NnYF4ShrF/lNF7yhqgYprnl7Iue3ZRSzqesDr2yvtuxe
fuE+29q6I6pPwXL8eX4Ovx4xHUhJz6WsRdXcQIksJqupvyQMsIIWoYWokn2fyFACVBFWphGT4Pex
56AqWnXOleZ8u9s+LyGqmHBTc0jZups9KZL+HPr2b0fxECC3nXtsSUfg4ie3lSPZ6hX2sUcT74u1
Us79WzVPyqgOZUIdsJrCal+HZolTEkeRWVZaoLGOImGVluXdWwd5ccyNUBEPvcY+46+xVZzs6EhK
bnZNrjCqoswOb1a3n4+SygjVI3PfNxKalaEH8zv61XI1oUDOQb2rFY2ehzZupf5Y6y1RfImj7hLq
JZFbXBQgAV7VjL0tXLUPOKocF6q30Rol61qWgm6MKyZnEw76n4aR76XjPTYVUShlR3E12dTVB7XD
GdcdVdftjTrobbaj6ldOhNxmrRzejbMs/4JDe27vXKe0mD+08yXtVvCWq3IBGDV6cl7NAkB43KuJ
BGnJq1mb9eQESbKi57AVdliiyCPWZFzQMC16CyvjnHlkNYVFWSEvkwQ8s4go0sT4LJBsIWnqIrTy
4HGFJQmGNvA/7BVZwuQ5UTImhK/Sfj+xthVnUHUHaZL151yl3v5ROANOTXAh9JasKa+KUZYytgGU
XbqntdbC1wPAWIcIEW2HbnD8NovIfbWcdzivAONHQqH2OVlc6koC7or0XmJkfFacwem8cE2HZ/OP
Iu9lbucDOiaQ8ubZ0oWX5ROnFh50UeGJEiZNq1Jqm0VfpZfeyRc4OJTx7e7R6so1Wg7HxAcblz7S
VnZQhvEoipxtjGoYRSRwllrucU9SVIyMhtiT9NE9SaVux/6D0u+Os1nRrXCsOYlq9pUEUgg0kEKg
cJqqiV++qT548/F198ff/BrBgFdKD0kjqBYMaWtoLmiINlLRPpWFAWUhVduOkp/LimCXcQg9xWro
qR2qChZIVcDpdHQk2lcV785/7SJTc5W+YDg6Sx+UvpANBAfcLTA1uDnHGfpWcL8Sdw7TvIsEE970
mRBg07XaJ8rmHS1ZgxO4v+D7xV+49EE++RJP3KQMn4eldUc2CV1ue1jwq4wIoRfUI3qBd6jRTy1C
UweFYr1SvXr9LTXH+VU6mP7947tzv94QNblIAile1UjxTiezh3pXod7l5OkAkrsTDZq2MEzsU+nR
juEmtOw0EQh7OuBuSG7C2xz/iC4Fiqml7E0RD/w9xZZ6zYS3MnBKEyTR9qXUKf6/vaa/iAt/OSPT
skM1a18P4oxfWOHyHa8yRLjbJH2zxfKSmpPoWd2C1elVPLXSW8E9RTvEmDaS3Uuy+/L/Soqz4w9L
MXT8CP5ymu34q2WBwNRdo+x/KL3GeceYlpIms0lWTtXyV5QydDh3sBsQSw+T6VXuPQ1JcO5HU7em
wS14+Xf50t9nHz+87eoV3a6xCJE/qXRSS1ZfgN1pkFHx99zNLtbT5EaR7vB2srRfrkAQytf93TS6
5gTeLbcCxjGdIPp2gsbiahNovad53s1yOKFxfFtVbGsIrdnTWAtW2UI9h7lXs4EGgDSsM9lrMFzj
JT8VF++IKnJEBf4Hv9V8ZO4mxcY8wuGmWsvtUZWthCy6lzk66gTJpOz4N69YUQ5qlITaTtPkZurb
TNdxNvOCV6lwoLYKtJFmo34ySEfoK6xVX2A3mCBPtgoh8IwPQtQ+cZUEX0K3g6sq8088TBoHZTuf
LUm812oZWOcmIfMKMU/tAFZv2WqEfWD71NyMYJpYbbHA+PXFKB0MEjyDvntcMRWbUBy9y9swjPeK
c8VCakscFkVPAnoWD5TIEXs7b+wNqUSENiyYeA/j4jMocWfH/EWkWFbSJD7gvemXuYtpezcU1l+Z
5xlrFloyuTWKv8jwFvZdj9Eg/lyy/3r1IAVzL8KZ+3GcTuDIxWwyyeGuAugBRWWH8HQnSVz4WyMN
kzhjNhTO8rdTYR0/C2PUyrKKUlTWdZ4ySwwW+I6WoybyceJn78JhoMw8PUU4R1OBmXtlu8JdToT1
jxwBuVbbCN14kl5jaPJikn+x5Yu4at14Nr3y93+Cy8JkmE4uGwl2h8LAz6xIJsh/dwZr8znFqWlF
8SWf9M8msFDFg44Z0pGI6ZcY3tzf7fhk3OQVHE4id+eoK8ba8pPXU72v0UulybLk7vb9s+NysgW4
w+SrYzBHr/HlCtukTEeKSMogkoW3sYuX5aNRNx1KSbAtO8m68XQ6SS9mft5fgaRDpEl2147IdkPC
bNcpRowryDAxVHzw6vi4yJLBcdB5UkFKksqYib/qAJN7pAWb/lhfFkPWRhYFlNJR3p1O4jRDHV9k
ceHV71rQDtV6K3viojA4D2ccT7A7vLBD/JJRkU7Ta/8mYbpZ2bPbJIus3HHfDdazWtxq8PnM4xdI
0n1m3zz1jW8GB1YHXO+yHcDP1G00srHt83rLkc9Cc31IiqOSQMYP5I4i8zV8wP0LqFokV4Lvzp5r
zvj+7fmKTvKa9KNIoFWPHrfoGlAaiNpWFt1VgnRf/fzr65/efI91GHZ45sf3P/u1JgajQu5iN9oL
zgPp3uKq2LLC7bRND9X8Qh32nMDGSLPk29PT0+lwfPpzfJvPph/cicFWKM/Rg3vwr7p3i1aK3NIp
u6p2EoXqOH4gQuunXZEtqU026MHS/upQtXHZzBrI4K1AZViBSlhoEbQ81w4H+mVQNrSgC1JUkmqM
7bJ24+xLfOtnN8QEkhBBkPryUe3Mb1c24k5gpSYEY916Ozh9t9t8UirElp3b1ReX5Zc+hwS+STfp
8FgvMetlhZoDcCA9Y8LQ2GCQEyzNBSi9b+28neNVp7LOcOFTTMSCk3rEXlkKb/bqMZNFOO0IziJ6
8JCoH09jF8gqH8XjMRzI6ijANosB4lcXgMAlP6Kv+8O3t+9++DHrsd+L/uvvzLv/vL/+i/0+/fSH
iH4e9rP+m9+LT3+Q7GL0/nXyMfv80+v+7ac/fyEXP/zv6KcP0/nj2adhdttj77+P/5MVn16L2QV9
n/0+fFv0//h4+dv5q7vP/fXn+6g3zNL+n++z3q0Yffrz/a9/wfd/epNFn/6I8h/Z+yzB7z4X9K8/
bsinD4Dyvl+p+GHg6QnRhhe2tnEds5RUBAsUFMkkvrQD7Ec2sArii4TWxVX82c9ga6ds6IAafU1/
tKBq4+D1GsSLRhLZuzMP4OUCA1hRILabNfajvFyfASHRTvU7xz6JQHJ092I5b9EP8hzzGiA9dlju
nT8ulGQ2LvTfoMkkGN9gMSvHfVMRFuQM9YfZv5V/qGQrfMqotk8JtqCFzTSnbYp70/QarsYfpRIb
11ms18g2sLEOaWPVUmRCVYX7JMcz7UjaASImvL31V/0zOGKdG8pbcSZ4LZJ4Xtfq1VlfIzv1qFB4
QAukWfR087XIwfPfAnWF0mZz2Vg2EHdBICxqmiS2xNgjGIJ26gU6eQ1tujhkDKtC/bVbDMchyu32
XM1LdF3ZjS5wi/Ukequt7bMQa5A7Fzj4ZhttskFUzfinueqOVOvDCXwHQGN9FrpOwODR8AAh4ClJ
Qtu2VtWuC63VjrRemO9kubIVjxqFnew7NFFCmi2N4opUAKQruqPkS1nN5C2f0XCdTdTtch7uPuae
d3v5bDTF7dKLx7jmSf9kmF+vpBtNtI/jEooECQGOXPMqCYlkcHU4AtfXzzXI6+brQ1wdIzzCaLFo
sp77nMHx9UNYFW6sMhW8bdVo770vptPk0I1uO9GMwW031OxYPyqmQroqvgAdIibCsbyu3hyVAxXq
wLxPWtdizA6pq1kE39YR3IRXngv8+bbzEmzj6HIS9yt4VzDfRnZmLwTbDt9UiPjLYnYxTKeYGFtE
QGfn9uV7HlfcMvBrkLtuVHh4cVs2q8//5gW6NrYThpz9knyxn54M4Re+js8AYcIvjPfff5SevYAV
TvPLST4bk7NBMgRU+qJ3lfQ+X+Q39CwfvSiSDL59/oE0dgeKJ0lMzv4nn2Cj/Gj94cDtxSu5SnuW
ktZuHryCxJ49EhPYK8Kbjr/cy9PZBJ9Nc/zh+vORPeDkxfx6fwB3O4Hb5WPa4EJ2sP+Rta71K4XW
i5F3jADqUQQGNQWah3MDHvaOVhC4a5vy35+P50PzL1wDzfdwd86I8/zmkaA39b0+dPbu/mylUg8E
3JCtXPo92sKg7V5aMdamNfKaH1WXd7CG9IHORd2Z9O0AT38Pj67ZJhRKm/nUlxY7B5YNRjdjCAz2
1oMDlkEjyzxzmYNOsbFwsEhZAtefZm5IJu5Iz2QSSgU+YPVmAfBNmKQsf1PZ8DdeLYYDB46Ggh04
u3pNbyGV2Hyvnqg6CYyrjaEkuEapHsrBsaZekb0YMY/umYcq2et0eHkKy34KdgwHnZd0SQQLmNjr
lY4v7N5nrfvZbhl9jnZEdhJsJpE/woNznWVogwAvWv6IkrHwKgFkOel6sZBBFd1SwrJCRRuKKbzQ
gM9fNGBJyYNvytkIub6qShUE3FSqGgcl7c+uW1P3pJQnELZBejmfwDQc8+61u/ZJXNGshckpTdre
W/er4dtflO00Naw7ygQCWFtqxnWb8CHUv/8b96FQ6B+egNV7824AFvA2n6EXnST3jnHZiIsBgRF6
0iN0mn+Mr+Nz9wXwuj3uV/ZPrJcNv6yvXuC7v313fv7m+xM85HjV16CCgzNNQu2DMbe5WRB5QvXn
LqPRDeVRl/IB7Ef9eTDpDuNROsBmoX+KfLRSJMxqcm7tF6d4qgTC8VtEjO3oXpwsN2hZOkxlcEBF
IGDqlL5tQXppH398//NZMevBewUcz+v2GwW6WSm2G3Pr7afQ2mB1akCLlI6u4yz1ky5ig0gTZ3+x
u+Cu0te7pJzALm8/TVJepM+9VNHO3UtySHrEV3r0QI1wzkCNrKlGgg+g7ijPCB56zxFer6VqtEIq
HX7INpjWscH0udhg0yga0MDF6SdjwOOARftVqRdq6K5SftgJHLJyqTpJD2vMDNlboliS3Zgz5jdn
YGHkrjPHmpp/s2pPK6umBA9ZOLNZ1ldo0gFPpGak7NffPrz79ZfzzunNMEOrWfL1L/KxWJR512Du
uHbgc4Msvbyadi3lXncKFjufuRZobGS2ZAZ3H3qNn/lQfmR6s1wb1wWwulUasjV3xRIbY5vLCOxm
UPoTpmlU8xb99vHDXm8PQ9ZuSQ8qTcwEDUJrXkld6clxRIQwbK6g2uyyulJKZkt0DxdhsjoIkz0X
hMnqjcSqGc5dk7inxtSkEI+qqCksxQyyVcI+y7KT3mXqaGZOTk7dP+f7lrrs9I59ZgjK4MMDBpoX
9hu+m8KttY/e5pMzvqLHeaQlb7I8jks2H9/iwKE8u04KjLD6uUQlZR2lGxjYJR3q1ZxW4y/rT+9p
aMDenO0om8G9eBRZK6ncJCe2bp1fjuNimvhWmwctHni0bABpEQ+ygDG31USoZ47TUZaOkvJbgiID
w6jZ+JYu1j4Nke/w5J/xpXdouGiSgNvwGMyYPZdhyJ2XYYgGYYcH5ReARKbJcNxFfLYOqPkBtDAB
+gJcDNT6YAuR0M3J2LDkdpfux+bL1Sht5pTnJC6uukNwotNxlnQH8TDNbrsDOL1B3Kscf8iU2hna
33A1KO+QRtGjVqSnpLaj8pF5kXtcMHArCDNsZ+X81Bx0fJnXQf/8maB/GanG9rM3SeJp8iZLEGb8
ggm9MWgMcnKzCuwI7fAtPe6HhmtNYZUiHarCdLT3JjmIiE1Qdt3GW8U4gmBZ6GFmp8vFgm9drqJL
buIhqPuTHoYW37rPhWXD5dH+qsLEjrwY4edK4jisb6c1WaBVlQq6jenJTQUP1KYkFRu6qniD/WzA
Bk3ITnJh9/d9mExj79woGdWkX/k3kXFAiQxtmnTHrNkmzD+zRZsO52InsgqOY5EM016e+aeNOLQe
Mt5xF+urGnGllOP/3MDp3wzvLmiK3mW6QnqK3mNzdQhHmyT/4PXFo9sugntkyYONmMJLw4q5V9qw
Do/aKcR9dL0N1vFHYuswSDG9zZLiKkmQjQF0H+ALe/0ek2PAySL0kGG8qAPjxbOB8SyqodjY0s0Y
ZzNAUMWiCODGmj9d5UuUVNjxq1QJThvKWx+MxzQpUXV/hkuNw5L6t3YsdVkf7aYBw04fgCx050y5
w/zaT3utcTKw1FvvgFrn5t7d8AylAZOg/+0nfmKAAXAeaRHt+oEu3zLgvIGWlFVlrkzyQ/RoSzKi
B2ydd1Pby1cXfNugFdhiy/JnT560grUdl1+2DJ8qkBOVjB2wVZd1rLp8NsWftHHueWH1ka3/JL/0
8CFRzg++qeJuj+cXFpQv73zErOWLQTvMuWlSm15H8/eTUWpHRD+ek4/ABtVjTQ5Tdqu2q4XdYCMr
r+FRpkMV35HfPIqLXppW8hhqtV0CdGmICorFt6end1/5LXYI1XH/8KbNpy4uU0piwzgVLWWnqw9s
g46R6kihW3QCvHeGyprTlkMBfT9PMJyJkS2qZmHYv67CE3MVIhm1EGXz7wIVrvG8FZym6uA09Wwa
ZYVuuUDEYYaqaGdE2o08enUgNuUq/YSacunbo9fsyLxNCxDL83zyKiyDiGCyliEWPnM4KiweTKa9
q/md9y46Iboja9k/0T4yWc1Gzue51apmF9ujSO0PX8iatLIiYAJW18JCIgRu9WISGZmaNRaiXoSi
JBb3BigsA9fmh6rvHXnTSgaxn9rqCj10TNXXSZXo0CbXucao4+zbtdXCACVoE1FaBrg+jeLJ42hk
RWatHe7ldZzNkrMVSgc8btRkaTc87mDgO3Ct8qCtDjzIc9+BqQqklR4TIwGiyx5pmhPbxBDXAhJF
JQtjAFoBp7oOONXPJTXITS0SQRGyeFxGwW1h6EFfoTsgZVRvPp8IEqgzmuwIYpnKznFD20EAONVk
EKeo4kbdIrW5HF/VgyYdrnRA6+zYXC29qxd/RKImXWI9/IGwo2owISIsqrk69G209M/tqqUXgybh
FI12ho0kyBg/YDtm6tgx82xKXAwXNfFMwyCLT/E8BDgCHS1GOoQaIQPp32Qad0EULDkh9oDBSV51
7weJVY5UxG5aLg5JQfjzd3OV8KD+vFWqNN1k1zZU0oJTsZ3PPSuubNKhOxv34VextpmUKlMzIdjA
8N6LfVlhGRe3I+9MJkNVh0ci0Cq7Fqt1l83s9FiyiTtTQwujhkSptgoS9+E3dg/CEqXXR+z7I0rL
7QiPvimF0r0eHbFX38DGhGeLI/++s0ruiOp+3pvhLjnp58M4BW1n4I88jO7M4KAa0k6s6rH8neyo
Jkd+cAtdDAVuT/X8LoZ0/U9AUa3VT61wpsAXq71EXhjTbRqvmzKvWraX++mvSYdREziWB3K4SqlO
FfhMQkShbMIjNJW2+F3xdpEKampEK1WVXF0QMG622XN2ZqzrsOrG47Gj3bnIcM6mN1YqDOswxoIo
ssVjp06UANPWOw0NPhqXNVe/QavtYysvLLmQCqdXq/mxmQQsQPnTiLSsPgipSUHa5c7BwZKaWwEJ
/WR06zf7OLqTcE4D7U9sWfGPyomQQ3xHialxPL0quhHxF3bJZured6NG+aIvXMoaOtNeNncDQDXa
DV6u7AZtEg2vz5tcaf0cbTJSpBBmgqaMfVr7xkkjCOOKCLi0sBYkiHlYcyA397jm1JowyEJKTgLu
Y+rfx6DqqdE7vIfUfw+VDn0PqX/b1mzibiv0tlbHvOinRXwBu/7+IxWk/6cY1zpdO9ULZ6iIeg2a
9QCD6yzw5+2xguTgUzOLvtfXjts6bB+HqqEdmNi2VY4Rg61yoIAlCWX4Rg77LoUHqwtVKY4E5rtT
hiDHMqAyZBWgRuCF7RnjU6Z2alLhx6pFpVFwi/rwOHNlzANlG8smjmR4kfRt4GC+8khe6kWOHNlV
6BPUWYGrC1Wjsr/KrcX9W4tgvC6cLUK/aW0RqSSdenO6t4Pn6Iq5Nhtv1IAIJA3SUXg9+XAFVpQm
k1FTpbnZkX22AX3DKKS6Fn6ZohEchwZ2z+vBuMfVzYtJksW38N4ENX7aL2yoKbmGnXp2kcBjmwFy
4M59G+z2tH927J5gOMOyrB07gIDPLR/ccTwewwZ3N+im+yW5+JwiISI4zKNkWvTicXJcplVjsN53
XzPMr1MbJHHh2+NHinO9C9SfDYe3J8WXwVEk8KtO3YHsKpRnbx9vd/I0AtUX9ATL27WKkUWEeRJl
npQZKGe/j3J4szxoSHsgVRQuyFjMLiyGrKz45aZZdLcx4OF+/9Ow0IjHawiZ6jBt9oswpaSiJdA1
mmVrEBdz+bp9JzAU1SEDK9JvnNAIk6eoV+4nPgl2gUrGeyJBO6LrkbeHi0B5XR6h2oyl5tOrZGIb
/7wj6GRHMENF8BCY3+mKzGGApofq4skipqMoqoNJ9oeYNj/B9YiJS8J3FvrhmtEddq3QRnAkQBMH
pSTaU9uKCRkAUP550lF75WVYj7RcXzm3Wo5nzqdzCRMAPVsKP3nxD6UByrzL5rLebc9fvU656lDN
Dr4qajmwBXBDMfghBf7ARwofKYpPDT7i+MMEjn6ZiP0/e1fa2ziSZP+K9oOrt7DDMvPO3IXRmOkD
s4sFdjDGAPOVlmib3ZKoFimX3b9+I5LUYTFJpXi6thdoVPmoVl6RL46MeNHna7l2G4MasMz0DZmF
DASkiptIvC5aDVgUDW9RN4Plh/oW5DlZ1dkthMO1ZmaYhVH3whgP9Sg7WWRdSdRAqk+HAf76bZds
f3Xn3nBw0RiTw3pJZWaJPeRst9mk29xZc4f9MrQOvzkwOela6wEWB5gRBxB6fI8/7PS3DU1uGZjx
SBf5Eazr//tRyI8dgvSzprEtMuuUp10j0yC4ILEgryDLIMn4LSt+clsrvxR9QzJ9ME5ROn1GignZ
9KlNY0/CFRmhYuTjcE6Cyn5eD61Rg+TmWM0WFLRN9l84U77gA5nq+/kuqIuGC47hYfoHt937VMec
aaJ6dfFgB0Ah/1Lz9omAzigbxs/9+pzksU2NLf9ZWYqZuZmrDfqCPdmt+7qjoKg7CuyteSrTU2tY
VaiYUcJ7CWkW/XKqmfvLdB4t95NxesOEdnTyTzT72R5cNQ+KHbt0PwiG2VoR9g4r6/qeExz5LQDp
WLnryzFhKxwzWduZfGkEHEYbV6oZTZ3bUG2nxPClsXeSn8azqAYYNZhYlFFfD6FgcrjOt6tHiap/
h96tgWPp2WE5QiUqGF8XpJO1Xcn/kTPN/HoX9XbeDRmyNESvnnzLjvQNZSBO27cb9mNmi/z75DhR
hpsJr2bpdvRv6TnFZFHDtEZtMbLsTUkUN8tbTWjp20b72mNomoijfzz281Zeb+dysImU7hfR18/C
aUDtDaaGEkNFycyvgLbHZTdhFtZW9T+fy+qahRwGYkp+03DJfh4MLoUmXrn3coR76sUWLIe18Klq
sRvXelzZJl1ncZPLRbhkM79mHtSnHvysDuT7BRpSdwysovMwhcY2XdqvuYu8rDs22GV7+3KBMoSD
JDJKOxy/t0nHsdiRKdDQvMNwkyTsn6ZpDmxFCRPy3rVmfuwfX7Ssrr7KGYWl6dL0NnS9zMEV8+yJ
K70jOpiJdJkWCTP5/ZxXH3Pga/yQ/bZsJBxg1LOmzuNC4yFG60W6slVdL4BfuyxYxStE99omIZRg
0YZX2NXrWO0E9lM6/97N98yNGWh041BoYH9p2sy3LrtQmzZoEzfdqaSMfut4N6AZJEMq1XTSKc1V
stL3Q28NbPXw4gvWX3T33fGz/72oOT7jnvr83YXHTYrNKwwVZKQrXLgNKtTTiYSidKDBmRuvCBOk
b2Xobkvt2wdzqJ0VQ9105d5ZPwoz+cFqQ3uvBjJ+/X+HOvU2+H5icK0XD+krwOoz7Ky1gpJ1kifg
UB7ecmpoMXTo+WzUH3DJTjf5OFrpPGP77q2TN49gKHrCQ5Wdrdq6wWkNSBJupluuGUwhKbccqSnP
VpGJbaI/VNpbre3FMBJlFFN9x8WOzSUth+ueMbq+uQollmZ1KJmUdVc+lMNqDjd7rZhxMqHDrHg4
qs4SSn4kI2mA3GB/X5RL05MlvonXQZSDt/ywy+PgIV28OTPFKfY0pRMK22CKjbo9u+t0i29s5oho
Zf/c12z7aHMVrbq5Bv8+Wb7tO4ye55W3XYAlFXou4Oq0/v4XUfzsPOTPsUxtQvsCu4N9EzIwT7EK
LY8rehkJdPlAG6jdytAo1l0XYh1Q4VnYoHUWlJuCnR4w+6tGJapQeiZEDoVSpJ8HyodltHaT3xGs
Ux3JvClNfEm/ZbXrnAD83KlreyUa8MuCHMo3kqpn32izBVthm7+VdMKUYjf7Nbo2d/7dWG5vq6Sg
MwETG0q7kxqTnYZkusPRmvSJkYf40jxNf02cz2uCyBk1ZKRNLoGjzXvadQ7hKs6f00WTQxgi8x4N
ezSWrWMfPMMWgNSXR+CEahO2w2onl3zzkduu7w3bwBXYUmLCuJSQfGTZU1MGkocC/rDm+UDpPvHE
Fivl6cbtCHJPqqHBjHL68YzydzjU7Jghxci3+tZzrTnVM30CH+6VRNQ4M8IMg99NV4wSPcNuSh/S
e3dJevGzqveuhZBTvg6YbwMomrx3JcfNZyATZZk0GlbF00nxg56cDtvzTojegRjwE0wzMM/iDNby
8LaJQBhO4Nh13TUWwqs+FXiyfomWSU3Xe4wgTJrIxEcNXwjaZ6S83GCsy3X3iGFCtXvwviRY+duy
sQKWSUzhJFOmIw35PPOw3MUOgkEeDhgPC2tci7DPu7pKF8njW5DFy0dn/gSSi7M2L23XedLvyXnc
9WIM4/HD2EMXdoEhT5EIB7pVDYnRTKoZUV2DU0v44iWO1qAQtw0tJoXxbC913SJ3GajTYqXZc4zd
gVMMHGwj+G7rbj+HgWbRp5Tve/At3Mz1FKvR2mTqHEWq6B9dW+5IBAXppb1bN9kmWh8arB1MFCT0
qaS0ks837C+3t45OaoZbmssWR78CsIqKP4NiZsU3ZbV8DID2mOXbOFrtjYJ4u03d1Q4GPlyQcJgL
fhQAEMV4Q9yOj28/Xu/LVt93EDYciw4/notgaSX3SHwplhDSUY6L1rxFMcI/ppv6bhOrnikxmnwb
J9/gHLbKv7mgK76m21+x9ipdr/f8Mw02p2SYuRoOZF+7hQ57QUkxoKVZbsEq+jUOXp+31VgUDWW7
YPpF9biNV+mLW31ZL7FTgbj3gTeYQ5IIz2at7TGn2IR6LYEsmX7EBbItf/qF5shGgfbQQ5nC1W1w
89tIz55oLd2COfhBIC6YhWjRyb0TzHh2HGollTFYLI3iSLsWaHqCAU7EEZQGewWrwae3KavnMhNK
h50wqgha2VL5UiQx7IaiskX3ePnmdh1UO9eh3oRr6ARp26/LoaTvcbcuGmcevmgSRYYtenUrWTgh
Jki3+3BhTd6CpFdFtYvn4dOGj/lzsl1gDlX+dnw8XkavyKdV/5hNGEHyUDr8VavsuuPe4Wu2lgOZ
Hc52jdwUD+idtt5a8T8UP66uSmL3Nqa7DVGe6C5Plgmm6oDlaSti95t5t4jRmiwnUYENTGWnA88A
9uDnNC1mUC0WMt1S6etA66Qc3l3/bgaJ2pYy3fwAwJS2VnRfjlRR/x3t8udz7Y4/K+NPlh41WWB3
iH9kldTbAARB9JPKaDlV7muedTHsE/oq0OYOVR1XzUO8fTNj6AeaDQm5mBYPTOdUFkvys+/MVt/j
13ZgEWqwGxjnQZ6s4nSXN2txNmNG94tA6drG3MCww1f/WvpfhfhvRvBsT/bClWhB2xV6/JIVpWnH
4fY/wY4prqvPYLmsX4Ppe2zMcpdvd+eaRdCZIr29er4Xavu0jQV79rtKL5oZEei4T/asXrVtPlUd
ixtK3b7FTUxvdHgT6SC4YT99mi93OYx89/r6ihnARV1g+Unw6yII/yNI/B2pGG1wCkYPELN6D8L7
dvbgUO/3zD7H2xcu++hR2zWF9Ze3dwZ75cSL03rN734GMT23MGEOSvfgsa1TJ/oUKV/BA0hChNWF
v9fwAhIyyEvbcW+eYphRlMOmZBs4Iox2HiOkY5w1JxJbJupRYieNoRNO9Yj4p/VE+KdUb7whCGhH
a7ouB8OQdvwhl4QvWx6i4VXvHHOslRhSf9s33C8wi/M7i71OO1kO5ZZ+TcA2RRGCC2Uly3Kw2Z9k
WJZc20pAsz6Tgi+A59+iahoIcsJ1Nias2rOrddhF+OxABxGpvT3qECkD15arXi3whoKFECwywaZ1
OJQcOJ5aiHpp9rShRoAfgnh876CgYmTGJdHTBlC06pRKGOc/WsKtv2NM0ErQz+n2IVmAPoMv/vH3
/74HTHDLD8UndaaHwd1k9dRwUQgsXHD+kVx3MmiwNN9G66xMIse9cWgFztRMhB9rTxgd2ARJnDaI
QR9M8oFsEFpX/cVMpzK/52gTF+0QrTKu4SM2HZOH66/cbh09PhbW9cPbPoEMFkxqNBUjbayfE/Pm
t120jcEy/7JZP1XpnznSol4Vgb/mo7kgHa2H4qTeX4/CJgd76u7Ll1v4r2ZGn6xV6bLbi8lpKiaf
nC0ccs6OMiMn9ZuVpuGoN4DWmf9MT4VvirThPfB1aEvm2IZMgFAS23X2m7DdKoYbQIukfFoHhmqj
BtJQzK2hqGfylvJ2LgqGsDrnQpgWo509nwZ5vNoEiFoH+LKsZ36iG2BS3S6rvHZR4UWkpTxVdYAl
l/OaRHqCIXbuFelTHZCiOIrKNcUIPxfNj43qisdGjDbusjxdlRvd56nAlWDKc6bNaZrDzRIuLqdi
mLP0VH9cCXnNLl2PuwfWQkvW3LPTTGeS+6WyDnMdKPGqSFPdNGed4tSUgpcmO4BPE/DzuvAo1+FI
MutWdpJ4BdOaJrBZRjA+Jkmj/wnwu1zGT9HSzQtFPLPSahG+qOucR+u9EV3PQkVtWlrfy6tdHAfP
ml3IG/o4COCImYlQUTOdYdCkgZTW7KOoykZNaQzr7T6fSx7WMLvbjFIsJ/4ICrpRP7NOtt2JMGMi
Q0FBVx9EF9K3rbnn5d/3x2pqVEPx8VqE3fENe8eVbLQAdfiKehntlAHE66xNYH9LVoxi2SgmmTvp
lwHkkd6k3T1y4C49kLwltPuaC++7qAb41ridwyV0VgBgspKgfZy6JR4+ypglsMYtydxJUkg87Hvv
i66y16W0OCo+hBaqy1KrHZ+CjQ30wB4/WbRxJHRL1s2yt1mn2ASpwIssWODYDZkJ2BST9qdxrhez
alwL3TDZl7Na8Frmr3llECxx70OR9LFkDMaQnkzyPWtiEFvCdpjYyvK21WQuIImDF496g9DNYeHL
AsuiR7hTFtECWH7ygjcc9uoZ8zCf7DwSm6jymMA/c3enIILPRD+65Qxl3PRiElNBhwNYPx55og32
AGRDAk6llsnMdEh6NuNPSTv3uXvi9e13uIjPn85YPOGbfeJfpaJIEyzt0UNfCvdTGue2P8qg8HBd
ve61bNxEEdLlBp3288VCnWWaZvEa5nuxY6mSoRXkwVVKTxtYywQect3LbTxp91rZ1vlztH7y2VWJ
RNNMfBMi2VRBTsNBpLJoZOIURxHastXhUK4O1Ojn20oL7JmgQvFexKqupXCxFfUPZ1T78tN2wVX3
AxB28lXD4NJmm7zYAMI2/Zrhb+pFQtNwBJV/kSmYaFsDRkdQwDdsvkheblh80MAONm32+Yb98C9B
4FDEIaUfD3quoUBVRHxIhXQVuSW5LuY62QIa8J+EehjgQZ8CvnM7OTxUCHuD4E7R6titeZgnP14/
NkTDTAidcSYHBryLhG5E48MB79UCQKqp9VP+7GmbMuRP4CMgbqO740MhekPlDWWv9LH4AqblSECV
JKTD3qeaVEN5sTZ9CjC6hsiKavMhNcIlHiklwm9i3+uVAKUhGQwCGhwBZJNUZqK773/xA7jwv+3S
SuYA4ZiNanTfKL6NN3GECYdlGc5pUVlt7aIinrx5HaCnJodMIH3BcPJznRtBJZncmePUJ3wrzmgc
k2xeydbNlunX6mMI0xJ7uYTEcEOGwJ4i1790lOZPSYWADWnJr8vLmkpr4+WtXFwyk4RIPpjMNhh+
SJcXmmHu6TJdu5upo5XXJvfFyuQCFhqkLwc+9j2LaEk2Wg9KClSLbLNWO2y8ekBCNHsNbHpRusuX
yUucBU9zW6WIPA527MS9avtswVmnlB9M9y4Ic58BhIMD+bWTTBRf/dk1d+L0feDIqv39brvcp9dY
+/k5zfKz9JoTnMqye1sT+p4Yu2wFrXmX3f+hnh8Y7F/YWzNBEA9u7w0VjP7/H93++FxJWdOAiox3
SiZ4eSpvrC0jnkfzZ1uXv0rzMjfarbY1BgTawhP2WYDPf02y/F29GZJlCkyu7MffPy7r3XpgyY5k
PKoGMsXWKVqiAIJ59ADWAdxPjDa4K8OE7SqhWyPA5kAP56b+ZTMuWKdPx+wum2SCKYXuOJGEQa4T
jSLb5MycKqrYd2vMJVsU4yZrMDIWqGPWxzk4GPfAUDNtQlUn6wREz9wMECj6jA0EowdpKfDUNnS/
Cc3t1R7QJ/u/Fh9Q9TxmklEvL0i3l3d3np2aca8Gg9p1MkiJAijx3rxG2NASqQS8sj90ayBsrA9R
1Mw4l21X9ppvo3le5HyUudjBMlo/7WwB4FOUrLO8SAZxyLuGzzRetvH1Y6+iJd40d/12CP70pSpH
3dddIG0CAZUZU5BB6ZWI2GKvdss82SxdyUlKIUvdQDfO7lJDbhL34tC6er2uZUoz06LtLXiMXhIY
BDz1esuDo7POzUAi55Nws8+2ATeVnl9E5KRUXsmdujGUUO7EF/ij6iKFMxPyoYdQurchgpf1Ilhl
dSMJRnuEbQyJ2DjQwhJiuHvi2K4ifNDLSOuyoBnTAy632muJMj3rpuudFnVlZIdVHTJQzOFEIwse
doShgoPWjmmHhwGTLHpY1pBQGj1Twow+Jg/50DsczJPtfOlq5EUvJ1/0MTJ19RArkq5bbjf2UnqM
5uhSHNR2kMU2u9aG8eduAxbpnrnQk6sfiupHOdSPlBeCvHqw+LIIVfvz2K4s42iA1YebZQ1yKw67
z4a1otwvJgo0Br/ucjudWtdCq2YUA2uRUNppN/No+xTnxwDwMnG32OIFqUD3pZXtN4ILLb0Mx2h+
WxOpWE0pm4vdtkgjiWranoDpq8LJ7yqzd9X+QjlsRmz6YHqwGcv9d4qvnomB7B3ncPhiwnWnI17E
jxHgchCvAXWSx8cYK9kajDpmwP+W8prDPr+alXFrywUxlE5oG7TzNeSauSi0ZJa2pa8NthVPDXur
kGlJdvcHrtthpoe8u11eKF2NiZkUrOcblqzreFkE6CO/N0nXiey5fBcHlz5ZZ8kixgj1suZG04tB
T92iWh3mEZR82L/ddQ3uGAlGvyI94VzBcbznZYBJBo+7ZUn76dRrCju+dhkcLYIA4y2/nlJBu/Ec
+xVz0tHwBvzG2rPS3zgz+Moibfu8OU936/wurDBHKgyoqbFmUexHhaIcp6GlGHsW/3Gki86cc5Ja
9SWJLUjkL4rvp3iNt/3kxyWt9x35dErbxX66It+S/XB7+N/gmw389Z+PALJv6Q75v2Ikrs+fkwz+
WsEGg/r7E3y5TuGP/4peovs9U1gx5Gf8ZbRe4J9IYrFbbRCwH+2H4EcVE4YvHuJl+vVPxc/Xh1/j
7sBff/vz/f1PP37ByW0cVDbSwobsAt4XydNTJPy0p1dSpzvaE+LrfNjCDPcnoo5e4gbq9g7YFyBd
Qxt15D33071zPUTYbFTTKdj0Ahowtb6ZLfY+ySWzKSvOgJ4gBgyxq6zONfhFYKo/n3FaFo/f6A6o
ofRXSVBRECY4VRgxHcOTh8WtNryyOOxTpeVEwQlNBR9OONy7qS35eHuPBNN/kcXll82TM51QEvKh
NExVwD7Z/73yL0sFdLzToHNKdXT4vvywe5sI/cdSSZwaOFujyKgq6VqVcBFOqFQzpdlHVWkX52+p
DA0bT6v1O32C1S2EGEkGUijOCC0WxnolcI4GSz5g80dCF8aRdV8w+ZHRxd2pgM30lakM4+FJHYJQ
Hn5MBHEXpYSWRkebfm7wCV79JXkSNvHR/TKO72qkxU5dqsvJNuDUl0HWh3TxVk/pGdKLnZ2Gwqz6
bfpkU0Xj/A5/7oSp23/e32hyf3/7Howq+UczIZQX5a1pd6xB/jWZF7xZ8XoOYBkQ+ZDkwW6d4Hdu
ihiJLXobt9y0LyG0DPjHk3dTRl1q/GLaeSQ+Y2Mi5BVDXyFt4Ao5TgAfrHykaReGVFBxWahA10sW
er0dmm631u1fMc9c0r4k2h2KNZjW02EWX+OHp+U+0XQbR2dJp2XrsvKZ6BhzrAnTS/tAPoxYXQ9i
7i30AzUfCVQGTZkLgXBzuYXYQ7nP7zbYEWcCbU5nRplJISvUfCrIUpQNd9/cdoH07FHX7Xq5bxM2
uxW6N+ECV21bK1Vam2FxNH7dpPD1/i3DZQIZgx2QPgx6XAALGt5o83TADCy8wyecSyoLAYP3LsXR
YmFre+IseIjmv9qv3TYP86RRaSnQZbu1s4aybvk2akT5FoOgVqOMuyBMexW+mzGJOvlEU3JOCNls
Jetk0CTrBUhD/ALjwEEtY7AD6pNLNNMY8BzKEj7ey/N+ROynl2j7bw/p0y67YT/e3ogfbm/YXyyW
3FAd3lCDjbSbsERhC1Wi+4btkssby9zKdDe8Xc7nJ+zQJ+mQYLZIdxgps8mRdXjWSkH7XnD3bjRw
udukaNLVJHyOMBXgRJDdXPrIqa3HXrzjiQtOgRis85n8GsG4V18jKYxXk6lrEMeGxGrwxq9kuvWd
WeNjea1Fy30ZzbqBRklBtKdd+JosF/No606UDbERwQeA4DBsAcEiFGbEG1izr42AhBzxZEiJQ5ad
iyjtVZ068DbVQJfoZnG0gW3KR7qCzqR7tLyl7g3y6pq9KIMtlPgH0Aqqxc1WhPcfsN6fVi0+2564
4fhXpQlA0NLko0+p5rJqRuXUMYLKKbZ+wr29fb4JSZMokhDTMRTtwdDfARpuk9+t27bvmeSy6432
5Pi8WvZf0uWupqzAhrJ1i1Wu4kUSFX+WDFPFNyXbVJIF2MyvmdeUhcqALf1eRf353X79tSCZ7yL3
Jx3Rj18eWqA7hzs/GXDZVTiurpKE934oh6LHKM+j+bPbu6TE9pqd/q6fSu3ZTV+k8x3GNb58hY+I
/xX8D/wV/PU+DnhoQAy/KZraYfmHTdqov/gEidhCIjpf/KOwnb4wFCVUNVxojAlURKa7jVAQ6Gy2
aZ66KZa5tRH6BhtLQZm4y2h5UVXU19peouUu/p9Hd0YDCnHIelSezSBC3uW9kpmlljojZyEjjV9U
Us2o4OFo66fV9RumpsaQd8LYwVa4oTJabcB2naebtwsmLCgKcK3PG0PRkfbenj1B+aejnT2rnr0+
q2lgIw1fLp9qrkdbPncsX70/fT7S8PvTp6T/B9v4FaaWZWgjPaYYj6ypOcYNGA93hWPz+fvNFyMN
v5c9Qca7etIFu+9jTnKk4cvlGzae0lGO1Z/dPDXS8IUzMzPh9DrPfU8/lf+k+uuaROjv/nl//93n
Sq7ATGjqE7UXoa9pXFaGO804xfRM+8Tszoe7sEll5TOW48O37iIvrWZcqc4rdUnTfs23i2RLzkSr
KtMk/F/2rr25cRvJfxXtVml8mQnHxJPgbLmmMpnMXmrnktQmub26f65oibKVUKSih8feT3/dAGVL
IvgQCVLaq8tDL1sG0OhudDe6f90kSaSUArnNnKUaSBEYYBLrolfvGS/dmmcnEXHtUJUg/w1LAdO0
eBS2IcCJs6C1+xAKMQQ5aC05KK/uO1vKCi9D77ihnAEIMoDvD7PiSbSZlO29DFut1aFKtWmLVy8N
wr7VDcIwpjCHp0d0DuZ5jMH8JNevD3fm0/3SkT953qs/6I3n4VvTt8aPxuw2j5mbRjYKPmhTl3Jt
hjzeWMFGQopQdtcpOWYFeFi1CR8CO7Zxv2dNboVxElSiR+DyzEqz7bokiKskrDPoKJ6YxrVdb7LF
C3iJTUQZHwXVvZiHFw9WEI8jw4Ic8mmZcKBYmC/4TRlbIxwHAT2FIE1UldltvG2zf1pybJNgxwZ/
/vOZppLrUEIV7UHay5ItBAvAGJY9y3pZZX6jHjdOZZA5pm7Zva7QCFvMyerwGqLR8mArhXKpO3e5
m7/+/XNJbiRoUCEvS6vtRxCL5zi2mpsNdXzTEG8Km9yRV5HJ+/jdD99/99EDVpvfpd4ujdq7L8lg
ltgMOOh6rtUMbK6lfrefrIEYsZA5VyopajLMYd7Y41kKQeZ6onW23tjRrgPdBqg/WiMUZRWtCQ90
J/I+nC5bKEV36bJ5vkcpGeb3hptHfn4qn/bHAWmJA8axXxsNzq0Hj+TjhDiSvmo9eOs913n9fF2E
08N7doRX7JXtU51PW8X6QmCNhHs9U5keire+od8Tk2FHrN+ih8jMxt4jBlOgSEfS6yZYP5U1kG3Y
T62xIWG3/yiYYyzoh5ApmC2bKJ1Gq+lPFTZTQAhs6NndskOGK8R4x75vca4K/U1GQqpQ9ieTFppW
imeIePrdmxTkdMK2jaTYtxE2EP8UDYVzNQBLTCvb03EG5i9tcd4YkM9FNE+QyEBIL0eWt6diaDiQ
wQ54+/kehifF9tq34XMoVsUNdIMjU+gJSPkRPHTPto/N9MG+822E4EjabFxpRwHWmHGcj+TAvGnL
X6Gqn2NkGW3uK42+I/1m5jfc+nOjl/mcDLoHljySQMkCKdiA09jFz3wZDkoKbmPHoKUcmjse7KBm
K4xSbMSpX6AyH3CFOyoTf1gqW5JHAtmjrbMT/BrX268rz24wi7tVHOP1LhYCx6sV9gTeYVcWotVc
g4OB5Vw8bsSAO7DztdWwTGBJoQmOMojMrw03jZ0C5qSFAn5phXzUPsfAsVI4WsOWiqSmEyP1hz2z
g/rz4kSzEpZiWtBZRISCd3lUcmgmMdwic76Q5w8K1XsxEqYpgrDTkeXdxrNsFW91hwBvOo+S7M5b
YKoANoCJUpg/zMvbzbUc80IIMeJBT1FcnWI/yZJScy7wzx1HVW3E4siGz7fEIAXt7Ys9hgZjHsXq
zxS6Ja1u/mvYX7dyqisplFqFhz2aEznjVZsTkiKk0bAcSG2GFevMgjU9pgIYKKBFpqNDLlezncKc
PTEszW3e01EDyKhv9ymy+k9qpNokA3SZgy0n/6jKMOrby4msbg4Qgwn3pyKIRquTUfoMDig+7O4I
203f0ZVL1Lf7EVn9D1W8c3RmKKzi0p51kjSDB3O5dovjo+hJtxYdLYRjMOqobz8rsjpaCJeu2mz5
w93+yKvsd/S4S90HBUcgHXaHrfURpEjzYMiJ7LSg8vuzjIykVWeTBM166VUp4rxpH3pMVuMf+84z
2TSP4wi03KG31shcxZQPyVXYU17ROo5W9oLzgLa88Dq+GZ6n0erJe/QwFxLTy+epHXRABUL3T+6N
/cxaq9lP6Ry3XhyTykwDSanOT+7E+LME1hanaGuwJH6IEy+FHcC3RvkjGCW+21GrLKEMW3d2dgpg
5BcIE5R7YwJlm/u4qr6Bcj4Skrvh9hyw/x87XIcosUMryBHlLqMBVMi3wPeFlglSe54dj7RpnERP
30aT+3j6GY/xw1PNXFIG1G+Vk3cwkA5W//zHNlrFlrbuuFGMdhXXeZpmEwTCfJhPNvOFHXAHm9dc
hraulGHCBcYiuaOAllGVVRktlCKSmHJQ9mesJPjUIIOXoGCIEGM3DkMnh0us1MwUoSNoSHvRzVa2
Q9pSpy6YofIzhR8tvYTb6V4b+xjFW3ahzTTKYPfTfYJ6aAfxm+PdljtUhIbgX6jLML3sla3Yf1J1
TrnLz2Pw9ZeR7pVdmljAR32kM1XeAWBSIXeUOXsXb37+z79+zGF/qmDT/FAnT3e4BjpjdtEQiUVt
Kyr31rZYghaFo9qGta3wqZ9dz27LWmNLLC9kPa9Lnr/WrubOTQScNlHr5CQhX0ez2N6/iWD3JNpt
wP29jhNYm84pB/YG6kTw7kE72qZKyp7BQrQrX7Uz5JSdsa78/R95NeL1L/fz9Rv4L3qDP32TJ1UX
89kNjFgvm8HsmyFq75u60IE1pMOYfbCUkrPqJlsnzgwG3PU0SzONf7suNldmDPEF3TAnLh2YM9Fq
SDu5ucNZCrAmEIKrUS4LaWjWLUHxbzxjCB32KLdAdnojAlY06zx8C7sL8xfbbLU9kgxU10B/NhLz
Eff7UXfc3pYGS0NobxLG93JiDa7ufHH3AmCYWyHPyzVWyCzLDPp6sc4fRYCfTh74i8fRa58APwtX
f4o3QedqIpU5nwB9vCiZR3bQQY5QgDTohU2sMhByDajaUQQaxStgbe7XBdTcmRmli2Qc/q9BIWm3
yJdCpXfmoAHu/vTN95/fYXvU5TJOp9/ez5Ppv30F79/o5qiL7CF+/ox+9ZdnbFDd0ArGiFf//st/
fL4x9WjYW1XnyN1czTJU5vH87n7z7jZLpn+ZZEm2egeLvwJx+hTNk+1q12AVbO5GE8i7r8JYf7m+
PuJ9wckoYF0UVpcEzyBwPHKaPQ9uHZIAhxJ3ylIbzLu6ndXEYI/bdWJj66FoNGDBu+A8FGc8uAPR
Rm0/LxolqJD3SRoWsZ6mK/QJfdBv0u4nMHAKReDIGAFpW63m9saMIcHyKeXIJZmnD3CuTHcXfZP7
KC0pbkSzp6XtXTB7Go9K0Okl1CGnYnvxJ0u8UKqGacNdBmLAqN5IEH+QcRAmxK1uqu3DWtN6FZ4E
q+m9SvG6lLNhtrwZkoqLgXjfe84JRr6YcuQOvhgpRgWul9HEjnktBN7HiaE2LBiGjmwgGeUDEQ49
EqemrGELk7BqvWVSAhyFoPfVyVHYMM+l68HPypCg3AZBqriftdCLfTZU5E6PTHZceGNkBAxW6cjc
WcSb+2zaLLxFiMQevcEwNkEbe7iVHpCkdxaypwOBgVWD+HM06pGFT0MwsQMykKQJMsg5g03Nh9n3
YKAFBWwQgel/nJxwgrEBzrBhxsktAdLRErBGZmaYz7NdJbZAiUD5545U+ByUtu67FD/Cj1ENrfXl
hb0pJugNLs/gBmlnh03Mc8DMs8yfA5q/D/P3fv7M8+/F+c9J/pz/HSkOv7/7fary55l5Fvl7wfaf
qaT+4e/R8HCeu89Pn28x+TMISEgHMA6klEMYf9x+H01rE/fqxWkdp9MXttYAp+8Xm5touUzmJt92
TD+9+GMF92sUOHAiJvfb9HfTTukOYc9M6y4EQYsnm3j6OU7v7IBUMLDSAJoDEGG1Xo/ph0fLTeRI
Bj1twyZ+3MDQJjC3iNL5DCHCC+MHnWNjzdhgnaWFCtyRbKnimi6+ABk5Cojql9zrdSHXahS0vJls
OmipjHE4ngM5xP5Gm2xhZ3EGB1nIBlo/DFvAnQMSiMGGp8XhpaCDDc8sw8t+Zew3O+eJkfT71WzJ
/CEu5XreL82XSVTI7ecMaN0vp8WTRbmgE5ce2e5Y3ayidD0rXCOaQApWZAaXEKq/Ghvj0ZiMz49g
Nm59MTWPRD8q/RjoR/7yOzHXn1D9GOpPzGuhX0feeKumMXw5iPDHYubP4BNCovFWBnQCj4Ldwudk
dntVeU1AKEhkIEU4gOkn7JUuzEk0YpJk69grz/3jcLzTIHTjO6VYunUfwVDRbaJDX8uNLhdolu8V
UKwd6BrCaePn2hZjUmWrsqfALHKbL9guo7WMo17964ug4MegAx3V5Z40eOWNexBzRnS1tyfZar1L
ksDjYa+B7c1mtY0tXQdJD6nHRe7w1tsVeGEYYV1G89Jm7txFukGWpnk+sumWhLXM1kAK2n+UdK5l
ZKupZ+opD2rpC+WUliYfAjEUfEJVi5u5IszKLNum08PkGFPFzkeKuIzEzdPZPJ1vsHAzW9orDJ3G
gBuMJ4cdj1IZDjqgcHp522A8Muz6OKODjkckGZag8hIPbZtaflWa8PJRMTiIP34k31XnuwQKnA7K
yLAbqpzmazSQECGHHU/SgSVyWAHhamCN4w97JPJQ/Z8eT0g2gCFpL9oJERq/pQl1lL9pFuxNViUt
lfCKhjvIfJtk2e9ze/YZ4SHBkouTxjDV0KX7dxdvvHWMgDI4LGYwv9ft4G5IIZM5DPseujgkJ+z/
LzSHusgUYN2xE3Plu+4xwf9OzZ1zxdM4OJXKUf3SKr7bJthI8cRQEzZBaVOhsK+lVrFBDEDHEpTV
JEuSObZzsmNiMAGnQE/hxGiy2UYJzGCxiOwV/QEc6bxrZE2Ji7CaC6s9spKvX7++9r/2r19//fra
szZAPQ4+cA213MSEpPUsuY7S6W32+IyoZM1WY7zQM6DRgMcH1ypb74qWNGocvPyngdAypZ+L23g6
LUmw9LE/O+cdVm1FijlefzW4LhO6Cq4T5csYZRIlyS0Mba9qZAzUAHe050/p5H6VYRdZhBJZ2MF1
fY3SViVCtGkcs3Tfyzrp1tSR0aalNbM8iFe3WlPwuhu0tO258wXrsSkQOzwLoWUNKCMdSEcesr5z
GBSjPxASnqjgPBzdrNlfG62B54rnE3uVGqjMRk0aaBOg1zILwluWtACkJNCX1+6V1jP2HzDcfnEO
ZlxaDw9GGl5lV1NCX6RriFPv8d5+RAR4Gxr2eFba+w4QAVYPablAjWJr7h3gIMSC8IoiRIlwmuJC
FMc+9z/3oP/6QINQ//HmirzKW8yTqxNUCjwwUqNXiBoJJYl0YpjoXGIqYGz/7TI9RkYMgz7ND0NK
ai9XkCNsTnNBW06rtrxuh5ERDjaZ1m2yj+hyQrg/PLCrLjiih9ZwqSXOpISJ0H44YBalk6eqaBmT
bMSEIyM0v9aGx/gxR9S1l5KTEVE9mEdp1uTgDgPmTKfCiBVqlRKyh1Ls1gStWWtuhRLynNI4uAUc
0m5n1+Q+BvNR2/vRZBLbux4HTIEa4+daI2wx726LlSzXMiKeSmB58qCXBespeLtYtCWRT41IyHyn
ysI000PVbjU3JTbgkedjYb8TC+uUEyvb8nAkpDzXLjarKKnm2qpGa4ZN/WcdP/jGqZp6gaEsm+L5
e2TUjPWdQYMQYUAQilCeTxQ6eiLzdLndmLK2bLvRKdne3URTCd6bG7YSKGlCBBb1Ufd6Jy/7tcso
DZpWR7cwzHYXjJgPiM43cpYVf1cgcrdb19OoBg/bC5V4+Qwjs81ajpXvuPblT95rP2AjGYRO91q3
OjwMKdRhfmBmrWwdZ5mvjQ2MsclptInsXB3QkQjVReipMnZ8dsbA5UYsQ9RY7Ntb7Xh3jugVCAIq
zvcF7Xvv7eDD2KWgB5/k5UrS1GjY7yQx95b6rF9dg2xfBdnP0NiirCPP56gpmve922gde/ereGY3
7iimhvVO8yKtKe1j2ILh9d68vvnH3zC0eKR3C/ezYLT43X2Jk3eB6DC6VOdkfV+yM3BBKIPLY4Kw
phiu351Qp90eOdqIICAXthEsGAU+cX8QmdsWq6XnK7A2lUPlWwL5A+YVYWdkMSoJ7XgTXEncytt+
rCpRxDWR37/gqG+KtfOa5oJclqFXsAWs9hwZk2qnFDMYlB+0JOiRSQ6iuNReQ7yy2uQhJw3RnRpI
pe5f9AgkTCOkxAZ+/PbRJpegk5noyTLbpZfW9PXjFFHSHV9AFgLItiw1JYKGyI5NSL5OvB2w80sX
jEfrfSvzXaUFJd5WuzSWkddFNHoOqr8Fods3nnn55iZa3cWbAhYUZlMrdRnao4xfjy5nEez+qhTW
eezTitnBh29/W18ZR7OiNDME5gxdZcwdcObuF340SNyPtpQxAmzSr07AsAFqRWo3FgTGaC6JJw7n
+xI3MNGC169f43YWAgfPjRHw6+++zk+dr66v8TpXg71XskGIQRrK/UF2gtl3Ihxxxs91lwmekzrn
9SIl8pzD+748H+X7sKKbjh2SM5I99MUA7lrRNSaw32dLGgjp+Yb2L1HRMxeKHn7hTx7800zdE938
GB24MzJ/6J+F+RU/2yGjguBsvE+YewvPZtJJDEwMY0fYQ+8IgnO2wyxQfk/els3JIlL3FD0XN4cO
WeooglDt1ZpUFrd0Lp9Ake7otRBycc4thuEvbU5B6D7a8gK/g2WBC3s+m8R8TE4u8cAv8/SLhzql
hXSnkQBVznsTPKtKV3Be+/3Km03MQMewRqWtrP1Rkm0R3kx3zbQHDJuCGVXMwYsfInvphcSKdCY6
/PnDWD4OVNJ0CrsjVRs+zYdg9qCyLkw9eSkLUDuRecx3xbzJd2iZRE8lpRa8ttSCDSzgx9xkF/I2
fdpMNK+BZU/VSDIpglPoUmoV3Ebr+UTbAnsvzfkwn95wIhixVSiexmhuRw8bIUi11xhaXZUgTHDG
0QA9ffyqAw8+nSXYlhGbQtuv4ghI3kUJwgGRTopp14rA+zGV0WI5Zh8m2fIJnmoj3KD6pCI1OLEv
BPrxp1++//GHn0+oUdnbHounyzFBzY1AnDqwUqJXWQBbrPzkxA7cjbBrTpCF51asQJNllq7jX//+
2Z4QhcnTjFySTBwQyyITHU6FuiNBjkTAleyXF7CpR/m9KyLvdFeM9c7KEflKv4+VIcBXuwu4/HxJ
kuzLEcqKTsNnYtSsf3jX6b/4WsG1ZRJBo5oRd5OAP26bBaU9zMJDlNW224kqcPO4KcLXkZrOlkMr
gQMpOfG213dy2yupz1rsn6PGXs1QStqroVWcwCQfsKfxfWyvE0W4kGapGKeQAIVG16fCDLJoakXG
DZp2jm9yJK4RNm4ap/N4+nwcaiAAj9prKCUeyPySpMG2Wfsy8QYkYsw+7knDmH3j7lgk4CkR341p
VtlHr1+WX2MBDqpr8ynMbPVkv2GXiDpxSQxQOnWbZszt/0X0dBu/mWKt8Crbrt/oL71Z64KJWv3n
C8SHGmpDrJGYADOjeN9KoKQPp9IpeJfIAaXbftihvm6HEQCMsJ5jAFtc8WKegvaflsDLcBVqbdvf
Nlt3GFgbhm1b/ZBgHN/7bW1ae0ULW80rVSoUGmBdhkpclDaxbYvrCNz7kgv25+v72yS6L0QgND6Z
IAMyJS1BwgED/oL3jPYUNWUtd00SqYZUJfbMOCVqARvPumvM8a7VbVYuiTbfhgjSq5SVFpwEsrOq
n8azaJtsdEwC02d1ifc0Wt/fZtFqakdoBpOeXNJ53kPA96rJjQcNGp21/PR939yv4tjbzBfx+qXW
A7i+Fj6bIcBco7s9Xo3MuwTL9pArLEDADOweXzWye3gNF26iCRaV50By1oMkRMyrmi53fCDGa75B
x4gRVOC/TXEjFKbMNWu+3obNVtE8QaojhBfss/38xrriRv0ReEO3VdNdm9+WXDm1h/5RmiHoaCSq
ajq+D8ZO1o3Yz84sr93Ps+39yBEsJ+G6Kky4FmrrlUnYNNvCAXfb7RwmR7RRg6OmPGeWDbqgdNVS
Ct0d6xI5j50GHIE/9yOTB3wyG15fe17tOQtHjCBhOAyL2Lto+wxr+LrLQzb5rMsjP5U2juOIY6Fa
yENNPssqXmQP1iEVxgwQy8qhABys0ytDUGEMj3N6+sBuIuKXKX7cDkh/fQ3/u9LvdCSZYAMpXWGH
a8GQIOm09Qfd8uazJ2+apXahYk2bvFTwWZJ9WYBef7421Fe3Vq4W4B21OU+sSzse157zIGFEepHs
LE6wYx5vyOt/kX8dm1xU4QXBqW5ba5H0fqU+VXZWorpxqYOTzhTjTrNFZNAl7GUTmNIeXiTn7hGp
YG+PYzpW/jhSrjSyPxKMUtnda38hxRLvt5AeFrcdVBQBreEPw27lqTndrW7jdnv5W+2J2++hQ2S1
mlvXc7HaaRb39WvUPe6sAYnxZklc80JZcIrVgJb3vwmHMh1FkSE1/sL+6+X+a4ddLzBgzKWDmNme
rOtYnbnHxsZZ/z3+9O1qPjm+W1DgSTXrbt5kpx/uvCidLyJ7IqbSAs7OsUgBqzyToB/RJGeyhzvs
eLBI0vW7R5D735/j0l++fHn7hb3NVnfX4OGG1/qneeQ5577JfDVJYvj+6ob4Pjxf5z82w8AH0QY4
8na7iX8AZ+tG/4l3CBYHP3qIEiAizOHDC1TPmH3zUujj38Z38/TGX8PLOJ3ewD7hy9k8SW5mqzj+
Z/wy4nW0c9VhPaCVjNX9EYzuG/Jqul0svzON7j88/RwnYKpmq5t8kscJWVQgMo0zlQNEr1Y7mKPP
uDiLwFGpzseLNp030dsX44vdVcl/fZ6nf9M8c3OlS8E28ePmGr/x9a772ZX5yrNWM2/0X7LAgArF
fXIWcvuCN/FrRT3R95HJdsi3GuUKXiVTD7gfWySU4J6DkicjHtLTp1Jr39iHM7kfblaO9VagATCY
cvu0hEV6t/M7YXcXwhFrZLaKljs9/uiPw0/jjwTtbXj94Tv9SPWj2Pv8G/3oFy6xMZQdVkug6EkC
K+hoRWu7Gt/ysZhdfXV0/wxWBvhPN/jlA6VbiB2CE8lYo7LBM26HYo0KuFvxaZKBUW1y8qyXDQKO
ndpsVHHkYdXeFpdPwjP5mdZ2ngGCwlF10ZsliVCyr81a/zZfl6HlMca6q84H9OKT+XoTpzDq3aQk
NhjqcN1lKIhnmpQoCDWrUBDr+/ls8z/wF2q1BOXEoQxik1yw90zbuZUusy5pfod2WKOr7NNY/j42
mJOW/ATsYxFQJR1K/PEGW5J9wQP5X+6u9bdxI8n/K/ziWdwAdPr9CGAsZjOey+4lSJCZYD8uKIm2
lZFJnUSN7fz119WUZT2aUpNsPi5AYnvsGVd1VXV1dXXVr7jsVsDuAgmiPDtBfbbOFl/B5b2INIQU
CbPExnunWi6Hl5MSMrW0khsSZpal+cPSfPonXLNe8g0UHKVwWSoe5nCDekzX6+TeXs+ymfmY5ebD
v8wl7PNr0F3S/S/7T9Ks/AQfzYrNp18/fP58+/EaSC4d+WITORsbo+0jr/QZRhUZCTpdMaGYec6R
aGHKFX392g67Decr/kxXebxIs/vi4ahpqxxbz4UeoT3TS/ZM/yr2zJXXQNZL9lysEpBe8pgWFTjE
WMHQRt7xCeisJFBceRbK8xB5fmniG8TwCM2aXTJr9lcxa400a6DvnTC3FZift3/+NV/Mpy8Hj99Z
ut5MH1xzvDiOlOatN9VdMl+ksxIHw/m2wsoC/3C++jwGxyK/n2dOCBCJR8AE0v0yQU6ZIOKo4XWS
zGBi1hCsaIwGl4cJynu2DOqyDIEGZ0Ix0S8PzGUSR86iJ+t0sSL61omDCc8ppBec9NsA9mmSTdOF
ddmTvGIwJ2LcsyFUeK59j4Ei3/LgHvkqTaxNW1Mu6W0yS9EutJxMV5Egh3HZPOByD38AQ+9LVtzj
QoXnBPrz1M11PN61IO/SHm6YMrg+1aN4IdAE4m9TYhzRZgyNoF5jJi+u8sNi8du24fTH6lUSTn3R
fny1ignHbgMyRit56xpCuz8gAl7CiMWyhQm+ve00dnS+mgASvjDKVCEkeyhWp1SxUn7wgOSImomp
Tcz/clS+GLvGzJY4KRQhhCVtvzFgK+xgmiqGoRDKtTl6UC1iP95++OiBIvMfc9t8yGdvQDJnt9H2
b8NffgfPezcU4QPZAGeYERyS1UO6jq1L1SglQ06nqSDVp2AQGqdg6IFgqEW9FQFd4Vm50EgTOkqx
yAOxSLAX2qe9SNHenc2zu/yX7FeAQ0jX69tvFUWUNqqhPicuPaL3uFkU82Wy2l/X7nvxUzIv4kl6
l6/SeJJvslmyenGsFZoI4AtEuAyx5j+grv6h8lzSmllo5cuE5AVCRbpKpiUCUFFRvmZOJebZmFaX
2mngRJS5IxsVGcfGG6xvC6JhgtDHfDa/A7SObZ7N2b2Nod0H1SfzZikHtOxGnZmF3fycZ1fkhyuC
CDYfzG+DL433NJ8QQCghaj5Qav743z9/OQVQUV7heWOmaPxzsopr8CO8pjm2EFJsflcdhmCOQz9a
09JXRl6HQGOWjNI+pZNaMvK6Sddl6IvZyrPkpY11ay/0uzbWVFNSWGvS1NfMs6/QXhfPp3m2PSiq
rr4wmFtw2hMl5tW74qT02jZYYr66zwTiCa1wlgDUBCUwhQ8wlsr+GKef5gDkcL43Rp6dJQ1p+83K
ebxJbpSiWx9uoApzqJmQoawYmGdzd6BCJUzcw21FB68udnzAunhZmPP0IU2dozqojphsanN7m+48
3ZPRARKKPhFqu8oyK7A0NuK8NEvGWq8sgYewjQWjdT5Tqkh4FX65qDwm66/lnT8GuNtlRf5Rw2jW
+iT+WJfa2BsDYv74kKyy1OK2nJQR2Do7qlqLrFyRnfS0htHBr4tz3I2UgLIjonTg5RnPAenck0US
TYyvIPWigwvZvu2zo+tVEbDFUZPQ2G0ecfq8NJF/OnM3xPOIKRLAU93nm6KiGkBEfuXq0vPmXBLb
fcMe1zb370j9c3Vompt1uuqcuDUaKA44eprrhPh8/WEDb+fFfArAXadsqKNniPKX9MjHblgZHwUf
GB+hSg2jFuPAmh400LH+CskMpdDJSwzX0XMjbwTGQdz09lSLL2ACaAaDfhpQOw+zUX6abO7u0hWE
6+7gi2pz+DV3oPO1raHZj0WcqIvaxo+1iSSzdJEm2WySFg+rfPr1erpeHx8BWEWc0tYuc5vri5Mq
7FiplDCBY2NR2ZQWSGkzeXSHplxB73WTo/PI8HZ1WLGR3YH5OeqydIQFahIpugXofowTiDWNRbM8
PrxxugyMAayG7uBW67g9M9WtrJgSrLGssnhT3Klt6jKGSgbnDFCzDCy7XYbUmraPAs9Liuimkson
NsWbPk7SmX0EhR5F422Sl3RmDog/0zhL783GKa9BtpL75A1PQXzNOl6juXuLrsUoSb2t8+vvdbc/
rXsjqEtBYqG6pUBkTQofb3+6/XJb1096HZOqFRGqvdLJ7YgwSesRcT51nd8afoWebUgIvxGvbUhQ
v0rRNxL//p9Pv/zyjw+/1dQHrrmSZmSoqqn2ZmSEX07ojczn2w+//fBjzbUI2jkRzb2OsHYLYdwr
46+8AuRF/mQii2nixt8nkkCrmwpFrsLbS4lqUWhwKFJV00nm/yzqhi9ez4wt5CSMOjqWk/LLLbaR
E6U6nD05nzcYgGqSbnWhKJLdUqBcdU1BsK7tiVPdNQmGhOiYhOCo3mlbOxyFZp6OKQjGu6XAlBad
B6IcCdp9tMsx6iFuZ6zjYJQhqbsmwRjumoSs6cwbBqEwfLuHyF1o3UfkTjjtPBLlomZU1YSIoKL7
lWCB2wcMbxX5r1hOlV0yisA4LR+S2vMlZo/4GXgFpCOp2pPN0qfFPEtjO8L4FUBq7nwERUh6tnDq
UNAcBNurPu+bJhdctRctTFR9be46mZchIqXqyfLCa3z5ruAmh22XN269pDwrm6jSqnJjyZS5aupg
hJbb+uaydmgHY1jRsw/ITYjVJ37UgAMTW1Y+KN7lqJk25A7bYA4Iu8GQURBn8yre3WBG42WqoBCI
YjySon1Bkdl3Zu9Bx+MKFm+bmk6xcQTMFEPEXMFR/WXWf0K4fna+vmKYqFOf/v5zOvQ4PgAwYDIv
LNYWPPrcXF/X0sU7+Nef8tUNfvdojOPLyzK92SEvuhSFkTKnLOmH9cMKpOs/1nlWyfBykZzWl8Cp
IrVEfBB+n8/I99kx7A6EqzwQG8n3EIqc3X5mm+erM27UrJazMxh0F0lcmCdfTux0HX8c7jOX3508
1mj1Us+BCxyRy0UPnrTTbLatOS2nflSGcFgDVNXlpndDFzega3XtpmvOZXr57niR7r6PvYMCW+ix
zpfO0lAMAxv7JKguN5IEpacvxzlB6UlMeqVHPK6dYRfI+jUYgjHq2UJVv/RUv/QI9fKpARfIe1Zg
z+sjHrB6QQlyyXq20H7peXT/BDZQ0tFhX9V5BC/jEZW0I7JQHPmawFlXvP8CiG3PJ4fsV62S9Hv0
Y4R7ttveY5t+16d7jqUk6/egwpT0S1Cwnk9+3K+B8p4PDs173oBC9uzReg72Ben3SNKqX4MRiAU6
8veaaN39mDA3q4G11GhXAaB8d1oaJsprFWClkAKHMSpemWkqSOSHJqa9x9I+lXkr22Brk8ZlJxQg
dEC++Ia8s9+FSUvoBGsMPmEdwCfZkTK25SXOvxnBV0WVEubjovZb9kKdFxLdUsAes84uy8x25cfp
czIt4seksGPFnXbDhAUvO5dd9fUATqLxvHKsN0UcUsmiDvHTht/X7xiGHK2+WAI6mwhFI1+7+okx
NdeZkMHMUZ46WVgovDncZ2AHloK+eX/SSE0izJnqnZErgt7DGEaCXBwhJPrnCGmXdLQmvbMC//aK
frgin8x/AFqweDBWZL6jTr0m8Cj0IAqsy6aUZHRsljYI/yHtNkat0RC2WFe4GEkxrKE+PT2Raw9O
FWIDmIGnGD0gssIzV0vNXPfO4F1dU0RoMFOswaeSesAd48OgkkMx6KNmomnv7PnwhQkd15F9RT85
+WRj45M4+USYjY3PClbDPl4H4ZSOJb69wCd3cjqsi3RuJfPJfS6OTqSAGui8cGHZf5ABbOx4/emX
Hz789OMvn79Ue1FNyLA8enj6IULz2HWxof3b3nunZRFMB7isnFg5lwLG0/fOyt/e/83lxPQQFw7y
3vw/luj4fZUrQmQAZg78postycjAXPmkMwYIM983SbuwQfj8oQGrmrMh3FcdNsG1YaT6t0/oh2ki
UsKHjYvS5+RxuUivs7RwxkKIDiJKtzPs/xx3hjV6dPfCw19vvrEjYL6u/YoDh/LQdll3kS7PKsRf
X1Fmh7KGrUR77Vnf7isalrBk0LDk0z5tZEmqG5ZKwNuyM8Q+P+eVw8IYJ4CG2ZAeDDa9Lolez/J0
fZ3lxXX6DI/79/O7EyhfOxpR9kVLUVqflPsleAu2Z0HUt5jtUE5QDSUJQI9U02BqdMNV4ohhGYKG
LVTIN8Vi/i1dx/dTazVQPGFn3FU8fmNsLJ0pdfZxmLTpLSr3/dGPDlTigrtEFgpLd637KtXDjuKI
jVAqXHjVdzitpaxlWaWP+bd06yVL4yiRE09sE/ovBWlIba8ooiZdqmikG7vP83Sd+5xGjNFBlslk
A7q7Qc97E6ZWaZoRjp45ul5m9wd1ZwzG5gnW5VaySLZn/Cj2wRqrEPAyNSvMzFad32eAS3CXrx7j
u3m6mJW4qc6qGmYOEFGLoBuh10V7lhTJPgOn+5Qbi8KUCOrpPy608gd2IIqJpqqwk8ShDi69Twpj
3IkdGVs8zaduPWjA/G3vQLZ7aUveOW1TCBFxHJoUcU+7hL2rOt9P1WcTjSgnjXUIv9qCW8eTTVG4
J19SqiPuVc9FAmJcY7NrWGPr3EE0FDk095rAZ7JIsq9u8BLMfKDkLppLFU13MTUapUMQmOMAIk+f
i3SVJYt4s3IOcWZSRoKwoCLfp3nmgJcMgO1FZ6Qruo9QYBexBs/kdXFhdmJ6W6XaW6cdv7B2gshw
ePJH4aS6LtIlcU3HkZGmKiwd6loRVua+KcISYi5CSHm+sZ0nZH6X27sZ583bW18XDofBHAPFVEvb
dHcbyYDGaL61WbhmNTEmvYYZtdzclac/5hHRzd3oHUAKufEnuG6R7tgXYUnjjAixBp/cfA12Sswr
aJfj9xMNye8GRcTNEHvOdqm8YcpcIw/UHmhiAdQeInti/xwKzgnHVTg4SDcpGQgOMnTCbyXMkDJb
WHVmgGaDRqrJxacnD8ypbLt4O7DJRghbzED3BVBElDXNV62nq/myiLn7lIMrCmXtD9E9KoeK5DaS
MiFyl67+QuaEMdua1Ep+Zd+Y3WHpczrdFBbeMV9VDM3G2NzDFJKtBVvSLZk47RjCwkJa1b9g9pZ9
lrRrvVef8Wbb1HzP6ffKyEQw4Tw9zIsUngXh6c5w5A5NiIyIIGevz9TTlQKEavF8/HjPIn6hDY/W
6wE8WNd8GSezGSCf2S46Z8cuphHjPnud1hbr3gNpxZhiCi9undCGn7vx3bidCyc6ofom8HS9HY+7
mZSjk53MSHi2VbpzXqreWagXMkN92vY1InFvKgnDI1U38j8vbSzg8Bbtr2tr68D2D5pTh2XjPUPR
q8aJXjhH3UCFDLxH01+/h9n7mlOqPDR1JEgAhX0zF7T5LIVYuTCx8mska6xlms6/AS5qAfn9u9y2
/D/M74o/5hV7WALCb3uWDtxzvDdK+O/FazB/RT4BB1f0H9OHZLVOiyv68fcvn2L1bvvXb64UvRIc
PnJlv5bHrwQmuvEqKDjPrD28J4t88spobKVYaSAEcgZ+BzprQriwME+n1kLg4c2rj4A1jCOOinqO
z1QqzGevGsiOGMDYaFzjQRnwACzvVgDICzWmOwY0xQNbgFcRQ4cMMK+EZ5cMYD0cAxwqjNHAKiBY
DsyAcUPnrhfduWDMBOuD9H5J5/fffbeT9veOUm7LFyayqyOxMlbTkkaUDnkmcpg7NeSRANkNxIZl
gMqBJeD3gtMhA8Tr+tOlDWA1KAOaqYE1QIc8FGE4w6CRKezCQQMjgEiTfJBDkcNwUjy+Q5GDVbIw
h+LBeTjLp5vHCqxAWwNORYAzsZymtE/YlY9hkWB+5SmsejDPZrKt1Evu04f5LI0fkmy2gCw7ACOu
7XuHs3wPMy4jJlUr8m/aP+Jijzq8sryy6XzAIr6YaSGkTqEOV0kWdNmzvBLhmiDpWadQ05SdDyb2
nZH1ZcA84pIi3jrf5529NJeXmvHSSfZyBlUZr/DgQHddvCzS9UPqHiinGIoEIWHUZ/Pvk3yTzZLV
i7tiicGsLtxwiSePubN0srk3FGcv8SSZfr1fAe3TBJmxGi5Je6JH4nSP0TE3HhlAhS7xadgCSLRe
SGkjZ15smdBhpHVAyW30Qtb0jSfyynKjlXzlLgmVOvJr0Tu/mpU5dfLHN1KOYj+CI01QL5TMvg2R
Z/HygkKYY5zzxm4pBb9glvQUA7qtsYYij6GR2ekfCCHGwn2EyC88M5gDCx6rqnP1SJnwwKtmhZ/V
16v4zpUlR4LKAGt6q7wrV7f7lg1A7bfwQW8ljkzsYW6ghyfmZp2ucB8MlOPpIn10/+qKvnE2yWZR
nDIgOepH+uRU+sezDWDxpA/627Ubt4R6YSBLnyoV4FfW7dpn63l2v0hjeAlMphDTLOf7R/BzRYsQ
88I4cRFMToNAvzlKTu7tFdFEzrY8wHbvQk1QAlWjmbs4RJk7Cwvm/yoe5ZW5lOjhHBIlZFiHJMiw
DskPrbUbhySOuoB6d0j4qIygKwaqvREJscGS2YutnjCuKTP7GtreKkdNcsyJZ9nREdknOj0qhTae
MEvXjjIAhSgS8AoXkMoqXcKSTnHguTCOKuixauvl8vtvJ+AQ2FxSdXCFucNPBIUUIaxj210yNV+Z
4HCeLNa7roHff/vJ/WKlzVETVKTb6s+NnWlhN8N3hi+89/2j28UuZjl0T6CafhkpZ5cZRy06Fwe5
KA51lETsSBzkojgwZiKkbe51Irs7oJnSEcUN9sNpo5V1yZvV4jVBvoMAsgnyc759uXi5PuxHqTMk
qQVj5redEtW0Iw2crRQnGgZveHUIiKM7fx+q0F5p9jacSYcqvNI6oqEqnJl8LGnEvKBKh9ACRl5B
fWA1mGhetU6i2IvS0lyS7DPDcrHrCkum8xmN0+elYSudAebJO/gr0Il3g0/Uwyg4SS6x1xVKXLqx
PSZrJ6yA4jjiXpfCJtZn3wlm+WaycAYphGjjCrxmJVcu0HBgX66mSTZN3V38gLNBaH0itQ39zD9o
sgmEwt0y7dgC2isZ29QW3EbARUSFamgExxvvwBzcwCtMCc9EurjQNXz0hgMc4EN8vTLuV4ASQpqa
eYl8AkXmRoyb4g6LiTs5C6PUBGm9rulDOv0aG12uXuJlskoerQX9783VLblS7OoDubrlV+rjlcIn
1zbvITii/yBLCdb7dpKYhdP6olLr5pgYVut+U1O91kmJ27oxk8Sz26yJeyrMDn6s6gkmipgPfFgZ
+8XrnjJenJGxVsMu1C/Ffmah9v5xwVcaOoyidg4BHgSL9HEZ380XZaIOvrDx3qHNxedt7j+QzNms
T6dK+g3iFOfxrJy6cO1hJMKF3NN8lt5QJN81cuFnN+gxjooE385FQJNZVJsMQwH8j/9CjRwfH5Ns
dlNlIYzj/iwEI0rHvWMIETLYId+zDWvNx2VbROhgm6r6VC8D5JE7YiF6dMQaoeCOmPZgxNQ6YhbQ
ZhbVNsOa2EyXu4UT1acnRmzsW0YG98R9GbHGI/PEfm9pzl317bVaww59hz75+Z9pnKX3eTG3FdLu
DImMGB67hfmNGqznJ0kPJmZze1SMzH0hPnaHgmloh9KXtv2myPaobTT6q6+S9bT98fan2y+3o7mP
Uj2yE0SRkSuc1jxvfLw57kHdwKtCOtDzxfG7oX23O/tUKIWKBJdIjc3iyOiza157QtY5UPoyOOmV
q5M95gqwaCfL7rXtVSopax4ovSncq+uiR4X7tb4NqHCCRD0OR5XPFnhk6mZi7OqmOLQ3703bXpnf
HrUt1di9uV9buBxnjpSQcalbeWW3h1S3qHl4jyiZqJqw3mmoRkcfqnEefHP3leqRamSBGhF47OrG
MvTm7k3bmI5L2349U4Nq2+t1U440safJ2BQu5MgVzr0GD8qRJvbGlWfReuTbW2gv2NZxJtU0Gtfe
5nzke5toif8/J9XUyLKogqtxK5xiFSJV4SBd0bQJdQjhsvSBmzZVt4y5+glkiPAjzYpVAnBJZZNM
Za8/RlxGVOLgJN3EBEA6hjCvu7RqXiAiLKJeF3LluetL4KlXms7ZZYIir1EpIUki4dXgdInkY/o4
SVfxJJnFy2S9fspXFciJDEfEC+9PeXtTB+3vpvnGLP0umS82q3LE686nWufncKleEVxorhxABEf4
XHd5PhAn3A/DvHtGsGbj0A2WXu/33TNCpRgHI5gd9QQPZ66EeTUI9yATFfTgaMEIxngcjFAthnT5
ziAVhqeQEBYDGI9xmpk7yTy7r4SA5TSkLqBFb1PcxcpxrAOYKeZUBCZXIlquY0w4dlBVAGLplcG5
RLS8d7wKlLgHpBLhGXCqdjjb7r4Co08/HE3VCmbbGUJx5DkbVoXCg0ZeQMIhyMHkVK0R7YkcxZEg
lAeAFPh2b5v6D3v6y0mEzHzGinLc06IEDNKjrIFn82wEeIMmceLFUHOpUA2J780LNA5+NjM0DD8O
kXLuY5K6lqdxwp6An7mc/cHfc+3pSlNwMeu1+bmjZQcqrhHC2qtpR/tOcbCtUun0IY+T9blTAzPi
5cD1WbOxsBr5pljMv6Xr+H76f9w923LbxpLv+xV8iR+2FjbmPsiWyuuLHKdiO76lkvghKYiEJNi8
HYKU5Xz9mR6QMkU0gCY4oHT21ElsKwn6Oj19m24/Ih1WyA8XaXFZd0XCngZFMms0oZ4vZpNoPpuv
5viNDA/1pehILKxsjNbbwtFDAPMPE97x69vzAbfgVExLAsuKE9mVhnzibrqrYjP5B9V+A+skQpy0
cgzgZh8z2JDFYoanXqyF1IsIAXTNxnx6nk/zJajmbI6/sjHJUeHRHo6Fg0frOw8HzyT9GDAsiQXR
xZHFZ7k9svjMccWnjquetK6tgPSRBmYFPO6xPq6+sCOfB3ZcfurkuPAMKU8QDh6XR1ZQFifiyBdE
3NFvWU2H6fAyS8/G2XrJivOQ5llaE48YzZxf2dVJOtud0Ob+cr5jV9wz5HOdbK3/msCQY1x3/NwY
+xwXXWk9Rz6nOocXF9jXVFcP+xL5muZd5ZBjX1NdKf2M6UiX+99/7QuGm046fm2CfU121ZApJtOk
qxRmGG5x14M/R3HrKtN/oTLtyrcFRqnoKtMC/RrrGlWiUuhs65Gv2bgrbleYFFhXvn0NyrcRRmnn
a+saM+Xd1fcbfjN0zZ78g8mhcx6DYXIwXeXAMdxk13tGolak69cU9jVhw2Vn/KpxyPbimVAzEJ1v
NR1USgZ1y1RXM2MxoYuuflSCktpV6DHqXHSldIh8rVPyZCdRWXXKsQxzMmBGdIY2RC+DDu5C4/6V
MjssjNQD2dkXwcIGq0zAu4HFWgYMQhIb0s03nQ825phbLgIGDYwZEdLP71xDwPx8pW1AP98kImAo
aOKQUYMyQaMGq0NGDVoFjBp0ZyuCRQ2W8ZBRg+UBowbT2V9FowatA0YNRgSNGjobXzRqUCygn2+U
DOjmK5sE9PK1CunlK6MDevm6s5cv0JhXB4wZGOtsklTQg4q68cwGdOO7JwssqiIqpBffOckSo0dL
dU6BQ81+29nGn0nATlh2sG8PqwOh52iaDf0Y0GrXinI0cSu6+rerxbhlCD9LEpg1ag+mxTfBdNg2
oBSMlVThQu1sMl9+i9LFIv12tjo/x1+hcOFEKDrbzG2+jhv4Ku6UrzYJWVv7J1vMonE2vVhe7rzF
KturVGdj9Z2bdSPKhYui7p6bISvp+Js26b5KGx/QxsdxAx+NvFM+di6jXeWjbOank2eLAzviYI1N
wPReY59jEosB7xy3f83OlvkE9sfdeiUKC4LP0uEXdLuW0JC+VMHVdXm9rDSMusjahAbEEUiwyVwc
rLct3Lx5kstqmk2S//rxx75h85o+gtiG5rNA+ax073xGXx7AgLuB4sHVVuLaxOLwgKr3orM0nbz4
tgNShaR5H2de4JC00qEhKURMBpadhzQvvkU7ms6i4WW6KDLUvYcXRZ3r+DWKv/3SHNt5Goe3Kzcg
0aPGlJOh2Afq5yJallMLNoA3P3F8Rna6M2OtL2uFgQFLdBEg7mrtXHz9zjinEPUjEBhPnLvQOU3w
HcpsmrUoAo+TgKb3Fjy0gUu4SzWgG/S5mJU2fpGlo2/wNDCr6UOHd2byYIYC0eNV3QYNLcSAtFKB
xUTr4YtaQGTl7T2tu6YdUMnHYp4N83TsjVQ6dN5ugbJRx2wgKE4RmcBLJzeAVk1EyEFC6UQlQ5rO
llFaDPM8Kl+QorkP5/McztUicwrp0wFRfT5AO0dWCL4XsH2eBnlSsWdydsAS0ptDCpWjdJlGV3n2
1cGrWfXLnKI6q2zuhFJD6qnoAbAmbf/Yi8W4xYEQ+260yJBcMgqJYMPrxtFYGN5C2RJBAbSajrLz
fJqN/J0xXY3RoTSJu335nrQd8OgF5vkJK44JzqgkAEMX7saA56Sj2XA1yaY1mWurB0KyY1EnuB9j
cbiD5jdzlFs5KveEuyW0FfAL15LCSdYMqhjXeOmUOG734xUxLf1ohfKivUrHq5r1eoo5l7MrMZgz
CGRhB9qJKJEdCOsUDiSUjuY9INUGBYqS42xRhOXX2Y37XOAqwSi1710wDfPHHj6sF+BtdHZEuXn7
KAJqTCPATfygeecTl4/Hkb8Hvs/DW64W08LfBHALNcUuyvm+kuSwNZN7MwhvOYvgoEZODHjuj4vO
hMJ0D2eXl87XnaGPppUytDcXTQD8sJTlpfvb10WOR14u5KctFSSYsVE6vcgWs1URbaIGdHwg00TH
mu01em0DE7tzwMuVlLRRO5Xr35bQonQM19DXS8fdYp4OM6i23NjwStbAqQ1pFTIuUxBh+dR+5P6q
L0armFiL3gLTdqN7Dl97E1tSjrAZRmFoGx8drnNMlDWxvRPAnKs7ASytIEXCLfqcT+bj7HaWcJRN
c+eAZ1fOYyzKzb91oaOIXXjDLT8SHigK3ELKgzflFLeA//r248+/vvmwZxl2Xc6mNIwyfiChdbx2
iibhjusfBdxqJ8zFXLJ9Novcgb6eeLGzU8/XatFbVcTOazekdMT+dM4Xs4sFDMWop1ToWNDeXuzC
vzXtys/ecN9zvn2R44dHJgNFWdBGg+MHW5UDRgr3OxSicZTJwyjbmaQFBZP5+LH//W/vX518Rwhv
gTEDnUhKq3SvKDDSTIJ9+I6zG7TpjmlVlFyiO7XiNgqXuXNMF992N2G2HFtNKbwwQWHrxQyqwihb
XSCsNA8FqPHAKO6kKEOBWmR1c+YEzJmjNIQ0ANoSVbNWGGOdXppAwMBTgQnxt6PudeMSa6xibn2/
xSsqjXgBDvCuCXfe0WPvhVfSGNbq2MKadkbKFZJEuBlj2CjIYLxFz/zMxR4LGGCIH3kY6qf4YTq7
TBcwhPJsnE6/+CDSRTp1DpiOYRr5fhSX0sbVqQb0eiImkuwTyj+QPTzwXw+4AEPHkNmCDEYLakbK
buzFWjSGE9Dn2wHUVqjoolLn/3xN82VNHxpndqD1UY5oBTLM7dUDprUWOpQlQlSnVmu4i1yS2BBp
bw8b9iOfQ6k2tiE0qRxo6tMCa2KxvFycDEiPQfdhdAVyOU0VzSlLYllaNLv0E2fpo+HlavqliG5q
4zC4Dy0TSRcZWtk30bVzD4Vzv/iBHhEBfjatuYkUpEUOUzEYW3iTD62PZJybxCmd5TRCt4Gi3VhQ
caS85yBT1uTDC9oKhe73eSu9/j5wThuFwZJIcZN7LYmnhgqr3WcSEEQcBPFgn0mRxpM3YLAqsoUD
MF1i9UjJ9cCSarr1ALZz+uloVETrGC1yd84EbZ/lBhoQTN9QHzMErlC8P7h43sYODKWufBDQCq0A
lkarONT55NZQtoYyhT1eBeSxJi4Gk/mTzp+djJezL9k0/8f5WqNZBD1c/p1FlQSpIG/NtCElEU0z
s1oziCKhdI0zfbBMJGn5E7NUQBwDxHxLiO0I57oYly0G+WRe08QjYAONjg8mZAdUtFrkSCrdxVDu
Ek/6gVZUU9d8oEjlsGZo01mxGl7C5rZ06dzQ3UemHMyPPNjF3VKKLWcXqwFB9SlOtKQ8j2fNayB8
X26UnsMrqmm2/DpbfGmYGQ1FH5V0YOgWL9dAinyyGqfOxPp+B0gl7W7Eq0XtwWbfyMiJqXwwW92E
aGR812jO0+XlyaOdlbXCv/+6t7gxG8t7i5sh9cbeDW6aslLurvim7f3VN3t/zwJp3+sd4cbusUy1
vb980yy5t7gJJu4v3zi/vzZE3d+zoMz95RuX9xc3ldzfc0qaJX4cF7jO/2WWlPNPWoODVbGGX7+V
2LooVZGSTS3gVnMI5rJR5P7BrfVbeGNSAqNSeb9wocYMvzuBUsOja6Q3a6AVLU0cAAmf+YAdUH/9
9fbVbx/++gtByMDgcX0khNL5fJwP17XyWTqvx0vIgZKkBSsh8DqfzR6dpYsGNqmBhu1Ux0GHcfHo
6ZP3jehIoaU6Gnf+dtxxHPqnAaUEdmlS9hIEQikioWQ4KdUSBqUNKiTMNGP8aJj9YE5p7CLNSg+F
FGcUpDQ3R5ThD1ySOJWQ5kOGQkqRxOeCFdLrw1A69ZTEKan1ETllntNOn6CYKh4HQuoZBSnppKeO
hxRXJE65/x2RU9y0IgWjGRTpMUUopHRM4pSV9picEjTjSRohFAwpTRGfFpYyPjEQUv9N4pMiRd4h
UPKhATpXcmBiJo8krTI2mE8vqlhorijz04NgMb1Kx/mo0vTn7lcp5BH1lnbCuY6PaKAV6X6VQlEG
4AZDina/KhGLI4rP0pBKJD8iUglJfMrII4pPPCPdr1bZI4pPnJJujTimtGpwFgSp/6M53IbS0B4I
pR/4M1oQJyljUkMhJUhWSmtLciNDIfWEhJTQyRGRUs9onCJ1WQXTKU46e4Y0SzEQUo+IfKK0ggbT
qBcUpAyzpMs4FFKky1ga0qOXNqSuYEik3+ganX2Lri/XMw3cH+FdcFpcns3SxQifmC5hBO/hCrTV
83R14SfquV8rXVxiQFrU2wJrNS8HRE99JePmrYZ/qhGly+UiP1st8VIDfUghZyFGJTGot1oTjmT/
i6cUfS7h7n25p406bJW8JqWQON+Duv3kyQz42XuhcJg8FWli/T4Uw7ScNbEtBToXng8UybbyUPI1
JKt5ALV1TwocsfKYonXEGsZZv8TCZIjNZCS8Fso5lNjMMUVM2r1MB3eRLXeGPkt4HQ9zVtq7xhU/
sGucWxX4ePoXcQ02Vyp3o7AjkCZYnBxRLyyjDMeicvL2i8qapmTpOHlMEnVCaZinkUiYS8KE0TDJ
6ogU8oQHo3DTzOIbV9ZmbbYY4a+fnSlNBkI3DvXZAtvD61wrY3U46Yt8ayA1PCtapOXjojiW+LRY
eEx0OOCt6fZNKES5fyCHYqINFP4DYuInWt1GBxvvT9tJxkVnxiv0ub0VtOYlLgIwXjUw3nBNGxpz
AAs0LnFBNKAhWKCbdM87qv2ywKCAJVhYdiQWmCYtEDDhzfTKAosChqebJNMXggW2gQXKwIoF2SsL
EnzypvMkkvhILEiatMAZYRn3ygKGjgiSMBM6OdJBYHEjC5Ig5hDyWrNpucsRH4Mqw8CZjBtXf8Hc
E9oMNjJrb4G8RsY5D1SyH7x9BtD79TmIE2UT3xKchODodjP0qw9v1w7cqfchb/+puJytxqNoki6H
l7hj6ayKoLR4cbkPVmUy0e84+eC7tUtEnufFHFA5rQtbuLbKWTl+JHzezJatKDkFNQNOGa+xJ0qj
kYf5Ki+WfjTPbLqRHX5QhBmQ1mDsh8bwMht+iWCSyveNNNG5C0mcob1ZFXg2G31Dw3VmiVZCUhPe
ZXN9BfjtMF76aWqWMlesCzdgzizCDnSQD4OBr/FeeLw8ffK8gsh0tjy9zqsjxUpSDclC7kdqWW+B
Iku5EBZPI0hJvPmoEi6Xz25Xe7BpVMkgUSI4yYvxOaj6k/H4/XpY0stypDC+CEISqxvNSECg9xYZ
tVK+koc5KMFti1PYs3w0ct7EJHOHaOSC++thNq9bA8UYpN1iGRqNcgEpzMDw6dtRVFxdIKUsZrUD
L3lAJfMpltwpGQJOWgs+bd/E4qMmwYiTFFvtTek1Oq5JQ6JM7g+wyIbOR11uTzx1d1M25Sq+VvHD
akddYohbk1pI22HrJHcqDDZqkl87DRqmRYavkDXEZKCiu5FteCCzF4HfsZbhuVAUsHACpm20nGUu
oeahAnJiNMsKp9cZXE+79kuoQUK6HvYjdzVe5jCsGiIifEeX91uD8xnWXq5vpnKPd6tXZg1t2xOZ
29PZsxKDV+Ui8duhhPL5IDbQNOenK/H+WkaTYnogDeuD3I8AMi3yovJq08rgpH6Xahl0r+Ok7QXu
+PpdmKAYkvyz/OJmcCM6KE04F0EPTCIDmNY9wGpmlATv1gY/Y57hpRdYeido0skR3cP59rBLqJu2
Hny5VEztbNFdwcMNEuWO/9MiX+ZX+CQ+7nwVSTLm++FxlS0W+Si7udS2z/1mzQYW79l+2LKLzrpf
3kdftWOXpIK2YtE7Ms2ORyJdCNz+Kp9VsNhx4WC/XwFztPyz92k6yWDVVfn/89Sh6f3LYvs/y6bT
9OHn+cUDQPXjzWuHH/iLz/Ps4oH/2pPlCdgQU/7pxWxxouPK2+jEj62OY22sDs1OnxwrR+Bh6Uxn
UCWpwKWp2TjGFauEWmXPBGU9637UbWzox+x62eKXSVAUUrtRJwx+e/8KT6gJTixjafIq8nKO6d/r
2PJmNRu2KaZsuLBKHwMBCL7OZ6vpaKeQukZCh+RCHazSK9bOKw5J8l71euY35ibmYPjUBt1KlDvQ
RsreDtsfr1+1njVNMcoOAbMPApVtZ85jntYVbR1tsj1rzCooBLoXXIBevRfgh5trQSmeNF0LjCWx
VeW9wEhtYAfzsnbZp4GhsqSww4RakachyGSUleV70g1Ni45WQocTV9oFl1rvhQJ6O2I4XBXlCmz3
9yJb+CrkeZqPVwtcnSXMxXWhT1MH0nGwiGN+CBbfdSD1W0y8XVvMxuU49zIqwBRCwRRIa3sE7V0l
oN7pxzQq13XVYJIY05tm+mHlqELa2Hnc7VsaerBpo3yYtZs0qWLVZNKU1bDhAyyaJcW1hpwh+1q2
20PNKhpl49RXrB67+3rhxwCdqAf+pyeqghOcc3fIZWhx+v6y4apYziZN60cZh/VuJgnIjR2g1fRC
5A5xonsh2G/LPR+neLOBhGYDUrnF7gN5NS3S8yxq2VkAr0nM/qAbdiEDDj8+cmdqmI4vnfH40Rmo
uF4uN1Uh1D1OSP7SXSFnzMFC20rufd+VUrvJU1lF23rYAvU7hdvJRXSdppS90IgvB+BQt6ZsnT+4
0V5R9jygy+33eqqgKQXEw8GohDCuX+wu1vL1jHSxrQ43PytvChdbwbL7k/hBPrlgJ77WFjlf59r9
5W8+92N+kp6V1yAssTpx/6RizEGu7udxLJOWxk3HDPEjq72o/XrD9U7l+fhxeXtVIUYw41m1vLv0
oMROW1M6nw/T4WX2CHo9Juk0P8+KGtPJYCdJi9luhgElLF+b9UWshxtwlbgdNkNRaJE1cLb4V7pv
1Y5uJhwx3O4PpITg/35z1TjXAl/TA211qmWvKArlc1FepLcb1S/TxRRKYJ+LSvrT8Pb9OCUktUvP
9Cot1r9EyxSOwGj9tGu0SDfLNdGqtuROyykKXgN0fpmP87knrbgpdT8EqD97oOW/hpfwE9nuvqCw
v7N0w2Rnt6ssZTKBdlOhg1BX/b7RSTLgLbd90+e3cq2lfYrGziuP/O2PdHcIeDkha+KmEo4OBIdp
QVF5HNzX7Oxi/Gi9GHk4ztIpxGfOL3HWYljzNiFxsVisusAsk2mj3N3RUP+ZTdPl0h3tCSQDXHx0
Nrt+dGtT83qdsfsP0rMxXrWS7lQkJLXRe5z5ReaXpFTUyA+aTRLdD+27qc/bXCjbo6uBBSRtbNxJ
BW5b79LKbsLzjbV9DHtdT5wz8AAcXP/vgDCihUPaBTx+755D6kH557/z0Ql74P+tv9dfOpmvzsb5
8H9+4PEkvY6cpYErNa56GkzyQERgCD52mP0Sf3r56fc//5DPP71MPvFXldcG0HGq+hEunCnYgua7
WmbTRqVmfmt0yzzjO5XpdBbBUqzsgRPp37UitUL0fVJ22Vp3ShI9kMz0rF/P1TP+Pn73Wp5+FOL1
qazql+5iqu6ZUE3fx/Td89+0TH7+85R/sM9/56zKRmNNP4oFcWXk4sr8quXWgQ6o+F6L0v+gTZS2
Z1G+fPrn0yfm04tPL58LqX77CTkRse3bRmwJtc48WBhLqP7T5cmY6vtsvvjp3U+nL16LN+9+/+n1
izfPkSs0DqZVPTBysvI+n2+1SZdt/OxGCkE55+OVc+2aXVsGOYBwXkCdRE/fvP75wx9P5fM/n76V
bz++QKytkH0f0Q0/as+n83Ot/P+iVkypnoX6JP7j46+ffn3/5q3+Sb59rapCtfw/K2RAuBjHPXMx
Ya/fvPsk+WmcWGfzkHihrYYVzEBE2fXcsRa3FFxqF5r2hEmZD22JwpntD4HdFan1VkLB9PcuR6so
Hp35QSTrFy1Q16x5vJtIaDCT3YBsl47KMtp4dnEBkKoZMS6YHwvUlEPayWT7utN2xb3MnFe+DNtQ
mWQUIgwqr/N8vMwWDu9HvnVgncBs3teuobN6f4hIAnFWYKkZJgaJ1R1IQvKHTlbVYWLQhiFZF57N
vuS+YL4CO/Ov1Qxyvr7vp6ydF9kkd0Z0jDd2wU4lJngHynYKALc1wef+mfbd9vt/Gkn+Q0lj8yes
2LBe/cPa3hJQ4e1Qh3UkKgc0sYeqxLox4ywdfrlY+O5HhJN+aZ9NDtHvhmVgTh8jzEDdLP8qR4xt
vhVtWZdqydVadQialaJ31Shs+XVp9Q1ReX07G2S6n6WtC7z8yboTYvkN2oeQ02ud7okA9q6ZtLL7
uLWG3v20qljflYo5XaooWLkYr/zPOLTlV7cvqy7H3Tli7q/hCtyATQ/uR/8uIVumeEJGDKRid8Wb
cpRA6+FjHDYXd8CyWqxorKZxZqxTeK6CQqq9drm9M6WEktWCZvcYjzvwA7y2shpzno4AQN3wGAUT
M4wIqOvXl/gbIKV8r3s3WmjOoejiE9SqDqI1XJhkwIXuxq6tiABa36A/8maowuNJ7RYWJmFctexZ
CZiV/VF1jRElk34gbq90RAHTot89tVD44R9tE1YO1o3/HV6miyJbnvjhRQhtvK/wqDGU13Hry6VD
FaiNcqnEMdSpXQBx3+ba9qa+bXtg97oJalftcsv7ZlGn8Il2wmPbM/JCd9Gg+5Ti5IYFoqAuxfmU
//L+w/Nf/pD/Zu/antu2lf6/ohefN6a4g3zIZNJLTjNfej/JtH05Q0u0zVQWVZJK4v71BwuSsiQC
FAWClDTzzbSOLNkGd7FY7PW3bz9E739+98EQ4gzlaKckwhe0Qe30KKIjc//NL/yP/7x59+NP4sfw
3e/v/2hzn7PBynixeXx8MjjFgMoz/Kb5exPnCUEvbh9bgAqUEOUfuBrd6owfDcZiScWMMOaHRaaq
SwoV0N6YdJ/eGVphMPG2QNsF5yTyYpI2KxhcBg6lymJio1e6uCi9nc6W9LlE2rDg9KyWHI6i8zCp
I1a0jaKa40VYiNCD3X27zOZ/9UhLCAkABWKyeCh0OprjoTJEI8UMmYuWn+6WxcdA+Nx3/LinxUe+
4N/9+X+Mvf/+7S8f/o3fol8M5lUoxUUZqdWvONTw4v4FM0M4+hv94Ycf33+g3+H3P/0Whb+bCpC8
beuYLG2qLQ1MHF0s/yDff/0DYb++/5l/8xP7UxrEUuBr5qEMxcgsDD/8+O6nfxP54fco+vVPYTLd
vbkPXlnY4lWI5ci8ev327U8/v/7h9e/vXn/3WpK3hhKzKPJwBzxmi/Tu6Vn9b3uV86UxaYRCNxfI
++XvFus6gfxjNyFxuYX2uhm3qX8zrLDyBCNnraa/AqJ7uupcR3LHZJRDOUMdxJJe9Uxqq2yCWm00
XdmEGFSjUQHPV5orW2l4ccBx3ToEFlhxrLbOLXDaSMlqniyDxSbXqLEVooodho1J0rNmrWV0V8AX
X9XgKcU8Tc1QNuwoOLALIy0IuKHiHRlAzQ5Q5g5dBphy3f7gZ5O2FbPQulNs5vMksaBIh1IqR8aD
calLRIqHJCnVCTbjdFCnsPpg8pyE0SIrza7CUzTKy3ruKILeWDEubyt9GWJ6SkGjsRDrKdFwRQY0
bu7myxu0ZE9u2nrqBZsxQsfYTfPhF+reE3LA4V8kd/FmWXaOrYHhYCQcqp63MNca+enLgxmhR+nN
GQ2lF3W21IhEy+CvLA2D3KzROIvGlRtbRSTjbtViPXv6rXACOARoTuycINsDz03vV8oJW5jUntkc
VIY3d4l6W87HugutnHLsmmhyqQJlIhogtenqQdnyUB/cnMTgsMNVEaqOkAUiYoYj5FmPB7fx4tjo
EhiYQgke4Qhtt9ZyfjCFcks0kqJ4ZdAUhI5IZoBfgONsyELJMbkbENuyg07p0WWZdVnsWSWu41Jt
7qoBOVFO8/I3XSxsBN+JqFtxSMc5tk0cxXzIzVNjKn5K42A3FLFnd0mwaSXztJGGBY0zIvQk0cm0
7qS2AhWjsdKm5ZSVMMhVbeiqJvWZ7g4CxrMc99QVZZ79lXScO0bdwkQdO1lRbNxItxI/N6ugV43C
Ac5dhZKr6dl9rS/k55SwEbOUKB8kPH3FUzazTB9t/kgkYGwrPn39Z722KS3Y+RAGQMN4uRvp2OWk
YRALZTPR6woM/WixcADPdjSL4p7at3Kzbs0QVLawOmNQe9flhlsRL3U59+N6H9lEzAh89foXAS5O
WZWMYX/nZs9nqUsnjHqIhrhnVVEvKdsCbxofAMzMnWLPqrgjqSaZlnkSP97Qr28Iqn/8hn77/j9v
WsUeFJDvogt94M8peMLKtiUct5/7GEDsAEWlHqZMLLNuop5NDudgmKmcR3FKSHShD3xDiJZK9a/h
scmlnCTlS2e3ca6e3nB8plPzRHhVanlRYambVRkXPfMCbicss0RdItQ34+fp5hQjkVhF0Dr9RRwy
iN5PaCagUYk9YqbjUF2Px6YteiSXhb4tWaVGzDc/5soNIjKcjDQ8UKNDeWaSF3saoUbhNUXw8fGR
t91Yv7tZ8Rq8ABqc9jPzxpF+BIYI8pCgU8xE8y2QFLtar9L6m1X5ErcHKuMT7dLTFiTtBUPkIDww
4TRep1DDeKurNVJIF95WxQCmfVT7Q1E0HmG0TZhkYrr1MJ1x6mDOnoQ23C9UHrrDkRBO3WVhx0k1
SEVglQ1wkF1c/077AurskvyTZWg4xcqK58Sd1spQD7aE3uXZY7CIy9hWuYUR7dttfRqZqwDAAo24
P2DQMOF5Ra1CFfkL9X4aL82AEhSKAwTzc1McorUH1QemHm3cM0HY6+jXq+2a46aAC6Y9c/iHorRZ
Los5DBDYeZksE91LuUjv7pIcXlWQykYuqzvq6DTt4SpB4iELrDM9MyGAWve9b6p1rYj1JIr65u4t
R/TLQ17PmYF0pD6b8BHMMQqSYq5+xBwLJMrZ6VlcEvrAvMAOK1WwWUAY0HXYfPNMMHS3ZKv20lQ5
AD17CcKT4GyMhFIMSFSUIf/LGcUWKzs1wtLf5b+r7jqNN8q5w2kxdfa1iFK3P2ahnz9uGHehNohE
dGT7heHIDwHt/joeAbwiHXvPDfYzR4OJarfMtTvjKMHSq0qyanxMXAJLTsoPIxcjYdR2vyZOp3/P
3PHHIkIu7KmXadH9yIKM7pxMcPxMXt5B9ZLiUbrynYXStxgMHrpoaaXGrefMJZrtpDiwW9zLS3Ue
dFGMLH3MoPylPItE9IRvk8AceZqBeWQm6nYgWlUOm8wfMlN5nfpP0GjqHVFCKA9ioYP1gbXDBUcw
bJeiswjAKTByoUtW44T7vIZGcblhTlEz9TLoHOJMIIfAXJWbY51qRTAgIjjVKey53ulqBZCE1iAc
JmwWMuljpSrcZ3M9QyJnh2ORB5/R7WBCw7UNrqfg08sMVR6JPCj8GW6cbG47khYE7mDJzkMrcwmZ
7OPmaITpRVA8xBYIMaoOInPJ49lCmkl2ZxlnFSmLgroeeECHX8ZPNVmblbIpq5HlRVB3hj5rdXMx
agTjevjIJjslbNzgYb/xiH0NAdgsA4Q+4CfgMxxwziEkQ/H4FIY9O94HLqOcKcwGlPPpxtXg80Oy
Clbxp/ReGezKeo8/q4NQwpuQXDaWSEo2I5J5DfVCNEX7EiuYDLlM/7F6DwSF6qy5ePRWpaJf18gu
82VmHu6MAYWKulSGdmYOCrh8u5IGOFLWuYNmuV9mt/HyIQX4iqev6n+DhVr3XqfCdAsuRaR7qAJF
gOFwhhuKQ6mEv7O6mxRqrwZt/Rhjf5mTPuYbPYtlDBEY5pHQ49YjIYPi1C0AjFVWAgjFIlslZqyL
6MQIrzfGRgOjC3bC6tKhGeFnOItK3yoDi42kgvLkTj3QQ7caYqgn2PzBEzRrw1XWhKcy3cgRlErn
3icQtrp9sl51GAkYLO7gKdcFWh/XyX0AHE7jpdV8FIj2xEc54q7qRbH59sIz6lLd+5gW87103qMe
S9GOXNJQYDGLXNKjzS7ttk209gsc7zhdWSpElDFERDSqnvlXLakvUStkI1wKRQw+o6tFxiTriWfu
6RksXWQcSoPk2VhRBWCcCoV6qaoyLS19ZYKDpTZQP5VZ5ZoZQpdQoIP7wX0dKn/bEq+waRHuUpra
i3mf0kK3qy7T1V9mRAZ8en/SERKJkUQyARsJ8uefrKH5YL+uyVjEBbW3THrfvvWmeChKS58Lh7lH
Hp3d43a6oNLTRUmsF6VLnKXhXwUeX3l0yqhZL2O1hQ1Ts9uPgJs2f0iXZpQeBNXh0p/sqBstU76I
WrO+TWtl2gVbBSBZPPTXUVM/gcloFjOBnaN2DVOb+yFbQRnpTo6lOw1JsWI2wA+cEENvWyqm7S6M
+93hDnKqLk4kRhU6YyQH2hB5NAEH7LQzMN145E57WwyKoND51rskz832ogAwM+pfVzbkW9UlFNpy
7sNE1mBt3UQC+qRLt0Cz2Dpba0qCO2UZ16XE62S1qJL82pm0IOIoQ4wIflZ7tIFPZEOYXeNcKqK2
fipSwqU02qJ4sTZNycUMIS/7u128jPN7czNRpMzOEPFBIeAmTW8rhJeCKFb6cS2Sx3X51IVA4RJd
TVeKCAilQoVt1bmQzTdFcJvcZbk9ZcMw3HLSs3CQI8KBWDjEPZo/5elyqYxpdZebbUDdt+Onx39v
Meu4VUBR497X05kBs4GkUXW9LKjDmPNkXdbwryS4+RbdRG9uvsU3IYLXX3+nvxL9le+8/1p/PQwE
QFUdJXiUhxv8bEpVuByvzke7i5dL7RANfTipTPsxpehV+nLoI2qLUXhmYFNPdOrDBT+//u23w9sA
w4Vw2Q8YulSUH8UYHiJ+ulFWWYM8mkZrVmYJx3hkaX+jCCY33yimyJtvuH799c032CTVYkrKKQ3P
Q3lATLQTOSXtZMjxXCTQNv+krgJ7WhEKbpxS8269UIPswkVS1rU1dt8Q5nsJMmSRbWMeZMB23NQ6
SAB95UZHDczRXhWEkTHvs17tp30gMhEv1w+xuWseoDWJw2KrAkD3sxzqsYtsmdTO+CLT/fL1xwms
vkiCCg7OPMsQh7OoV6GW9Ql2b4/6PctsXoEwhPEc6G23lylH/5vqzRfz+9Qw7ClSZ64rvGGlZ632
8QBFKlhbsG5FCCiwkQ+C7o8QRDDywjhdkNy5kvKQHFY6qdzMReIaUuA8B1BXX72hQz5K5j8W5hMG
Dc5ikg2ivfILUXeAWqmLCsv0GPCFAGj1sFdZQHTcrOrWlmZceQJ49sidtUpOYBvj1ULvod7XbLV8
qjfWHKSHgoBpNAjFREzCXIuLLXlPv+OIRDWxSlsOWWBlC0fTqBYqOJ/yjGDledBorBWDVT2JqAXo
oGxM7M7RLZB9/YYxPAcYCgJ7s1PMksEgLUYHnIJDfITtkAMzdh4MTqHOMr9NPWglUtmYO4X4ms4i
qMfMVYfRmB8SIe3pHA1WMgQNuQr7X04I98rVDqYHy8gbJN/nOC2rUP9uRY7hlHPoLERRGE7BScqY
wzpH07TmimdC3Q75of5qZL5zxBWOekJNRD7Sv07G0unyGEVyCqnAmHjYpnrAXb1bhpVCLepsSong
4TSmAUEh8XLRFOrbRws9rCdipY99IpSxiRw2QX1bqjUT7Sm7fuV+JwphZVCZcb97jj/xIYkhnuQs
M+gGkAN80+LZCdbTW+x11FzPcGODzlcBcwQtXXC6DBJ5UugmmqDgriiTtWHKM+FEjmoxmm1EDT7F
TgkxnU4saRMrXRyo513M5hvdffQZRogEQFjQNCQRa5GOGJnMQ7SQSAlrJEM/Ks1OcVdBghwgzDUe
XQOAlXxZK3rNVX8cKjfFOBtqjldCC52YxrNx6cPfLerQ+K+b8i6sJ/620YKROoQYEYHRJEYexxJP
FCeR3E8sUc+wPmLkkZ7ZMGvEHECy1P2wLTiFGc15ktSNlTpkUhXoPFfqGXUqArOJ8UkcA4JdwvbO
WQ8mqS+TwmJuKj8RD93EXbyTomwSjgEJFkmyNkdssGOkxCFIiflI9GE7fTTqianvQblEaCT6bmNz
Z3MkewLpe9MzU8WZle819nkjLGTebITGS7DxTY5xG9i9rTBUht808cJwkJ2nC0s7Y8q6qUHwkYUB
R9yPB26tlK0LSRiZQhcxGjoLXN0YDrBJ1k4TEfGefa9e3PnQQwaoIss22JtiOsQta8opzaUwFPUc
GTU4LosBLCXyIshbkmxOFmE9Qc896BhMxxOA6mBizPwogHrExj7yb93f6hJhsSceSmVurZU0pIXF
HpeAAUInMX6YcClkMAt4RVNNoREIniibfFCFSwcaYLOlQXMAnpEAq2PXIp4w5CyeEJ/SZp5yuapl
K58rT3TtGTTuQDlYBxxJqAxrF6/WkRkaDNUk91DTqx5Vv23AvYYB8QRRTyGh3Rri1uwcxRBPVTXb
KvnOAbqiT96DoeFkcSanunH79NH2IKkfA3mfaXs+GNirdPEEsux2HutTMHy40rNvsbpXvsXfmwxc
QI3VZww+6sYrB4oG6sHnSFFbFSIx3fO4qCIQOEohSIWu4zn75MzO/5xRxK6DnX1CbBfwnBgzd/Vx
QoUk6dM78//71n/f+FUcV4yYg3zVyNhfqT9SW6kU0fqVLhU34hvBuHF+HUyR13F3YXQdQsYF96HE
jpbth/Q6Lh8UnsaPCr6oOXW7MI5FCUBGcPpqiIFDq5rqiMZ1nLtI0qvYPuriPLR3T+8abJ60bZ52
ifqEo69VF5mYIisgy2xTrjelmTNVPo/MwivxMSjxYsT1cNdZn/KJS9CAaABHiqfVPKgAqLfVSOmq
RopKarx3YxgU5pyHA+QUpkdU9ZSdo3cJxTNC5IAIA+CepPeroCudoFxC1g9Fe7h/wARBfgImh4RZ
kgoRRDTEwJ3S02i7dwoGykiH23G39ybP7hWBRfop6e6/ISwahYedUkKjfuUWDusehNkOV9exNkFm
IqITaT8n/8Ifob2isjZCy4c0X+g+rqZrEkL/8RfryFTWE+TQfkIA0hNGnEAZAUD5f84zJc5HBg0r
KzuaEebFoId1t3qnXW0lQYuGPqwKuMHIV+qgllUvvaXRkCFYQ3i6ratN3JTpMi2f9EX69ybJn+42
qznUzb0ExLkyqclvVcnPCO+eDXT8CTpEqiuRRLEe7zFw8R57ywcuMZTDmBx0+ugDsFHXBkwsHlXS
qmpCdYBDfF4eiANX1BsLdtQLvAFqTKNy13/65TzLIQ3UfP8vgCRXtuei+aD5/uB4hkKPshqXZ0py
32RZxbNWQRUgbZx3z+TB2LcDVl7YrlVYnXBBskm27fVq8XVjKBxemlLDvJ/5wOGzSq8U6MzSOyRQ
AJIJxsm8wgpuSiRqGEddFFm07RjHXzODF9IZxezMMkTxULtvh0yY41TCmc8eY2DRcvlkdpUAmIpF
Z5VeIU5i/UCx2WlgP/gswM+/XmZaYbaid0TXgkfoErSei2cyHvNIfcMAIMAuG+/SVVo8GI1yLKkX
T2CnJbDo6xAcjpsHuIn3DpftmRlZ1VDjmQzpJfg34gAC9i7Ni3KKTa2ykTMSInFeNR5KhwDXblvd
OlaGGIRai3mersttu+C63fupLDCCIj/edF8/mtHL0NW0SSbsXnr6zFjPCUZC3bL756SChR6JZc38
MTQgtVSk/1RFs7pitBp3qt8LyBdjaJBROuMH1c5TUEk4QsMk/7mhdG6BQ4QT7lISZ0XRNODfEZhZ
S13Cm+1VinyuodOS5TrJDdNjUQjBfuQhp1C3ddhgMzHHpJW9GCIVmTpquYOKVgpSDMpmxbdFttyU
CeDiw0CadB18fkgV39fx3ACIykm/OZknBJDrKJsNFk60wi+eFrSNq2R0hNV2YRbaXKUAmY+Fl3U7
Oip6tVN1ukTmswBw8PQkE955d3Av3I3D5dTJ3OTK/Phqkcf3QfZJX5aPGUwHqsfcd6wKZgE0UHgl
zy7tNJQDCNw92EphrO5bPCTKQ8WY8VG3q5Y3HHpd5fgh6gX6YpPwvQE/v3//a/A5XS7fqQ9/rWbA
mGfPMD1EysGG26UyOzivOltGoGJEDEmHNm3mpQ2BMAIwBOrOssp4XwQPUI2yCxWpravtuKB5V4Ye
K6FXZ8yL8jtGsIBRWAR5OWDFQ/b5VxhLlORvwYw0xzYIQ15c8pWy5dSKyk79VATr1Hi2ldSEYsZc
tLyBvnsY362s0C8cGRaLJIfG6VFoU1p5/WQnEJNLEFnsUgx+TGQt1wLj/aa+Djwhtdb2U6R2TGKb
MQl8MhGqVxRj9bLUj6UnfypT+mmZFA+Jcle0YGX5Agq/K79z2xxUlDCUemeUn75o1G/ct3uuBRpw
2irkgK4qH0BBIKP1RznwRjGhxZmqnq6K5LQtAKVulVpC10DCKgsek0Uav1CuuQmtR14DEZqCoMJw
MNLBmLgeOpTCN1OB2YDrBkYKBkmeZ3k92bY6ieomqwOStjnXhNLr4Z0iRRkLFiEgV0dIoEPUSl1W
k0SMZKFhbeT6GfUsgBIED2jSxQPF35s4TzDSNte/9Ievy5eoevUmy1+25jCTiEHoC9Few2wvhdG3
eay8q6RTcsSwFiMd/6wP2Xr5Spl28dNLxSjDQjhE+JqujYBYLo4hxY7P5IB20lNQK2V1my2eDqpJ
WQ0DghC5spvKxjop8VXdVXYRCK9O3VpI4S6muvpL8H+QPq6zvCyes2Lzp/nSbPlGMBLkyi8pGw/p
EK+hSpa1xsnvu1UVXASgtnF/KwGGX5Wdo7DcK9xaUM6cUAn6LkgMCwo8IoXCsCARI1IojQtG3k9c
WyxD5rZQX8pCA2WUj7hgZGIllf4WbPLVVY51rc5Da7YnDQGW7VoNQOutPOa2McO2YRaF463IDSty
JsdbkJr0JhtkIewBmm/y5csXL05TAVVkXEjk0auui3tgcFWd0Suf1ol54iWeEXxFcS51ND4a3Wp+
DTRoWQSVZfS6Jq7jIfyKFOQ6T1elxTG+2pDKnVL6RpoI4R5MDyhiucvje9tAAEKkW/6vZ8VTlWJw
qlE4myu5yWNb4NNPbVhH1VYzLzocKWrRuhCMUQxOCPIse21+YiRnTuUJZzbQLBqIobFtiA5+VhaE
5NcTsVkFD+qn1BFYWKLJmF3TzZR9THT1tkVvhPx6iCmtySscXREVnywhtCHOhX6ej/GnuDZEmwEn
qydAFjGXFHPUb5L9RVlZNu8TudiLoMcWcRkrBZYqZhVmxAnuGN25GCvOGrRl2Mdl/k+SZ8EyWd2X
DwZ85AAGHfhexuBlcX5BiXiYHt6jVIRJqJSiF6SCNSpJvyoXHLrEWG2o70UZl5tCWYCL6rV5tjRh
nMwYGaQo60ach7h4aNDIrfkGDmffBdvJDAC/Q2RRD5nbvvGStNKdmM6wU6bYaXW2tzpY21Ke71p1
qbuCgWsTMYvvLc5B/7iEyZ3WJntrg3nNh+RztjPd1f2a5WmZ/mOdg8YkVf9OI5AU7Q/UrKBs/K1d
jTmqQ5JlnsSPxokMtN/Y9x51j1spP7iMq1gv6jf5wQtj28M7RUTOwVh2fvXiWPcXCYYv+eGP1vth
Enmwl2GEqO58M8MGihmRU2kL2sKJZZydQagv4c50rp+kLj7o8+zM3ZaEzDoxEVMO0JUTyYVsQdBK
dAVHt6vYTlJ0BsEmA2yMaujjf2/jxX+zWwhIFYYOWbgEcYjYtWxOn9JT4dLy6yDnDLFWsJwxdPms
7FNcKiXxLXqvqtettUSIrsEmsZaQDamzOpFTZ0xs+ikjpWF4FVe1tXxUMn/xF0jhxGWZp7eb0hwK
YT3HlV6IcjYzzW2OkzWlDPEzA5AGlmHohvd8CTeZTd5YiL2yLjOCkLg6htsGynShTn2m88ibNSCo
G21QEdGZE4D1eS9I296I/5F3Zc1tI0n6fX8FX9pPhlT30RGOjrF7enY3ZnY2omf31UGRoIRukmAD
oGztr9/KAniiQBYKB8WZDrcs0RQTVZWVd36J37XZdKENkNN+mnPrx94035UbP+Bdy7ELhViMyffP
shfKoXBPkOZep12V+Eh5Z3K4sfIKM3oHOuVCmRJTgVGnRWpOejGFRFE2i6qHdQadEMFhae0Tywhw
8W0LaD1FVdayVjAnjYPEuSQAeT5OUxwnnOK7UWUNCXx2w1qEvmqDeEj/cdM09DLR5WRFy4POYgWi
jMBrhwmdn6ANxk/2rlXk7SauIMLwDLis6+LDIlnGtv21emeFuPMl3RqZ70z/U07vQWddLpQSWgTM
ODubbQZNxK9xlizeope3pyyZQ5HjT0kRr/JPEFf/8U/Y2L5cyB/kl3O5BiiDaqwGMY4G6eUgzQ1i
WA5H0NUgRgdPTJzF5CLbSIEHJ3rSbmSJ4gHP0tW00qlG+BpBVyMQHabZjzT2ARE94Ja6ugupxsMR
dHUXMkKGI+hs+usyuPUaQVfTH6ODrBCXIg45ZdwdxBubamy14h3LyKGxwGi6TQQWhH321qYExgzd
gQPUVOErO+GVJhbreZHEWSNmnsIqTBjeJELQ2EhKOhrR63Qd9eHBiTBBf/PYQdPGavIOLo9vaSxX
gYnunYxO15b6K7Sp2I0qgN7C0H5xIMojo4AmEvHumt3R6OguK4cvEvXtLzYyf6PPSJgKGxrZN2u0
KT7GLavlOvtjH+0Ln+0LbveM9HeYMKDx6zotvtqTrNkSbMJYB5N3M19EsOdJdQo7AM28CcqZBA34
HnCzsWrbk37+SN8yQ7nJHoFvouXUPPQqnYPKnVcNNSUi6UOx2nyAJ/xUPbHSqI6bQXlLF/P8ES+a
TB6P6Lg0QaNh1znU+KWZ4crV4zzJZ+l6DYAB5seoMKpn32yUrKNSpx4qwpySDyneGru9/3iKUYca
dwS9PrPJjMiaLl2VTTAkAnHVL7WmBBehhvc6uRp15rLMZ22OhwfbQ7G0b5pukkfzwtlvLox1ZeHb
ixSGcc0dtjyGP/i2UuXjdRbhUOXS7dAugbszIrrcxyPO2L3W3OjOxC02+8tBQmLnDkuOBopWH3uT
baPWMIu4Zdqw3LDvqyWM06qe53z/4tlL6pj1DJcBK87DUmPWsIJubCOap09Lowhep8ttXPbX2xzS
zgQrDS8jpRtNQcyhLIKS93UvPVlJSR24hYdn31fM/xS6rR/m8WK6XdaDF0H1QEGVR0Fea0ihDguJ
9J5uOAf41BOFyat8IFV3wIUfu+sYJTuasmcrtUv0UNUlqxvZ98G22H1CH8rm2k8YOR6ShHQnVQj2
ewyJiCLstAiFmAhEezaPzoc8SFv0qfk/I1u9p09xuMaC6rEqIYx3PLyZvassIqOobHcBIwNoRnEL
ydFo5FeShOwkCasLEnMN1c2UdKNuDqoEPUi3c6ycHYCS4dV6G6uxsDBl6Ia7MF0WMO21iOv7EJKg
vrAPhh2e3fyrBZ8QRYfE3cQO3E0yJEilM+vHiR6paIMQMS6qL6VyXFTfQVfoKmVoO90jzFooNSn6
k1W55u+6AiWay3ct6YnDZqRYsHERYSmR4wLCEonGhZlmiI0LM00pGxn9maBx0Z9pSFmGw7MhTZ4N
CeFKm7Esv0bzdLYFaD1IX8IMO6c9KM0ntJ3dO5KUwPySmOA4pI+t3JnDM7waqz1tGGwMoy+0OWfR
nUz5s03H1MlIhY1d3mWmcbLO48yYj+Z8d9PPSytu54NETi6TXIdV3XmasOeAIdaE5S1bjsJ04/Rp
No9/QD8vnl+S38zfdd3ISEsL60qktsTDAdChQ8y2ntLhbMKD1A0Y8RY6o6wPuNDKAFlF2hJmpKcb
XSUtdvd3HxpijvsrcMgUy1K+nd/fSsBF5i7Mft+LO4jqV99/uiARP9gAf+myb9gHAJH9ZD/20fxY
H6eqjAMtpBiqOQj8sfo5B8FaKaVv85AXKo/MLxF3i1pQ+ZZDn9ImfUpvdWaepUuQzmlb6xkYZvz8
5ec/G6FofIZf/vLv//Gf5bcO94EMNm7iypa1KumR9D3JOoqQy6kJTjKVOArGdigiG8CMoUTsOcpf
nxtAcozlqMhgOv0cLwl0OqFBqb+OqhQGIQsubn/2cOL7JAh3Hj9BVIwWEeCf/+uvP/Cfy7BA9YO5
WWvzq8XXdfxtmazjvDZl0Nx3pMmA1VFg3Uf5MjH3GQz+Z8PI9k3Xq6JgFrNEqGvks7o+X5Jstjyf
5V2OY9cTEYI4flOjRFhJfYePXdlSXCjci+KXjYpfDmQMP75Os8dFupzHWf4o14+5IDOCXzjbcKaX
s82avyJMVjMjEtDz+vEfj5euQCVLdoKE14UIE6NUPpWuUyU3Sv+pjRBhSHarAynS7ewlQIi4AKDQ
fR88s625AtLPaLia0FZ7quTQqj7aPZgL7M2CDbLBrJtz1D+wbhjWHcLDu/zSdLOx2zybrh3LIpJC
qSfWVPcBGnue1KoZiRIkIx3N1ajkR+lstBEmFGvWg3L4LT+oqz2SN4ry2DzD3N1mwfCEo1uzulA+
q8dtnIaL0KuYYD2hXrbEOdGzYghgP5AjWbqK7L9V1d4VY0JwMlnveqny7ZP9xokdTVoPAuibUz9e
sa0/9sHpXHgVZeBLBu6stGzNKdcsW2Is2wBe8o8wOyORhiz3imjgPuphOVEQR9esO/tmhl12nDt3
kNLgkQit2lPyk03ksmyCRh4auso2V9MtJBT2zGDifj1+BnCyXsFz7PJ0bFDp9/it/CYy30Uvyzya
xrlZkrvDjeAJwziQYMs0E+q8rny7gcFaDhJYck/oip6PLIJ0RADZFtLbUXXqB2HbN3cagUcRDhXi
i2WJIxP5ZXk01PGpAJXhHZ4tHykpnI8UlJDASNzkWLD0yoQMu1EhSRFGvPo1+94xMBiCjqrTrRXC
a2bvsKfUIlfT1tDo5WwoBzQ8dPN9apWgUXT8jeJ0IjFmoTr1QM6YCAcNu8nS56/Jeh5/f1jRrap1
UBp7lwaa8fnLdFMVHZXhFxe2BEwYZWx0fYp13xsJXb/ooTg3VKTmgkKoE3VqRC0jLhBuKWBmBfC3
jXQ9PDyWfxZTw1J2r08SBMmszOusklX8D4hd27f8QH6pkj3L5Z+KT4wipMqffkmzmi/HlcAKjDpO
0eiWj9Qa93xSs+xtU6AH822tlWBC9A3sLCN4DWGJ9ejXgEvRyYU2Xla23RTG+bqAMC0lm0jKOxA6
7u+tkWxq/pbCWBu6F6pVdvSnOvVINfQz47FiBJhD+FMJMvRKhXOlNMQQdWmHi2E8W9UfFHdpcT/g
KX7cp8mPzIt0vcOR+dj0nn0PoSN9xBge55JRzEa8ZGXrFxNqzCtWEaV6TG6vJr5rPDRR7b5ifPC7
jd2EEbvNjdvfpsb75guvAWKjbfi/pzCRsdXZ0OdG3dqHoqEJswZO5UMT5m7CUt4kEkgHv5mkl43u
yUwFJ2BwnpZunkb47mRRu98gTvGFlWY3iHJzKMHCPNzzz+L5McjdaluUeSDzRLN0nRfZdubMsDHo
Ewq6zT2cdfO59HKUWpHOGdHmra0nSRjXwrNvrWf2EXyieHj+57Qez2nvYiQmnN1gaZjiCVEqCK9q
ltk88wkD2bb0bbFQ0Lhex+OEQluQu4QKrm4sAeu2lWh7VU/1gY1q2bTt7qVoDrWXEIbdXoKkVYJ5
1oQ7+QvCQTZRasd8JU/LpHgzlAFY4ynOI5vbdHIdoqx1iOhCZWpZkbrNYyM7gNH3Yb1WvTtMKtqL
UvY7jqZpUmISxqHdRY0x8cm/pHFAMNNqlKN/SrfrWdw4yZgwPWGKd5P3Ffjrr/avz9sFkJ8+pTYZ
O52//Vo0xD4IYyLMSf5GZ8dluob9jHZdwwzbmi5VRgyLsGjHAHfflsj7lSX7LjmL3ZUWhAvlOScO
N+u7g5aDA6yrOWPiI0Dr9GuBHmODK+FK9NDZqUOJeoBIKCv1fpAAVWW+Mi6cuFOyA+N+e0kgAFjX
PlTCiEqNOhkAZqGRcQiKJjuPYj7hQvZjNjvQ4IkAiEvckxA9Xk2TnrQjN9RQm1bFKjm9tUIsS0wp
l/rj0O5W4G+URa5fP3/98vXnr392lGpLKYfTaKv0taFkWVk8jpFYchdQF+/I4z5CzOCXsBi10qqf
3PB0O0/SmgfgKIjgUEqEaT9Un5LNU7q5UoKBhe9MoAuMuFlO36K8MHbUyujF7fp3KJ+fvTX4OEbi
9lVnUi2xqTiCYgzFEYTQ9xbwOW9iwtIFRtWHK3i2Tbi+TYIb73/C31VULNCF8dlWLGVPF8zQWCb5
y2N5sTc2Sua6YtLwIAoJdvoSnU5n5/a71OAzifcX6exkj3pdG4n/SVe9X7Z2aSsUUipxFrCyeqrI
YEZJ9DKtXnAiIRHsCfTUKn7vDtlLmMkZuja7mvJr9C1+ei2KU6hOJ9CTVlA2Kul95wk6CtE9uzHi
kqJIjNPmIf4VYm+Nv3KKnEGuoKZIzXn3Uyl/Bqs+S5eOYBUlUFEoB86Y1mS9iws1wn2a6KXocylx
QdREhqcEQi1zikY1lIduPboCce5z5IgoOp5VLIi+6Y4MBB2/A2GiFwHnmPjXXbxEqAfnP4+z17hy
9+tF9eZP1ZBYBlAec+hun8UP36avZfTYSqVH+LF6S1Q98jr9YBzsyMIAvcV5LXqPdR+35EaPjwlS
AGHUNv5yX/y3jz1R4lLkIZIfjGtonE8gKjddJs/rCJB5oYe+6lk+NCe5DV+MtZwEda+0bSY5DaA/
Jb/H+cPTanPeSvJUAr7YRhJ0aCJB9YE8mDIL+dOrE2TNsdjYaVWzaUMSAU/I0CHOm/Kq3HueLjXR
KZhsxxnu++IW1YhMayXvGu/KOcKN1RqYcuo5cOB6RLvl4zRkYbgEIK1eHijf2ioSyxvrtADemKdr
Z6ZaqglR9J9ZZasLgR/MMQoaNT/bJZChm3MzzXMXVIYtkjJMpgbqJN3XRbRjwH1/6WFeqAvWi7yz
p7Zt3DB8F1g6Oh++C0BSlILzg+7xuTFiQbZXnk+fAZZqlqUwYya1z1a+HJcTpmHwjHmEmVsMErj/
IVhE72HL8J0eNSf3+dyC3uVz45AqsPfw3IQMbc5fBipD3FjH6k4PnaDe5amN1bpsKGkLPu/U/1FE
36c4Iuw+OfNe1ZaSd/ncTN2peSPvUvJqeafbLe7SKtPqPo1J3Anm4/SRXpqCPEwy493Qga0o6vas
zGcSMbLlWd+XA5hUg6cvBZF3arloKm++vSVU+dWgILw3akT7VIIDNJscIBp5RLip+ptPGGXvhk8v
BaVwT3gXbbaoql5n+N3fZEwJG2KSt2OUt/EMgwKE54DtED0tGoCNjQHEJjQkN1PHan9Knr+u/nD1
WrTu4r+kiHZ4w+4sGQwNkmoABt6TbbjhMEKISj60GrweTCDspnJmt0++QnsPH10iqDuTn0QAJCHX
95r8RBy9iyPxEP+KaTHg7alUwGk7L0zUjCaaoX/78ceAMNIRbLwroGTIxsmr0ySgGrWGFxv6bBoV
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
AAAAAAAAAAAMABwAY29tcG9zaXRpbmcvVVQJAAPbF1JW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQK
AAAAAADOW3ZHAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL3JlZ2lvbnMvVVQJAAPTF1JW6SBS
VnV4CwABBPUBAAAEUAAAAFBLAwQUAAIACADOW3ZHWTYICasAAAAUAwAARQAcAGNvbXBvc2l0aW5n
L3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItY29tcG9zaXRpbmctc3RkZXJyLnR4
dFVUCQAD0xdSVtMXUlZ1eAsAAQT1AQAABFAAAADtj7EOgjAURXe/oiMOUFuCKImDEk0cjCSMxJBn
ecFqpeRRTfh7MQ76AY5s507nnkKIJJwlMg4iIU9MO7xD1zeqzNFlZFsk17NO1w0YgxVDopUvZLyI
mHfb6XoDHR7PV1RuS2Sp3DdPMLoCh9WUefp3gWM8tw9SmIK6IE8t4QErDV/yRTSXgQwXfFA76/oW
O54Z6JH4IPtQuX7/CxQzukEm5TKcFGPEGPG/iBdQSwMEFAACAAgAWGB2R3pG1GbBAAAA8gYAADwA
HABjb21wb3NpdGluZy9zaG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVy
ci50eHRVVAkAA2gfUlbbF1JWdXgLAAEE9QEAAARQAAAA7c+xCsIwFAXQ3a/IqIONTVtNBQctCg6i
4ChSnulDo7Epr1HI36s46A+ICt3une49m1AMe2IYDwIZp1umHZ6h9qXK1+hWZCsk51mt9yUYgwVD
olE3FAOZsPZppvcTqHG5O6JyUyJL+by8gtEFOCw6rK3fGzjG1/ZCCjNQB+SZJVxgoeGVumHSF4GI
JL9PO+t8hTVfGfBI/D72TPn48S9QzOgSmRBp1No0iAbxEUQSvSMyW/m/UPSkbBQ/qogbxVcVN1BL
AwQKAAAAAADNW3ZHAAAAAAAAAAAAAAAAEgAcAGNvbXBvc2l0aW5nL3ZpZGVvL1VUCQAD0RdSVukg
UlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAzFt2Rxj+V/2wAAAA3gMAADAAHABjb21wb3NpdGlu
Zy92aWRlby92aWRlby1ib3JkZXItcmFkaXVzLXN0ZGVyci50eHRVVAkAA88XUlbPF1JWdXgLAAEE
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
2erAYCGqnzU1PpOw+oTCI9zfaW60XlAsEJNehj+IAtx4u9Y0OVcIvI9LuWPus2XnXasTtznHHl6z
aSW6i+lWLXLpbw/1jaD33Qg6p04Kj2FjdWR4cACMkj32lrcFQB5ngvcAmQHysStJD5ABIN8WknX+
05bliC+5ASCfPb4OuDkkPmbYMz5BKQyQEM/r+0i/tz7SxmQIszFzfWHaYuG+0WTcvstvJZwQYIx5
v4dzIzgpsWEByShbt1ttWKm4HD+2BsEFJpww7PaYLDBhwmYe1NtrT6vYaky8S+fFfdPk7TYSduiR
HtuWnofRNAm6Sl23ez71BN2sLe7apsn/A1BLAwQKAAAAAADqW3ZHAAAAAAAAAAAAAAAABQAcAGZh
c3QvVVQJAAMIGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAADgW3ZHAAAAAAAAAAAAAAAA
DAAcAGZhc3QvY2FudmFzL1VUCQAD8xdSVukgUlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAZmB2
R+pmddmGAAAAGgEAACYAHABmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVU
CQADfx9SVvMXUlZ1eAsAAQT1AQAABFAAAADNzj0KwkAUReHeVdwNGDIJiAxik4iNpFA7sRjNBQOT
9+RlEn9Wb5Zheb7qNDqhKOAKn5feOfA1uLzMot5DRD32zyOlpZ2NvLiVW+dXbHZmaluPal+pJL7T
ienQCeswPDw6mULsWrRzIZiFj0dIiAxDggrByJ6S0I8z3AhRWX5pmi2af5r5AVBLAwQKAAAAAADn
W3ZHAAAAAAAAAAAAAAAADAAcAGZhc3QvaW1hZ2VzL1VUCQADAhhSVukgUlZ1eAsAAQT1AQAABFAA
AABQSwMECgACAAAAbGB2R1GnghgxAAAAMQAAAC0AHABmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWlt
YWdlLWNyYXNoLXN0ZGVyci50eHRVVAkAA4wfUlYBGFJWdXgLAAEE9QEAAARQAAAAaW5pdEltYWdl
QXBwbGVKUEVHOjE0MTY6IGZhbGxpbmcgYmFjayB0byBsaWJKUEVHClBLAwQUAAIACABtYHZHIY+9
ODIAAAAzAAAALAAcAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0
VVQJAAOOH1JWAhhSVnV4CwABBPUBAAAEUAAAAHPLSSxJdUlNzk9JtVJIAdGZeekKqUVF+UVWCpl5
yflFRanJJQopiSWJCskZqcnZelwAUEsDBAoAAAAAAOtbdkcAAAAAAAAAAAAAAAAJABwAZmFzdC94
c2wvVVQJAAMJGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABwYHZHcv1l8oUAAADpAAAA
JQAcAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA5QfUlYIGFJWdXgL
AAEE9QEAAARQAAAArU4xDsJADNv7inygZGC7GSbYQHRO21SclLtUuZzU/p6DfoHFsmzL9qRpjUIe
NQObqQVYovAPAiK+VGrighdywuvwwIHHW3S8067Vn1y84ELFcSuCxkWrTS2+va2fdTo1FSRmhjOw
cOLsENOq5l1zwkEhQM00tlFXEKX5T+P9Uc/z90X3AVBLAwQUAAIACABwYHZHzgkoAo0AAADwAAAA
JwAcAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUCQADlB9SVggYUlZ1
eAsAAQT1AQAABFAAAACljjEOwjAMRfeewhcoHtgywwQbiM5O64pITlw5jgS3J9AjsHz5/2dbf9a8
JSFPWoDN1AKsSfgnAREfKi1zxRM54Xm64cTxkhyv9Nbmd65ecaXq+KqCxlWbzX29Ox8jLWPKm5qP
zdKhZyCpMByBhTMXh50OnYR9hACtUOwFXEGUln+LFK1tfn6f9DuR4QNQSwMEFAACAAgAcGB2R8+P
Zg5QAAAAoAAAACQAHABmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAkAA5Qf
UlYIGFJWdXgLAAEE9QEAAARQAAAArcyxDcAgDAXRnin+BlHabIPACEs2RpaJMn7IDmmuu1dMJ0sO
tgFyN7/QWAgQHoQTJKQ0ArZirkg87ixcsbsIzRxK0a3uyyyVv7Cnh8rxkS9QSwMEFAACAAgAcWB2
R4FKd61LAAAArAAAADQAHABmYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFz
aC1zdGRlcnIudHh0VVQJAAOVH1JWCRhSVnV4CwABBPUBAAAEUAAAALXMsQ2AMAxE0T5T3Aq0bOPA
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
aHR0cC90ZXN0cy9ldmVudHNvdXJjZS9VVAkAA5ofUlbpIFJWdXgLAAEE9QEAAARQAAAAUEsDBAoA
AAAAAHNgdkcAAAAAAAAAAAAAAAAfABwAaHR0cC90ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJzL1VU
CQADmh9SVukgUlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAc2B2R22ODreDAAAAGgEAADwAHABo
dHRwL3Rlc3RzL2V2ZW50c291cmNlL3dvcmtlcnMvZXZlbnRzb3VyY2Utc2ltcGxlLXN0ZGVyci50
eHRVVAkAA5ofUlaaH1JWdXgLAAEE9QEAAARQAAAAzcyxCsIwEIDhvU9xoy7SJCgSxKUuDhbBQUEc
YnrGg3AnSVrx7Y1v4frz8/UygdagtG2NNWvAd1atWUTxLkIqPuFLUiEOV7VSS3ODzQ7vY9hayMjD
AXN2Ac9Unp0rGCR9LMx4jHHe9H8oE1P5kaeqk/CeH2LhcuzACzP6Ult9JhdpaL5QSwMECgAAAAAA
7Vt2RwAAAAAAAAAAAAAAABYAHABodHRwL3Rlc3RzL2Z1bGxzY3JlZW4vVVQJAAMOGFJW6SBSVnV4
CwABBPUBAAAEUAAAAFBLAwQUAAIACADtW3ZH03NBwssAAAAHAwAAQwAcAGh0dHAvdGVzdHMvZnVs
bHNjcmVlbi9mdWxsc2NyZWVuZWxlbWVudC1kaWZmZXJlbnQtb3JpZ2luLXN0ZGVyci50eHRVVAkA
Aw4YUlYOGFJWdXgLAAEE9QEAAARQAAAA7dI9awMxDAbgufcrNLZLuA8oxJQulyEdEgoltBA66GzF
MXGkYOsS8u/j69qtXTp0k0A8L4J3LWdoW2ga0zWmfQS65KbuZlEsRkhqE50kaWC/nXfdvP6EpwUN
o382kBWT9sK74MeEGoTfg+57OZ4iTdsS2UVKBnq0e3JQAzEOsUwD2gOxy9X65+Gkm0zphXeyCFbN
N9vAfXX38KsEdivKGT19/YVKXtK1uDzG+C//fTlw0Il8K3rp49QVAx+vPVhhJjt1tNycMQZX3QBQ
SwMECgAAAAAA9lt2RwAAAAAAAAAAAAAAABEAHABodHRwL3Rlc3RzL21lZGlhL1VUCQADIBhSVukg
UlZ1eAsAAQT1AQAABFAAAABQSwMECgAAAAAA71t2RwAAAAAAAAAAAAAAABoAHABodHRwL3Rlc3Rz
L21lZGlhL2NsZWFya2V5L1VUCQADERhSVukgUlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAdWB2
R52bdOBQAQAAfwMAADkAHABodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L2NsZWFyLWtleS1obHMt
YWVzMTI4LXN0ZGVyci50eHRVVAkAA50fUlYRGFJWdXgLAAEE9QEAAARQAAAAzVJLSwMxED7bXzFH
e1l2t7XFKIU+RAVbCqV4KB7SZHYbmk2WZNLivzfrqlS8WQSPk5n5XpNNlrO0x/pZkqXpC9yu7u6X
6/lyBGMirGpaIB2t28+tUWTdCinUDIwl8EikTAmhBtPOQNUO3QCX0qH3oDxoK7jubE5Ysj9jWdgD
5Dl8cgEefZb2kvcmOBIOa+sauE02yPrDqOPRFHbE4npZNiyeuCOfJMkvoGa4DWXEiornURUv8alF
ncSlPYO4qFGeJpEN/1ESX/KbCKbWFKoMjpOy5lnRbmqrWmNTPXAjNToGUy52KCEFNHwbncGWiz0a
6c/Lbu3RNVeZKUHsBzaDy85F9zTE3rcQPZbLUNUz1OqAbixEqILmhHISiqJRnTKQbROkap48FM5W
4JA3XiztYkdYY1BQrIfXV4NefpYjIz++w3uOUUtp3Wv0YYLW3c4bUEsDBAoAAAAAAPJbdkcAAAAA
AAAAAAAAAAAVABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQJAAMXGFJW6SBSVnV4CwABBPUBAAAE
UAAAAFBLAwQUAAIACAB1YHZHSi11lcsBAABFBQAAQAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hs
cy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAkAA50fUlYRGFJWdXgL
AAEE9QEAAARQAAAAzZRBa9tAEIXP9a+YY3MJli27tVoMjtK0hcgYTEghlDLWjqTFq111d2STf99Z
pwEHHwoxLd2bljdvRu8bael2MBpBMsqG4yxNgPYhGY4vjSvRgOfSU+c8a1s/JNMkffcdPl7Tpq/n
GQSyqqAQsKZ7zU2OTLXzjxm8tb0xF4Plq5211Rwt1+Kunf1qK5fBt1UOpbOWSpY70ezQaDV4ePa/
HM8m4rH+9Hl1V6zmsGCmtuMl8d75beHE0/k1cd9lYB3L+BybQ9+BfdJA+yT6AKiUl96gAxzG/Udd
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
r3Z17Q67KDRWpyduco2OQcbFDHOIAA2fhJfBhIt58JT/Xe9GHl3lmK4SxL6wgztrF/XjTeds+/b9
X7azdNdXp+mZo8/9kN/+n3ws8idQSwMEFAACAAgAdWB2R0QfZWfOAAAAkQIAADIAHABodHRwL3Rl
c3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXJlZmVyZXItc3RkZXJyLnR4dFVUCQADnR9SVhEYUlZ1
eAsAAQT1AQAABFAAAAC90LFOAzEMBuCZPoVHWE6XKypShBi4Dq0E3RADYvAlbho12FXiA/H25ICN
CR1itCV/tv+dvELXgelsu7SXLdBbMe2ySeIwQVaX6SRZI4cnszKrq2e43vJebiwkCaG2oShmLU3T
LHa/ptY0jKFahfSeSsFAd1/qbR06WqiDifwceDquF97HMGbUKPwY9dDLyynRVG2QfaJsoUd3IA/V
ZhzqThjQHYl9mffVQ6E85bWOTu0P28L54uxi1gb238F9/oVKQfJ7dXlM6f9k84fyB1BLAwQUAAIA
CAB1YHZHbU5TyOEAAAAGAwAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3Rk
ZXJyLnR4dFVUCQADnR9SVhEYUlZ1eAsAAQT1AQAABFAAAADFkUFLA0EMhc/2V+TYXmRnKxUG6aHb
g4KWgoiCeMjOptOhY1Jmsi3+e2fFmzcX8ZiQ973kZSMnqGswta3m9soAnbOp5pdRHEZI6hIdJWlg
/2oWZnH9Bjdranu/tJCJuwfKGT09B903qOQlfViYch/jbLL5NTlw0AH5WOhB+I53YuFl24ATZnJa
emXmhDF0I1wy6ff69+J9mVgV0cFCEUYaBVZM2gjvgu8TDtt+5SPvx0hDdYvcRUoWGnR76qACYmyL
J7ToDiXVPO6qp0xpyGwdnNof7PKfycVslMNf/f3/yJ9QSwMEFAACAAgAdmB2R2xnKmnpAAAAxgMA
ADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVy
ci50eHRVVAkAA58fUlYTGFJWdXgLAAEE9QEAAARQAAAA3ZPBSgNBDIbP9ilytBfZ2ZUKg3hwe1DQ
IogoiIfsbDodOiZlJlvx7Z0Vb57q4qXHhOT7kz9kJXuoazC1rRp7boA+sqmasygOIyR1iXaSNLB/
NQuzuHiDyyV1g7+ykIn7e8oZPT0H3bSo5CV9WjjlIcb5bPVncuCgI/Kx0IPwLa/FwstDC06YyWnJ
lZo9xtBPUMmkP+Pfifel4ro0bS2UxkiTwIpJW+F18EPCcdpvf+R9F2mMbpD7SMlCi25DPVRAjF3R
hA7dtriap231lCmNni2DU/uLXe4zO5lPUvivux9Gbo6cfMgXfAFQSwMECgAAAAAAAVx2RwAAAAAA
AAAAAAAAAB4AHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9VVAkAAzEYUlbpIFJWdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAHxgdkdA5Wp5TQEAAJcEAABCABwAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXBwZW5kLWJ1ZmZlci1zdGRlcnIudHh0VVQJAAOr
H1JWHhhSVnV4CwABBPUBAAAEUAAAAM3STU/CQBAG4Lu/Ym7IAdptaakkHgQkkkhiBL0YY4bdKWzc
7jazW7X+ekvix4mz3CaTye7zTuZJJJM4nWRiKMbFM5SMuxVaXTqjXu4av5+2gTx4vbNoDCkg5suB
yONRDuevC/07fM3s+OXB0kdNMpBaWh3mGLAP52uSzirolaGte4DBVUBWusYGYlL9rgPR2jUsaYZy
T9HMMa1IafyrBiLLk2GSFtEdu+C6h8hHC8cVhhu0yhD7aOXeNEUH0qFYdEEqsuHHN5RgtCUQeRqf
JbHIBkIMkgS+44+G2XgE86aq78kq4g0TPYlcjNNJkoq4SJ9hubOOtd1BlyawMxtd0RY9gacA2xak
0d1/sCWJTde9elxjVRuaNmVJPNe+NtjeYksM7+gBleq2GRwg+NbKPTurP4mP0MYnSyvE6dKyk6Vd
JMdosUiL/6WdxK19AVBLAwQUAAIACAB9YHZHc+Ky0TwBAAB6AwAAUAAcAGh0dHAvdGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtYml0cmF0ZS1z
dGRlcnIudHh0VVQJAAOtH1JWIBhSVnV4CwABBPUBAAAEUAAAAOWQzW7CMBCE7zzF3oADJE5KoEg9
FCgqUpFQob0ghBZ7E6w6drR22qZP3yD15yG4jUaj3flmL5JpnE5Ho2E8SQ6QMxZrtDp3Rh03tT/P
mkAevC4sGkMKiPluILL4JoPe21L/hR+YHR9fLH1WJAOpldVhgQH70NuSdFZBNw9N1QUMrgSy0tU2
EJPqtw5EW1ezpDnKM0Vzx7QmpfFfDcQoS4ZJOok27IJrD5GPlo5LDI9olSH20dq9a4oulS5i2YKU
ZMNvv6EEoy2ByNK4s/+Hvo2vEXp8LdBJLEYDIQZJAj/446EQE1jUZfVMVhHvmGgvMjFOp0kai3Ry
gFVhHWtbQEsT2JmdLumEnsBTgFMD0uj2H5xIYt26969bLCtDszrPiRfaVwabJ2yI4QM9oFLtmsEB
gm+sPLOz+ou48w1QSwMEFAACAAgAgGB2R7VX/Zo9AQAAegMAAFIAHABodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1z
dGRlcnIudHh0VVQJAAOvH1JWIhhSVnV4CwABBPUBAAAEUAAAAOWRzW7CMBCE7zzF3oADJE5KoEg9
FCgqUpFQob0ghBZ7E6w6drR22qZP3yD15yG4jUar3flm9yKZxul0NB4mWXyAnLFYo9W5M+q4qf15
1gTy4HVh0RhSQMx3A5HFNxn03pb6b/iB2fHxxdJnRTKQWlkdFhiwD70tSWcVdPPQVF3A4EogK11t
AzGpfutAtHU1S5qjPFM0d0xrUhr/1UCMsmSYpJNowy64dhH5aOm4xPCIVhliH63du6boEukili1I
STb85htKMNoSiCyNO/t/6LG4QujJ1Xw6icVoIMQgSeAH/3aYxgIWdVk9k1XEOybai0yM02mSiniS
HmBVWMfaFtDSBHZmp0s6oSfwFODUgDS6vQcnkli37v3rFsvK0KzOc+KF9pXB5gkbYvhAD6hU22Zw
gOAbK8/srP4i7nwDUEsDBBQAAgAIAIRgdkdhhE6RigAAAJsAAAA5ABwAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS1zdGRlcnIudHh0VVQJAAO3H1JWKhhSVnV4
CwABBPUBAAAEUAAAAA3IsQ6CMBAA0N2vuB/A9IqKYdOwmDgpcTEOR3tAk9KSK8TUr5ft5WmFxwKx
0BpQ1+pQq2qPGqFZp/nBwbK0wvzGE1ZlrUuF5fkDtyFEcWEAE8Mi0bdu4o4SQ+IFugzGOw6b2NC6
7eX1pGn2fF37nqVxafaU75RZ4EsJyFq2sEQgSDmYUWJwP5bdH1BLAwQUAAIACACFYHZHvjO4S6oA
AAAHAwAAOwAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXJlbW92
ZS1zdGRlcnIudHh0VVQJAAO6H1JWLRhSVnV4CwABBPUBAAAEUAAAAM3OMQ6CMBSA4d1TvAtg+koL
yqZhMXFS4mIcCjywCbSkhZh6ejmAzLD9+aePM5QRYsQ5IM+YyJDtxTGFfOqHG5maXOGInphgGmc8
ZhiLF1xaY502LVTWjM52he6pVJ7A0whlgKrTZOaiSk3zPT3uqh86Ok9NQy7XfuhUuKpADj7Kg6pr
qmG0oMAHU72dNfpLbsf/0CSLl2hciMO6tONmaSiXaZKtSuPJFmg/UEsDBBQAAgAIAIdgdkeA+PpH
oAAAANEBAABGABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291
cmNlYnVmZmVyLW1vZGUtc3RkZXJyLnR4dFVUCQADvh9SVjEYUlZ1eAsAAQT1AQAABFAAAADN0LEO
gjAUheHdp7gvgOGWCsqmYTFxUuJiHEp7wSbQkluIqU8vD6CrcTv5py9HpLhJEBMhAEWZyhLlGvMd
VPMwnskZ4pqJbphjkZUiE1Ju73DsnGfrOtDeTez72g7UqEAQaIImgu4tuWWRVvNS99eLGsaeDnPb
Elc2jL2KJxWJ4akCKGPIwORBQYhOP9g7+yJeiU+0Qv4v7etrKWY/o70BUEsDBBQAAgAIAHZgdkf0
LRd57QAAAF8BAAAtABwAaHR0cC90ZXN0cy9tZWRpYS9wZGYtc2VydmVkLWFzLXBkZi1zdGRlcnIu
dHh0VVQJAAOgH1JWFRhSVnV4CwABBPUBAAAEUAAAAIWPT2/CMAzF73wKn7i1abtOQKQKITbEYYep
Yie0Q2hMGyn/ljiT+PZLtcF19uU9/Z4t+1w3vHribVs+180nHE+n9x6/EkaCqxpn+5KMPygr9Ef/
trOyR+MId1IGjJGD+BVQN6uyyl3nsZyFFDRMRJ4z9kB8XVUVMyiVYN9KoitoCo5Ioyy0E7IcRrW1
wmCXV7oUBoyM8iWll9flPdpt5lrSzWMnvNdqEKScZTmzOP/7zJ/dBxSEryG4sHfGoCUOaAeXLGFA
CcICzpDD5UYIQdgRQaMdaQKjohE0TFBAnFzSEi4P1oCKd73arNvFD1BLAwQUAAIACAB4YHZHbSwf
/MEAAACSAQAALwAcAGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy1zdGRlcnIu
dHh0VVQJAAOjH1JWFxhSVnV4CwABBPUBAAAEUAAAAKWQMU8CQRCFa+9XTCmNuTvIkWwMBUcBCdAZ
C2MxtzssG9YZsjuH8d+7Giuo1PIl874v8/ZygbaFpjX11Mw6oPfc1NOHKBYjJLWJzpI0sH9puqab
v8LjiobRLwxk0h3ljJ624n25WJbSyUApRnLV/u9gxaS98CH4MaEG4eegx17ezpG+0hrZRUoGerRH
clADMQ7FCQPaE7HL/5GTPmVKGz7IKlg1N2wD99Xd5Mow/5WB3c9w33+hkpf0Ubg8xjipPgFQSwME
FAACAAgAeGB2Rx0Z7ZdIAQAAdAIAAC8AHABodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFz
LXRleHQtc3RkZXJyLnR4dFVUCQADox9SVhcYUlZ1eAsAAQT1AQAABFAAAADNkE1PAjEQhu/8ijkR
PbAffGojGgIaTZQQxGhCOJTtsNukO13bWYR/bzcKZ4+2l3n7vvNkpnO7h24X0q5IeqI/AvzyadKL
jM2kAceZw8o61pSv02E6HG3gZobbOr8V4JHUC3ovc3zXXEwlY27dUcAF1cZctub/kKxJc4N8DXRt
6Yl2VsDHYgqZJcKMw1vI7KXRqrU+8aNBf7CBx9VqscTPGj3DTueNnNVl9aBJmrfl84TUEkvLOFHK
BboA+VOEMUdREm4a2kIWamegYK5EHJ8tcZUkSVyi0jLea4W2w4WzzAZVx1ipoizXdyRLHAekrV2G
PuYwScQHbp+i4+vmtPlY4ZjxwHFlpKY/7PErpw7DT987Z93UliUSC0DKbE2MDhVIAmxMAdsjIzhJ
OYJByrmAUvtSclZAB3xha6Nge/a6oP2p7veTXusbUEsDBBQAAgAIAHhgdkfxNraoCQEAAHgDAAA2
ABwAaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1zdGRlcnIudHh0
VVQJAAOkH1JWGBhSVnV4CwABBPUBAAAEUAAAAM2RTUsDMRCGz/ZXzFEvZT9kK1EKuhUVbCmU4mHx
kN1M09A0sySzFv+92Vah4LEqHkPeeZ53kirNRJKLy9GwyJJXuFncP8yX0/kYbplx2/IMeUd+MyVn
mPwCuWsFOGIIyGychq4Fd8jA9hC6BqmUxxDABLDUSDuojizpr1lm9AZZBl8uwF1Ik3y4vwTPjceW
fI+r0iItRrHHBOtOj0WvmUaU1PhMWsfEXRzaCIiDFtVx/Tz5j/VZei7JrYzuvGRD7sXwuqRta7E/
PUqnLHoBpWzWqCABdLKOm0Etmw06FU57u2VA/+RWNDENi29sAeeDs4uTDE59fs9+L8moyb9Hruus
/Tvy1Q+SPwBQSwMEFAACAAgAeWB2R8cNQGJbAQAAtgMAACYAHABodHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLWF1dGgtc3RkZXJyLnR4dFVUCQADpR9SVhkYUlZ1eAsAAQT1AQAABFAAAADNU01PAjEQPcuv
mCMc2G0XAWmMiS4xmighoNHEeCjdYamUdjPbxY9fb1eMGo0mysVbp5l58+bNm5FbQ5IATwTriN09
wPuSs05knJIGyCvCwpHXNr/hPd7r38L+EGdVfiCgRJudY1nKHK+0X6TSY+7oUUDTVsa0GqM/I2ur
fQ05Deja2VM7dwKuxykoZy0qH/5CzloanTUSxrttztsfOkWDAYNhtSomgSHSBSFuWogkGXRY6LSJ
ID0eob93tAxoHskGXkjkCJrsQTEuRTx1FSlMpVpg/Jb9/mr3ExZ1o348JncXiE0q6/UK4ymSDuye
5MzgIamFXmOkikJ0e6z1DWP+PxnzXufzJge/8oh/tciZy/OQcRSKlgJCocFsG2AvyafOznVekawd
8eJBtyoM1tGJtJlBCorVSmTAAG09WwYzqZZB5XK7qS5LpNqXQ628+IIdbqCxs51uP9/WM1BLAwQU
AAIACAB5YHZHDj0pUN8AAABSAgAALQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJv
cnQtc3RkZXJyLnR4dFVUCQADph9SVhsYUlZ1eAsAAQT1AQAABFAAAACtkUFLA0EMhc/2V+SoF9nd
asVBPLg9KGgRRBTEQ3Y2nQ4dkzKTrfjvzYonvbkeE/K+JO+tZA9NA3Xjqrk7OQd6L3U1P07iMUFW
n2knWSOHl3pRL85e4WJJ3RAuHRTi/o5KwUBPUTctKgXJHw4OeUjpaLb6Mzly1BH5YPQofMNrcfB8
34IXZvJqPZvZY4r9hC2F9Pv8WwnBJq5MtHVgwkSTwIpZW+F1DEPG8dovf+Rtl2isrpH7RNlBi35D
PVRAjJ3thA791lwt0756LJRHz5bRq/vFtnxmBz/SOa3+MfdPUEsDBBQAAgAIAHlgdkeZ24P8FQEA
AD0CAAA2ABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1zdGRl
cnIudHh0VVQJAAOmH1JWGxhSVnV4CwABBPUBAAAEUAAAAM1Oy07DMBC89yv22B6a2u4jxUJIVSpU
JKiqtAikqgc33qQWjh1sJ8Df46rAFXFDe5nZmZ2dte2AMaCMkzGfEsA3T8k40bYQGlwoHDbWBWWq
PZ3RWXqA6yUe2+qGg0cjH9B7UeGTCqdMBKys++DQN63Wg976HyYro8I5chvTlTV3prQcnjcZFNYY
LELcRU8ntJK9/Xd+krLpAVa73SbH1xZ9gFJVqxCaL7pUMscCVYc5+sYaj5nQ+iiKFw7uIkg4RX9k
Fx0mZAJ9dM46GFJ2NZ4PoIz4bOKjEWVpQuJQPieEjKRFPzQ2DPFd+ZDUDVa/lYt02dbNrTJCP+b3
CxMb1jbgQsrYwXMQFwA/r+JZ9ELr9B9afAJQSwMEFAACAAgAemB2R/BjH+/EAAAAJAMAACwAHABo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUCQADpx9SVhsYUlZ1
eAsAAQT1AQAABFAAAADtkbFOAzEMhmf6FB5hqS5X0UoR6sB1AAm6IYaqgy9x06jBrhIfiLcnVN26
9cTGaMn/98n+1/IJbQumtc3M3hugr2Ka2TSJwwRZXaajZI0cNmZu5ostPKyoH8LSQiF9pVIw0IuE
UDcea+hgoQYT+cn6erBi1k54F8OQUaPwe9R9Jx/HRL/TE7JPlC106PbkoQFi7KsTenQHYl/GyEnf
CuVn3skqOrUXbAu3k5u7UQb258ed7kKlIPm7cnlIaRz5v5G/aOQHUEsDBBQAAgAIAHpgdkd2jwh7
5wAAAMYDAAAvABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLXN0ZGVyci50
eHRVVAkAA6gfUlYcGFJWdXgLAAEE9QEAAARQAAAA1ZFBSwNBDIXP9lfkaC+ys8UKg3hwe7CgRRBR
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
AAAA/gAAAFsAHABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRl
Y2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAOrH1JWIBhS
VnV4CwABBPUBAAAEUAAAAE2OQWvCQBSE7/6KOVbQkl2JlqX0YuopiFR7EpEleeqjyW54ebG0v94V
WnCGOQwMzGczk0+NmVoLY102c3n+vDAWxdB2HxRqkp0Q7c082Vm7yO3LARuJHYn+oOFeweHqG65x
inJP69XBZBmeusdZj8qHEBVVDOo5YP1ZluPR/uF1dsBrElbFcnMsuWWlGm9JWPH5rxfcfy19daHE
cOWEd9yS/vM4vIskim9h5XBGHNLdfYwTNzSByhAqrwSN+CWJoxtQSwMEFAACAAgAjmB2RxU1NZJ6
AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAkA
A8wfUlZCGFJWdXgLAAEE9QEAAARQAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLlA9Ve
VjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGe
gIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAeGB2RwAAAAAAAAAAAAAA
ABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQADox9SVukgUlZ1eAsAAQT1AQAABFAAAABQSwME
CgAAAAAA91t2RwAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9VVAkAAyIYUlbpIFJWdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAPJbdkcAAAAA
AAAAAAAAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNl
ckFnZW50U2hhZG93RE9NL1VUCQADGBhSVukgUlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAeGB2
R+UZMC42AQAA0QIAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4dFVUCQADox9SVhcYUlZ1
eAsAAQT1AQAABFAAAAClkk9LAzEQxc/2U8xRQZbdrd1qWIu0RRTqHyyiIB6yyTQNTZOSTCt+e2db
D4o3N4dAHm9+M/NIXdc1XFsz/iScU0S5hhGf39KcJKVZMA8en1BqAT/cfGkIC+hDw2KCK6iGeT6o
gEJYQZ5V5flwUEBClbEEKqw3DglPodiXJhhdsmuwN/Tuww7KEopS5H1xNgT8SEXez1xQ0kEkFXET
Illv3oqqqC7eob71izAS4IIxLEMiGSll2X9QU2y2hlkJ6Q5TkgZnB+qYi1YCuNCh7gJuh5sEv7Bm
GyXZ4F8sLSeHRPh1I712GAVMpFqihhzQy4Z7QiPVCr1O3bZ6ThjbvKZWkfjDFnDcOzrp1MHr7+D2
e0lCE+Inc/3WuS5k6y21yDnTOad2BwGvjxP+Td6jarNjz046q3tfUEsDBBQAAgAIAHhgdkflvv1B
/wAAAPsBAABTABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNl
ckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRVVAkAA6QfUlYYGFJWdXgLAAEE
9QEAAARQAAAApZA/T8MwEMVn8ilupAOVnaJQLFSJpgNIgFCriiHq4DhnJ6o5V7bDv0/PUcHC2ttO
uvd+914jSyVm6nI+lWK+gxseqNe3yw0seMD6MfXPSN1Abo0edcINZgWN+LiybVthW5XCih0sfTB7
ENDrBBTo4gtjgIgWTBgpgyyewhuUJfzhAN+TFLMpy7SHmE3EQ4iZMY2sZHXNr6ywHd1CQcL8iClp
hw/BOb44shSw0GN3inHWMdeB7ODGqPMQ6GXIfR1eDx5/tjtNnceooNamx47TIemWmdBqs+dS0mmp
tgnjPdmwGgxX+t9bwXlxNjmJQN1vccdcOqML8ZN9afR+UnwDUEsDBBQAAgAIAHhgdkcs1NJNhAAA
AMAAAABrABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFn
ZW50U2hhZG93RE9NL2RlZmF1bHQtc3JjLW9iamVjdC1kYXRhLXVybC1hbGxvd2VkLXN0ZGVyci50
eHRVVAkAA6QfUlYYGFJWdXgLAAEE9QEAAARQAAAAncyxCsIwEIDhvU9xoy7SpFI0iEtdHCyCg4I4
xPSMgXAnybXi2xtfwfXn5+t5Aq1BaVM3ZrkCfGdVN4vIzkZI4hK+OEkgf1Wtatc32OzwPvqtgYw0
HDBn6/Ec5NlZQc/pY2BGY4zzqv9bDhTkR56KHpj29GADl2MHjonQSWnlmWwMQ/UFUEsDBBQAAgAI
AHxgdkdjqqxsggAAAKgAAABAABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kveHNsLWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADrB9SViIYUlZ1eAsAAQT1AQAABFAAAAAt
jUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d
48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY5
0o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAIAHxgdkdjqqxsggAAAKgAAABSABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3Jj
LTItc3RkZXJyLnR4dFVUCQADrB9SViIYUlZ1eAsAAQT1AQAABFAAAAAtjUEKwzAMBO95hV4QO72k
+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VU
f/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+
UEsDBAoAAAAAAHhgdkcAAAAAAAAAAAAAAAAkABwAaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vVVQJAAOjH1JW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAB4YHZHHZuEj4sA
AACAAQAASgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9y
LWxvY2F0aW9uLWFzc2lnbi1zdGRlcnIudHh0VVQJAAOjH1JWox9SVnV4CwABBPUBAAAEUAAAAPPL
L1MwMlIwNLIyMLYyMVdILS82NDDWy8lPTsxRKCpJLkotyC8qycxLjzY0MzQxj1WwcUlNKk23s1Io
Ts1L8U0tLk5MTw3PLMlwTixJTc8vqrRS0MgrzcnR5PIj2+TMvMwSkJHBQNMz8/M889LyrRQiApwV
kvPz8lKTS4BiQDVliTmZKRTYMjjcDwBQSwMECgAAAAAA8lt2RwAAAAAAAAAAAAAAACIAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvVVQJAAMXGFJW6SBSVnV4CwABBPUBAAAEUAAA
AFBLAwQUAAIACADyW3ZHWr6fvIkAAACAAQAAQgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0
ZWRXb3JsZC9hbGwtd2luZG93LXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUCQADFxhSVhcYUlZ1eAsA
AQT1AQAABFAAAADzyy9TMDJSMDS0MgYiU4XU8mJDA2O9nPzkxByFopLkotSC/KKSzLz0aEtjY3Oj
WAUbl9Sk0nQ7K4Xi1LwU39Ti4sT01PDMkgznxJLU9PyiSisFjbzSnBxNLj+yTc7MyywBGRkMND0z
P88zLy3fSiEiwFkhOT8vLzW5BCgGVFOWmJOZQoEtg8P9AFBLAwQUAAIACAB7YHZHCnqGr8sAAADd
AQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVtb3Rl
LXN0ZGVyci50eHRVVAkAA6ofUlYeGFJWdXgLAAEE9QEAAARQAAAApZA7TwMxEIRr7ldsmTSne/CQ
rIiCSwESpEMUiGLP3jhWnN3I3gPx7/EBHRW6ckeab3ZmJ+/QddB2punN1SXQR26bvo5iMUJSm+gs
SQP71/a67W/eYPPAe7k1EMX7IkNWTJrruq52/0ZtaZx8YWXSJ8oZPT3+UO+K6WigGCO5JeD5uUF4
H/yUUIPwS9DDIKdzpPm6R3aRkoEB7YEcNECMY8mEEe2R2OVlrZ4zpXmvbbBq/rANrKqL9aIEdr/D
ffdCJS/ps3B5inFdfQFQSwMEFAACAAgAe2B2RxW0SZaEAAAAwAAAADoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAOqH1JWHhhS
VnV4CwABBPUBAAAEUAAAAJ3MvwrCMBCA8b1PcaMu0iT+gSAudXGwCA4K4hDTazwId5KkFd/e+gqu
Hx+/VkbQGpS2tbGrJeA7q9osongXIRWf8CWpEIebWiuzucN2j48h7Cxk5O6IObuAFyrPxhUMkj4W
ZjzEOK/av2ViKj/yPOkkfOBeLFxPDXhhRl+mNj2ji9RVX1BLAwQKAAAAAADzW3ZHAAAAAAAAAAAA
AAAAIQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQADGRhSVukgUlZ1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAeWB2R8ptNhDuAAAAiQQAAE4AHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVy
ci50eHRVVAkAA6UfUlYZGFJWdXgLAAEE9QEAAARQAAAA7dKxSgQxEAbg2n2KKbVZNnuiGMTCvUJB
D0FEQSyyyVwuXJw5ktkT395E7azkBJsrEzJfMn9mwVvoe1C97mb6+AzwLatu1ka2JkISm3DDSQL5
Z3WiTtULnF/Tki80RPa+bEMWkyS3bdssfk3NcZx8sTLKLeZsPN58qZelaK2hFEZ0u8D1cQPTMvgp
GQlMj0FWA79uItbVlSEXMWkYjF2hgw6QzFjuhNHYNZLLu3X1kDHVvObBiv5hazhsDo72uf1DbuS+
g/vsywh6Tu/FpSnGvfxXcqAglbwvepma+qManu4GsEyEtk5SObM1MbjmA1BLAwQUAAIACAB5YHZH
MxhxU4QAAADAAAAAQgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJl
LWNzcy1pbi1pZnJhbWUtc3RkZXJyLnR4dFVUCQADpR9SVhkYUlZ1eAsAAQT1AQAABFAAAACdzLEK
wjAQgOG9T3GjLtKkohjEpS4OFsFBQRxieo0H4U6StOLbG1/B9efn62QCrUFpUzdmuQF8J1U3iyDO
BojZRXxJzMT+plZqre6w3eNj9DsDCbk/YkrW44Xys7UZvcSPgRmPIcyr7m+ZmPKPPBedhA88iIHr
qQUnzOhyaeWZbKC++gJQSwMEFAACAAgAgGB2Ry3axFe0AAAAJwEAAD8AHABodHRwL3Rlc3RzL3Nl
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
bckz4RGjWO7LDJ+K7YxYdwOmE4FeHH4dE6z8sfCvsskwMQliHJou3Fy7EnG2OyUjLtSEp4RNFAxh
uiZsRf+1cm6UDwcshGtX33ZbQngh8xHcpoPfbgfueHI9GJ8PT7+jr+NRrz/YBo60cuctstH92WPJ
+BcqVIZj3Wugtx+6R0fvcsN7Wzgz4V5tvDlubfFB3RvrDerBlhBbpsSjAfXMm7JcSEUSlAqu8jdI
B5Cr3qohpPD+jxZqq73UDZvz9sF5cHT/5AfwIvtfLGz1iv8AUEsDBAoAAAAAAAFcdkcAAAAAAAAA
AAAAAAAJABwAaW1wb3J0ZWQvVVQJAAMxGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAB8
YHZHAAAAAAAAAAAAAAAADwAcAGltcG9ydGVkL2JsaW5rL1VUCQADrB9SVukgUlZ1eAsAAQT1AQAA
BFAAAABQSwMECgAAAAAAfGB2RwAAAAAAAAAAAAAAABcAHABpbXBvcnRlZC9ibGluay9lZGl0aW5n
L1VUCQADrB9SVukgUlZ1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAfGB2RwAAAAAAAAAAAAAAAB4A
HABpbXBvcnRlZC9ibGluay9lZGl0aW5nL3NoYWRvdy9VVAkAA6wfUlbpIFJWdXgLAAEE9QEAAARQ
AAAAUEsDBBQAAgAIAHxgdkfSQLcnhAAAAMAAAABPABwAaW1wb3J0ZWQvYmxpbmsvZWRpdGluZy9z
aGFkb3cvNTA1MDkyLWZpZWxkc2V0LWlzLW5vdC11YS1zaGFkb3ctY3Jhc2gtc3RkZXJyLnR4dFVU
CQADrB9SVqwfUlZ1eAsAAQT1AQAABFAAAACdzLEKwjAQgOG9T3GjLtKkGCGIS10cLIKDgjjE9BoP
wp0kacW3t76C68/P18kEWoPStm7s2gC+s6qbVRTvIqTiE74kFeJwU0aZzR22e3yMYWchI/dHzNkF
vFB5tq5gkPSxsOAxxmXV/S0TU/mR51kn4QMPYuF6asELM/oyt/mZXKS++gJQSwMECgAAAAAAfGB2
RwAAAAAAAAAAAAAAAB0AHABpbXBvcnRlZC9ibGluay9lZGl0aW5nL3N0eWxlL1VUCQADrB9SVukg
UlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAfGB2R5FEYrGuAAAA3gMAADoAHABpbXBvcnRlZC9i
bGluay9lZGl0aW5nL3N0eWxlL2p1c3RpZnktbGVmdC1jcmFzaC1zdGRlcnIudHh0VVQJAAOsH1JW
rB9SVnV4CwABBPUBAAAEUAAAAO2PsQrCMBRFd78iow5t2tRqKDhoUXAQC44i5Zk+ajQ25TUK+Xsr
Dgr+Qrdzp3PPMRZZlGTpLJxP5Ylph3fofKPK3La+INsiOc86XTdgDFYMiRZBLOYyZePbRtcr6HB/
vqJyayJL5bZ5gtEVOKwmbKx/FzjGD/ZBCnNQF+S5JdxhpeFLQZzORCgSyXu1s8632PHCgEfivexD
5fJ9MFTM6AaZiKQcHYeKoWKo+Kt4AVBLAwQKAAAAAACQYHZHAAAAAAAAAAAAAAAAFAAcAGltcG9y
dGVkL2JsaW5rL2Zhc3QvVVQJAAPQH1JW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAD3W3ZH
AAAAAAAAAAAAAAAAGgAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvYmxvY2svVVQJAAMhGFJW6SBSVnV4
CwABBPUBAAAEUAAAAFBLAwQKAAAAAAD3W3ZHAAAAAAAAAAAAAAAAJgAcAGltcG9ydGVkL2JsaW5r
L2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvVVQJAAMhGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAD3W3ZHJCSK+AoBAADUAwAAZQAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvYmxvY2svcG9zaXRp
b25pbmcvYWJzcG9zLWF1dG8tbGVmdC1hbmQtd2lkdGgtY2hhbmdlLXBhcmVudC1tYXJnaW4tbGVm
dC1zdGRlcnIudHh0VVQJAAMhGFJWIRhSVnV4CwABBPUBAAAEUAAAAO2QTUvDQBCG7/0Vc0wPTdyk
H0lQQaNCD62BHBRKCdvNmK6uu2F2U8m/d0spehaPvc0Mw/POM2tzgDgGxvKE5dMp4JdlV0mojOAK
yAnCzpCTut1kSZKmW7h+wF3f3uZgUTcrtJa3+CLdvuAOW0NDDoHulRqP1n8mSy3dEVl5ujR6qd9M
Dq9lAcJojcL5md85cCWb0ebMD7P5YgvS4Se3gxZ1ha4k0yG5AaxsNVcKG0CimwmLF+kMgo8n2d5z
i8+7dw99JDJUL09Y79KMIZC/O+4gqkxPAgsu9hgVhnCFjeQ/1YTN5nEYJ2nko51xQ4c2KhUfkCIf
dqrqu+N9oQAlNfoPZclF4iLxnxLfUEsDBAoAAAAAAJBgdkcAAAAAAAAAAAAAAAAkABwAaW1wb3J0
ZWQvYmxpbmsvZmFzdC90ZXh0LWF1dG9zaXppbmcvVVQJAAPQH1JW6SBSVnV4CwABBPUBAAAEUAAA
AFBLAwQUAAIACACQYHZHhZEjTC0BAABcAgAAQwAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC1h
dXRvc2l6aW5nL3N1YnRyZWUtbGF5b3V0LWNyYXNoLWFjdHVhbC50eHRVVAkAA9AfUlbQH1JWdXgL
AAEE9QEAAARQAAAAdZJRa8IwFIXf/RUH96LgXKKlhr5NZExQBlKEPcY2arBtRnOLdmX/faladQ6f
ErjfuTn33Ly9TmcBQp2qGKYg7KUmnW2wNjkyQ3pdTkymQAYrhUgmiYpbiSxVDknosB7rwupvBcHY
wWesBSxUFqt8qdX+AfJIzofeRT5OTLRD9R7OZz8P0Qts4hLV+GPyeWJFT5zZkfAOnIsj+7d1R2Ym
K1NT2O5d/6OmkTSiUB0I1RO5496Px4a3PFBDyIvsyu11TNsaDNAOlaVjulG+Kjb9yKQvQ5/xEQ9A
W22d2tW/pLXKQq+hCbFxV7cLp5B222/fWRsv3OyLkyuPDS6+eO3qmrXoDfymUid4s6uZtjQllaKa
TJfNeFz8o2/5ucx3587PfHQNzz0aYFW4f0KtX1BLAwQUAAIACACQYHZH/gBe+8QBAAAABAAAQQAc
AGltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC1hdXRvc2l6aW5nL3N1YnRyZWUtbGF5b3V0LWNyYXNo
LWRpZmYudHh0VVQJAAPQH1JW0B9SVnV4CwABBPUBAAAEUAAAAMWST4/aMBDF7/kUo+1lV8E4BgQR
J4poVVRWlShi1aOTDItFEiN7LEJRv/s6hD+7VJx66MmW/N6b38yYMQZ8qXNXoOUTSZJ/efnJXzD5
ruh0jJ3KMz7HHKVFnsu9dsQILTGD1uVkuSq22hBmPMlVueEraYkTVsSkI23Vb1W+cusSMojs5E+N
tGuG1RZTb2xTRUEYhv8RRabkZH4EGY2AiVYHQtESXRiNArbwJWClDaQmca/tVBe824/EQAyB1spC
jQBbaS1aUCtQBJn211ITHNPbPqLRVQRyu0VpvLC0KkOQYLAhgUS7MpNm3w7Cr5+nsyEsVIEZ1E87
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
/IFy8V6QFH29fv/Z5o8//X44jF4iyJLFR1w8GC84/vlWyCBs4EZVQsckDjaItRvZyYUZrs/dfqjL
D1wu1D+d+B9QSwMECgAAAAAAAVx2RwAAAAAAAAAAAAAAAA0AHABpbXBvcnRlZC93M2MvVVQJAAMx
GFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAABXHZHAAAAAAAAAAAAAAAAIAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQJAAMxGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAAABXHZHAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9VVAkAAzEYUlbpIFJWdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAAFcdkcAAAAAAAAA
AAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9V
VAkAAzEYUlbpIFJWdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAAJcdkcAAAAAAAAAAAAAAABAABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L1VUCQADNBhSVukgUlZ1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAiGB2RwAAAAAAAAAA
AAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAPAH1JW6SBSVnV4CwABBPUBAAAEUAAA
AFBLAwQUAAIACACHYHZHxsNu5/EAAACXBQAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA74fUlYxGFJWdXgLAAEE9QEAAARQAAAA7dPBSgMxEAbg
s/sUc9TLsrvWCkE8uD0oaBGkKIiH2WSahsaZkmQrvr2JevMkRbzsMSHzJfOTWcoeug7aTjUz1c6A
3mLbnNZeNHoISQfaSUiO7XM7b8/OX+DihtdyqcCLtXkbYsKQYl3X1fLX1IKG0WYrUrqjGNHS7Zd6
lYu2CnKhJ3MIXB7XC6+dHQMmJ/zo0qaX152nsrpGNp6Cgh71hgw0QIxDvhMG1FtiEw/rahUplLwW
Tif1w1ZwXB2dTLn9Q25svoP77AsTWQnv2eXR+0me5L+QHbtUyIes5xkq/1vB030PWphJl7nKZ/bo
nak+AFBLAwQUAAIACACHYHZH8hXKSOkAAACkBAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9jYW5wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADvh9SVjIYUlZ1eAsAAQT1AQAA
BFAAAADtk8FKA0EMQM/2K3K0l7Kz1gqDeHB7UNAiiCiIh+xsOh06JmUmW/HvnRVvnnQRETwmJC+Z
N2Qle6hrMLWt5tbMgV6yqY5mURxGSOoS7SRpYP9oFub45AlOl9T2/sxCJu6uKWf0dB9006CSl/Rq
4ZD7GKeT1bfJgYMOyNtCD8KXvBYLDzcNOGEmpyVXavYYQzdiSib9WP9KvC8V56Vpa6E0RhoFVkza
CK+D7xMO2777keddpCG6QO4iJQsNug11UAExtmUmtOi2xWoe96q7TGlwtgxO7Sd2+Z/JwfTf2y94
+6l7+Yvkr9z4G1BLAwQUAAIACACIYHZHQd1d7O4AAAAMBgAAbgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAO/H1JWMhhSVnV4CwABBPUB
AAAEUAAAAO2UQUsDQQyFz/ZX5GgvsrNahUE8uD0oaBFEFKSH7Gw6HTomZSZb8d87K9486SIo9JiQ
fC/zHsxCdlDXYGpbnVgzA3rNpjo+iuIwQlKXaCtJA/tnc2pmZ0s4n1Pb+wsLmbi7pZzR02PQdYNK
XtKbhUPuY5xOFj8mBw46IO8LPQhf80osPN014ISZnJZemdlhDN0IlUz6ef6NeF8mLsvSxkJZjDQK
rJi0EV4F3yccrv3wR162kYbqCrmLlCw06NbUQQXE2BZNaNFtiqt53KseMqXBs3lwar+wSz6Tg+ko
hd/KfZ/I30tkT/7f5O/8pe9QSwMEFAACAAgAiGB2RxspZcXqAAAApAQAAHkAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJ
AAO/H1JWMxhSVnV4CwABBPUBAAAEUAAAAO2TQUsDQQyFz/ZX5GgvsrO1CoN4cHuooEUQUZAesrPp
dOiYlJlsxX/vrHjz5iL04DEh+V7mPWYlB6hrMLWtzq2ZA71nU83OojiMkNQl2kvSwP7VXJj55Rqu
FtT2/tpCJu7uKWf09Bx026CSl/Rh4ZT7GKeT1a/JgYMOyMdCD8K3vBELLw8NOGEmp6VXZg4YQzdC
JZN+n38n3peJm7K0s1AWI40CKyZthDfB9wmHa7/8kbd9pKFaIneRkoUG3ZY6qIAY26IJLbpdcTWP
e9VTpjR4tghO7Q92yWdyMh2l8Fe5/ydyfIkcwx//BFBLAwQUAAIACACIYHZH+ooZDOwAAACkBAAA
dQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhX25vYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUCQADwB9SVjMYUlZ1eAsAAQT1AQAABFAAAADtk8FKA0EMQM/2K3K0F9lZbYVBPLg9
KGgRRBTEQ3Y2nQ4dkzKTrfj3zooX8VQWEcFjQvKSeUOWsoO6BlPb6sSaGdBrNtXxURSHEZK6RFtJ
Gtg/mbmZnT7D2YLa3p9byMTdDeWMnh6CrhtU8pLeLBxyH+N0svxCnu9BDhx0QN4VehC+4pVYeLxt
wAkzOS25UrPDGLoRUzLp5/rX4n2puChNGwulMdIosGLSRngVfJ9w2PbDj7xsIw3RJXIXKVlo0K2p
gwqIsS0zoUW3KVbzuFfdZ0qDs0Vwar+xy/9MDqb/3n7B20/dy18k73Pj71BLAwQUAAIACACIYHZH
6zKqQOoAAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0
YS1zdGRlcnIudHh0VVQJAAPAH1JWNBhSVnV4CwABBPUBAAAEUAAAAO2TQUsDQQyFz/ZX5GgvsrPV
CoN4cHuooEUQUZAesrPpdOiYlJlsxX/vrHjz5iL04DEh+V7mPWYlB6hrMLWtzq2ZA71nU83OojiM
kNQl2kvSwP7VzM3F5RquFtT2/tpCJu7uKWf09Bx026CSl/Rh4ZT7GKeT1a/JgYMOyMdCD8K3vBEL
Lw8NOGEmp6VXZg4YQzdCJZN+n38n3peJm7K0s1AWI40CKyZthDfB9wmHa7/8kbd9pKFaIneRkoUG
3ZY6qIAY26IJLbpdcTWPe9VTpjR4tghO7Q92yWdyMh2l8Fe5/ydyfIkcwx//BFBLAwQUAAIACACJ
YHZH2HVpN+8AAACkBAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRh
ZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA8EfUlY0GFJWdXgLAAEE9QEAAARQAAAA3ZPB
SgNBDEDP9itytBfZ3WoXBvHg9lBBiyCiIB6ys+l06JiUmWzFv3dWvHnSpQoeE5KXzBuykj1UFZSV
KU5NOQd6TWUxOwliMUBUG2knUT27p3JentXPcL6gtncXBhJxd0MpoaMHr5sGlZzENwPH3Icwnax+
TPbsdUDeZboXvuK1GHi8bcAKM1nNuVyzx+C7EVMS6ef61+JcrrjMTVsDuTHQKLBi1EZ47V0fcdj2
w4+87AIN0RK5CxQNNGg31EEBxNjmmdCi3Waradyr7hPFwdnCWzVf2Pl/JkfT3/JW/6W3+uDe6oPd
y38nf+fG3wFQSwMEFAACAAgAiWB2R2pB1RnnAAAASgQAAGkAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA8EfUlY1GFJWdXgLAAEE9QEAAARQAAAA
7ZNBSwNBDIXP9lfkaC9lZ60tDOLB7UHBFkFEQTxkZ9Pp0DEpM9mK/95Z8ebNxYPgMSH5XuY9ZiNH
qGswta3m1iyB3rKpzmZRHEZI6hIdJGlg/2wW5nz5Ahcrant/aSETd2vKGT09Bt01qOQlvVs45T7G
6WTzY3LgoAPyvtCD8A1vxcLTXQNOmMlp6ZWZI8bQjVDJpF/n34r3ZeKqLO0tlMVIo8CKSRvhbfB9
wuHaT3/k9RBpqK6Ru0jJQoNuRx1UQIxt0YQW3b64mse96iFTGjxbBaf2G7vkMzmZjlL4rdz/E/nL
P/EDUEsDBBQAAgAIAIlgdkcSquNF7QAAAKQEAAB0ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA8IfUlY1GFJWdXgLAAEE9QEA
AARQAAAA7ZNNSwQxDEDP7q/I0b3IdPxYKeLB2YOCLoKIgnjIdLLdsjVZ2syK/96OePO0DqIHjwnJ
S/pKFrKFugZT2+rImhnQazbV4UEUhxGSukQbSRrYP5kTczx7hrM5tb0/t5CJuxvKGT09BF01qOQl
vVnY5z7G6WTxbXLgoAPyrtCD8BUvxcLjbQNOmMlpyZWaLcbQjZiSST/XvxbvS8VFaVpbKI2RRoEV
kzbCy+D7hMO2H37kZRNpiC6Ru0jJQoNuRR1UQIxtmQktunWxmse96j5TGpzNg1P7hV3+Z7I3/ff2
C95+6l52I5/+CfIuN/4OUEsDBBQAAgAIAIlgdkco36HQ6gAAAAwGAAB8ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVU
CQADwh9SVjYYUlZ1eAsAAQT1AQAABFAAAADtlE1LBDEMQM/ur8jRvch0/KSIB2cPCroIIgriIdPJ
dsvWZGkzK/57O+LNm6N4mWND8pK+ki5lB3UNprbVkTVnQG/ZVIcHURxGSOoSbSVpYP9sTszx6Quc
L6jt/YWFTNzdUs7o6THoukElL+ndwj73Mc5nyx+TAwcdkPeFHoSveSUWnu4acMJMTkus5Owwhm5E
l0z6Nf6NeF8yLkvRxkIpjDQKrJi0EV4F3yccpv30I6/bSMPpCrmLlCw06NbUQQXE2Jae0KLbFKt5
3K0eMqXB2SI4td/Y5X1me/PJ2z94+6t9mcgT+Tf+0g9QSwMEFAACAAgAimB2R3NNS67wAAAADAYA
AHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0
ZGVyci50eHRVVAkAA8MfUlY2GFJWdXgLAAEE9QEAAARQAAAA7ZRNSwMxEEDP9lfM0V5kd/0OpQe3
BwUtgogF8TCbnaahcaYksxX/vVnx5skuIkiPGWbeTF6YzGULVQVlZYoTU14AvaWyOD4KYjFAVBtp
I1E9u+fyrDw9f4HJjJrOTQ0k4vaOUkJHT15XNSo5ie8GDrkLYTya70z27LVHPmS6F77hpRhY3Ndg
hZms5ljO2WLw7YAuifRr/FtxLmdc5aK1gVwYaBBYMWotvPSui9hP++lHXjeB+tM1chsoGqjRrqiF
AoixyT2hQbvOVtOwWz0mir2zmbdqvrHz+4wOxntvf+Dtt/ZlT96dfPnPyT/5Sz8AUEsDBBQAAgAI
AIpgdkfMqnIK6wAAAAwGAAB/ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xv
YWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUCQADwx9SVjcYUlZ1eAsAAQT1AQAA
BFAAAADtlE1LBDEMQM/ur8jRvch0/MIiHpw9KOgiiCiIh0wn2y1bk6XNrPjv7Yg3b47iZY4NyUv6
SrqUHdQ1mNpWR9acAb1lUx0eRHEYIalLtJWkgf2zOTHHpy9wvqC29xcWMnF3Szmjp8eg6waVvKR3
C/vcxzifLX9MDhx0QN4XehC+5pVYeLprwAkzOS2xkrPDGLoRXTLp1/g34n3JuCxFGwulMNIosGLS
RngVfJ9wmPbTj7xuIw2nK+QuUrLQoFtTBxUQY1t6QotuU6zmcbd6yJQGZ4vg1H5jl/eZ7c0nb//g
7a/2ZSJP5N/4Sz8AUEsDBBQAAgAIAIpgdkfQ+X16/wAAAAwGAAB4ABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRzdGFydF9wcm9ncmVzcy1zdGRlcnIudHh0VVQJAAPEH1JW
NxhSVnV4CwABBPUBAAAEUAAAAO2UPU8DMQyGZ/orPNIFXY4vEaEOvQ4gQYWEEEgVgy/nplGDXSW5
Iv49OcTGdD1OYmCMZT+v7dfKUvZQlqBKXZxpdQX0HlVxeuLFoIeQTKCdhOTYrtSFOr98hesF1a2d
aYjEzT3FiJaeXdpUmMhK+NBwzK3308nyYLJjlzrkY6Y74Vtei4aXhwqMMJNJOZZz9uhdM0AlUvpu
/06szRnzXLTVkAs9DQInDKkSXjvbBuy6/dqPvO08da8b5MZT0FCh2VADBRBjnTWhRrPNW43DpnqK
FLqdLZxJ+gc7+zM5mg5SGMv3P0Iui5GuqB/4l6+o71T9r6inwniO/JMP+0s/AVBLAwQUAAIACACK
YHZHMYyx5ecAAABMBQAAZQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVzZS1zdGRl
cnIudHh0VVQJAAPEH1JWOBhSVnV4CwABBPUBAAAEUAAAAO2TTUsDQQxAz/ZX5Ggv0l2/YBAPbg8K
WgQRBekhO5tOh45JmclW/PdmxZs3F9FDjzMkL8kLWcgO6hqq2s1OXD0DeivV7PgoiccEWX2mrWSN
HF6qs+r0fAkXc2r7cOmgEHd3VAoGeoq6blApSH53cMh9StPJ4sfkyFEH5IPRo/ANr8TB830DXpjJ
q/1ZzA5T7EZUKaRf7d9KCBZxZUkbB5aYaBRYMWsjvIqhzzh0++lHXreJhtc1cpcoO2jQr6kDYzO2
VhNa9BuzWsZN9VgoD87m0av7xrb9TA6me29/4O237mVP/h/kD1BLAwQUAAIACACLYHZHkNgG3PIA
AABkBQAAcAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVzZV9ub2F1dG9wbGF5LXN0
ZGVyci50eHRVVAkAA8UfUlY5GFJWdXgLAAEE9QEAAARQAAAA5ZNNSwQxDIbP7q/IUS8yHb+giAdn
Dwq6CCIK4iHTyXbL1mRpMyv+ezviSU86DCIeW5In6fvQhWyhrsHUtjq0dQX0kk11sB/FYYSkLtFG
kgb2j+bYHJ08wemc2t6fWcjE3TXljJ7ug64aVPKSXi3sch/j3mzxY3LgoAPyttCD8CUvxcLDTQNO
mMlpuSs1W4yhGzHl7++vH+tfifel4rw0rS2UxkijwIpJG+Fl8H3CYdv3fOR5E2k4XSB3kZKFBt2K
OihsxrbMhBbduqSax73qLlMaMpsHp/YLu/iZ7Xy2YybzbqYyYn7TiPk3RqYif+ePvwFQSwMEFAAC
AAgAi2B2R8reeNLoAAAATAUAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheS1z
dGRlcnIudHh0VVQJAAPFH1JWORhSVnV4CwABBPUBAAAEUAAAAO2TTUsDQQxAz/ZX5GgvsrP1Awbx
4PZQQYsgoiA9ZGfT6dAxKTPZiv/eWfHmzUX00OMMyUvyQpayh7oGU9vq1NYG6C2banYSxWGEpC7R
TpIG9i/m3JxdrOByTm3vryxk4u6OckZPT0E3DSp5Se8WjrmPcTpZ/pgcOOiAfCj0IHzDa7HwfN+A
E2ZyWv5KzB5j6EZUyaRf7d+K9yXiuiRtLZTESKPAikkb4XXwfcKh208/8rqLNLwWyF2kZKFBt6EO
KiDGttSEFt22WM3jpnrMlAZn8+DUfmOX/UyOpgdvf+Dtt+7lQP4f5A9QSwMEFAACAAgAi2B2R1zX
BIvpAAAAZAUAAG8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAkAA8UfUlY6GFJWdXgLAAEE9QEAAARQAAAA7ZNPSwQxDMXP7qfIcfci0/Ef
FPHg7GEFXQQRBfGQ6WS7ZWuytJkVv70d8ebNuYzgMSH55fU9upYD1DWY2lantjZA79lUJ8dRHEZI
6hLtJWlg/2LOzdnFK1wuqe39lYVM3N1RzujpKei2QSUv6cPCnPsYF7P1r8mBgw7Ih0IPwje8EQvP
9w04YSanpVdmDhhDN+LK39ev3/JvxfsycV2WdhbKYqRRYMWkjfAm+D7hoPbLH3nbRxqqFXIXKVlo
0G2pgwqIsS03oUW3K67mca96zJQGz5bBqf3BLvnMjhaTzP0/keklMoU//glQSwMEFAACAAgAi2B2
R7mb7+3rAAAADAYAAGcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRl
cnIudHh0VVQJAAPGH1JWOhhSVnV4CwABBPUBAAAEUAAAAO2UwUoDMRBAz/Yr5mgvsrtahVB6cHtQ
sEUQUZAestlpGhpnSjJb8e+dFW/eXMXL3pIw82bmhWTNR6gqKCtTXBhd4Fsui/OzyM5GSOISHjhJ
IP9SXpazqw3Ml9h0fmEgI7UrzNl6fAqyq62g5/Ru4JS6GKeT9Y/JgYL0yAelB6Zb2rKB5/saHBOh
Ez3TmKONoR1QJaN8tX/H3mvEtSbtDWhixEFgsUlqpm3wXbJ9t59++PUQsd/dWGojJgO1dTtsoQAk
22hNaKzbq9U8bKrHjKl3tgxOzDe23s/kZDp6+wdvf/VeRvJI/o2/9ANQSwMEFAACAAgAjGB2R1uy
LjryAAAADAYAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9w
bGF5LXN0ZGVyci50eHRVVAkAA8cfUlY7GFJWdXgLAAEE9QEAAARQAAAA7ZRBSwMxEIXP9lfM0V5k
d2srBPHg9qBgi1BEQTzMZqdpaJwpyWzFf29WvHmqi9BDb0mY+d7Me5Cl7KGqoKxMcWnygT5SWUwu
glgMENVG2klUz+61nJXTqze4nlPTuRsDibhdUEro6NnrpkYlJ/HTwDl3IYxHyz+TPXvtkatM98L3
vBYDL481WGEmq/kt1+wx+HaASiL9Gf9BnMsVt7lpayA3BhoEVoxaC6+96yL20377I++7QP3tDrkN
FA3UaDfUQgHE2GRNaNBus6tp2FZPiWLv2dxbNb/YOZ/R2XiQwn/lfkrk+BI5hDw5kY+OfMhf+gVQ
SwMEFAACAAgAjGB2Rzx76r3pAAAATAUAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADxx9SVjsYUlZ1eAsAAQT1AQAABFAAAADtk8FKA0EMQM/2
K3JsL7K7rQqD9NDtoUItgoiCeMjOptOhY1JmshX/3lnx5s1F9NDjDMlL8kI2coSqgrIyxcxUU6C3
VBbT8yAWA0S1kQ4S1bN7Li/Li6sXuF5S07m5gUTc3lJK6OjR665GJSfx3cCYuxAmo82PyZ699sj7
TPfCN7wVA093NVhhJqv5L8ccMfh2QJVE+tX+WpzLEYuctDeQEwMNAitGrYW33nUR+24//cjrIVD/
WiG3gaKBGu2OWiiAGJtcExq0+2w1DZvqIVHsnS29VfONnfczOpucvP2Bt9+6lxP5f5A/AFBLAwQU
AAIACACMYHZHwaxgHOwAAABkBQAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9n
cmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA8cfUlY7GFJWdXgLAAEE9QEAAARQAAAA7ZPB
SgMxEIbP9inmaC+yu20Vgnhwe1BoiyCiID3MZqdpaJwpyWzFtzcr3jzpIlLwmDDzzZ8vzEoOUFVQ
VqaYmmoC9JrKYnIWxGKAqDbSXqJ6ds/leTm7WMPlnJrOXRlIxO2SUkJHj163NSo5iW8GTrkLYTxa
/Zjs2WuPvM90L3zLGzHwdFeDFWaymu9yzQGDbwdMOf78+hl/Ic7liuvctDOQGwMNAitGrYU33nUR
+7QffuRlH6g/3SC3gaKBGu2WWiiAGJs8Exq0u2w1DXvVQ6LYO5t7q+YLO//P6GT87+0PvP3Wvhwj
+Ts7/g5QSwMEFAACAAgAjGB2RyKtl17rAAAADAYAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfdGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAAPIH1JWPBhSVnV4CwABBPUBAAAEUAAAAO2U
sU4DMQxAZ/oVHumC7o4CUoQYuA5UKhUSQiAhBl/OTaMGu0p8Rfw9uaobGwdiuTGW/ey8yFnJHqoK
ysoUM1PNgD5SWZyfBbEYIKqNtJOont1reVleXL3B9Zyazt0YSMTtPaWEjp69bmpUchI/DZxyF8J0
svox2bPXHvmY6V54wWsx8PJQgxVmsppjOWePwbcDuiTS4/hLcS5n3OairYFcGGgQWDFqLbz2rovY
T3vwI++7QP3pDrkNFA3UaDfUQgHE2OSe0KDdZqtp2K2eEsXe2dxbNd/Y+X0mJ9PR2z94+6t9Gckj
+Tf+0i9QSwMEFAACAAgAjWB2R/WAtbjxAAAAZgYAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA8kfUlY9GFJWdXgLAAEE
9QEAAARQAAAA7ZRBSwMxEIXP9lfM0V5kd20Vgnhwe1DQIogoiIfZ7DQNjTMlma34782WnvRU91Kw
x4SZ7728B5nLBqoKysoUE1NNgD5TWZyfBbEYIKqNtJaont1beVFOL9/hakZN564NJOL2gVJCRy9e
lzUqOYlfBk65C2E8mh8g2bPXHvmU6V74jhdi4PWxBivMZDXf5ZkNBt/+UJnu5V939u/FuTxxk5dW
BvJioEFgxai18MK7LmLvdpuPfKwD9adb5DZQNFCjXVILBRBjkzWhQbvKqaZhr3pOFPvMZt6q+cXO
/YxOxoMU9un9UMjHrv9P10fy3/7Sb1BLAwQUAAIACACNYHZHPbDbLYQAAADAAAAAbAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJyLnR4dFVUCQADyR9SVj0Y
UlZ1eAsAAQT1AQAABFAAAACdzLEKwjAQgOG9T3GjLtJEqxDEpS4OFsFBQRxieo2BcCfJteLbG1/B
9efn63gCrUFpU6+MbgDfWdXLRWRnIyRxCV+cJJC/qbVqNnfY7vEx+p2BjNQfMWfr8RLk2VpBz+lj
YEZjjPOq+1sOFORHnosemA40sIHrqQXHROiktPJMNoa++gJQSwMECgAAAAAAAVx2RwAAAAAAAAAA
AAAAAFoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAkAAzIYUlbpIFJWdXgL
AAEE9QEAAARQAAAAUEsDBAoAAAAAAAFcdkcAAAAAAAAAAAAAAABkABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUCQADMhhSVukgUlZ1eAsAAQT1AQAABFAAAABQ
SwMEFAACAAgAh2B2Rz9pT0HKAAAA3QEAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJm
YWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRlcnIudHh0VVQJAAO+H1JWMhhSVnV4CwABBPUB
AAAEUAAAAKWQMU/DMBCFZ/IrbqRLFIcKIQsxkA6tBN0QA2K42FfXqrmr7AuIf48DbEwo4z3pfe/e
28s79D2Y3nZra9ZAH8V0V20ShwmyukxnyRo5vJhrc9O9wu2OD3JnIUkIVYaimLW0bdvs/43a0DiF
yiqkj1QKBnr4od5X08lCNSbyS8Dzc4PwIYYpo0bh56jHQd7OieZri+wTZQsDuiN56IAYx5oJI7oT
sS/LWj0VyvNem+jU/mFbuGwuVosS2P8O990LlYLkz8rlKaVV8wVQSwMEFAACAAgAiGB2R3L9dDiD
AAAAwAAAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWRk
Q3VlLXN0ZGVyci50eHRVVAkAA78fUlYyGFJWdXgLAAEE9QEAAARQAAAAncyxCsIwEIDhvU9xoy6S
xCISxKUuDhbBQUEcYnrGg3AnSVrx7Y2v4Prz8/UygTGgjVWt1S3gO2u1XETxLkIqPuFLUiEOV73S
a3WDzQ7vY9hayMjDAXN2Ac9Unp0rGCR9LMx4jHHe9H/LxFR+5KnqJLznh1i4HDvwwoy+1FafyUUa
mi9QSwMEFAACAAgAjWB2R5aOa4zfAAAA5AMAAHcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0
d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQADyR9SVj4YUlZ1eAsAAQT1
AQAABFAAAADtkTFLA0EQhWvvV0ypjdydicISUngpFGIQRBQkxdzuZLNknQm7cxH/vXtiZ5eUWg68
9z3mvZUcoG2haU09Me0U6CM39dVlFIsRktpEe0ka2L811830Zg2zBfWDnxvIpA+UM3paivdFcVtM
OwPFGMlVq+PBikk74U3wQ0INwi9Bt5287yON1x2yi5QMdGi35KAGYuxLJvRod8QunxJO+pwp3fNG
FsGq+cU2cF6dXZyW8N/bUQnsfor7/guVvKTPwuUhxr9GDhx0RD4Vetl27N3A62MHVpjJjnsXzQFj
cNUXUEsDBBQAAgAIAI1gdkfFMXhChAAAAMAAAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25l
dHdvcmtTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAkAA8ofUlY+GFJWdXgLAAEE9QEAAARQAAAA
ncyxCsIwEIDhvU9xoy7SRK0QxKUuDhbBQUEcYnqNgXAnybXi2xtfwfXn5+t4Aq1BaVOvjG4A31nV
y0VkZyMkcQlfnCSQv6lGrTd32O7xMfqdgYzUHzFn6/ES5NlaQc/pY2BGY4zzqvtbDhTkR56LHpgO
NLCB66kFx0TopLTyTDaGvvoCUEsDBBQAAgAIAI1gdkdotP7SyAAAAIwEAAByABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQJAAPKH1JW
PhhSVnV4CwABBPUBAAAEUAAAAO2RsU4CQRCGa3mKKaUxdydgsiEUHIUkQGcsiMXc7rBsWGfI7hzG
t2c1dnRSaKLlJPN/X2b+jZygaaBuTDUyzQToLdfV/V0UixGS2kRHSRrYb+tJPX54gemCut7PDGTS
NeWMnlbifdmYl9DBQAlGcoPN98GKSVvhXfB9Qg3Cz0H3rbweI31Mj8guUjLQot2TgwqIsStO6NAe
iF2+Rk76lCkteSeLYNVcsA3cDm6GVxnYfT3u8y5U8pLeC5f7GH8r+b/rv9P1T5HPUEsDBBQAAgAI
AI1gdkdSY8vY6QAAAGQFAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1
cmluZ19wYXVzZS1zdGRlcnIudHh0VVQJAAPKH1JWPxhSVnV4CwABBPUBAAAEUAAAAO2TQUsDQQyF
z/ZX5GgvsrvaCkPpwe1BwRZBREF6yM6m06FjUmayFf+9s+LNm3tZwWNC8uXNe8xGTlBVUFamuDLV
HOg9lcXlRRCLAaLaSEeJ6tm9lvNydr2FxYqazi0NJOJ2TSmho2ev+xqVnMQPA+fchTCdbH5N9uy1
Rz5muhe+450YeHmowQozWc29PHPC4NsBV/6+fv2Wfy/O5YmbvHQwkBcDDQIrRq2Fd951EXu1X/7I
2zFQX90it4GigRrtnloogBibfBMatIfsahr2qqdEsfds5a2aH+ycz+RsOsrc/xMZXyJj+OOfUEsD
BAoAAAAAAAJcdkcAAAAAAAAAAAAAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmct
dGhlLW1lZGlhLXJlc291cmNlL1VUCQADNBhSVukgUlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA
iGB2R53D+0S+AAAA7AEAAJEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVk
aWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10by1vdGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAO/
H1JWMxhSVnV4CwABBPUBAAAEUAAAALWQMW8CMQyF5/IrPJaluhxQVVHVocdQJGBDHaoOvsSEiNRG
iY+q/55QsbEVdXyS3/fJby1HaFswrW2m1syAvotpJg9JHCbI6jIdJGvk8GEezdPkE57n1A/hxUIh
XVEpGGgpIdSL11raW6jFRH60/jtYMWsnvI1hyKhR+D3qrpOvQ6JzekP2ibKFDt2OPDRAjH11Qo9u
T+zLLXLSTaG84K3Mo1N7xbZwP7ob32Rgfxnu9y9UCpJ/KpeHlP6TfAJQSwMEFAACAAgAiGB2Ry/h
UvslAQAAbwMAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVz
b3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQADwB9SVjQYUlZ1
eAsAAQT1AQAABFAAAADNkj1PAzEMhmfuV3iEgeo+6FeEKtHrABJUVSsEUtUhzflyUYNTJbny8evx
VbCwMHSpt0T289qvPXcHyHPIcpHeiGwA+B6ytOhZp6QFH5XHvfPRkF5ng2xUbOB2httWTwQEpOoJ
Q5AaX0xsShlRO/8p4JJaa6+S+RmSDZnYIVdMN44eqHYCXhclKEeEKvIf5xykNVWy/uX3srTPDA4o
l3fTFUw4oLZtaBbcKess0aIMuMIoYJ1+DOuR6o+LYVWM0w1Mua8dpNDIAOTo+gu9A481a7YUoTjJ
qPjj06PTmjOOWgK40GJ1CjhKH0tHtdGtl50tx0W4t73F7nUvqbLoBZRSNVjxdEhyy5qwlWrHpoTT
pnoO6LvlzIxiS/+y+RCSi/M8sP/I31BLAwQUAAIACACIYHZHfMeCHOEAAACsAgAAjwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1yZW1vdmUt
ZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAPAH1JWNBhSVnV4CwABBPUBAAAEUAAAALWRQUsD
QQyFz/ZX5NheZGcrRQbpoduDgpaCiIJ4yM6m06FjUmayLf57Z8WbB8HFY0Le95KXjZygrsHUtrqy
ZgF0zqaaX0ZxGCGpS3SUpIH9q1mY6/kb3Kyp7f3SQibuHihn9PQcdN+gkpf0YWHKfYyzyebP5MBB
B+RjoQfhO96JhZdtA06YyWnplZkTxtCNcMmk3+vfi/dlYlVEBwtFGGkUWDFpI7wLvk84bPuVj7wf
Iw3VLXIXKVlo0O2pgwqIsS2e0KI7lFTzuKueMqUhs3Vwan+wy38mF7NRDv/199/In1BLAwQUAAIA
CACIYHZHAqw7R4QAAADAAAAAgQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1t
ZWRpYS1yZXNvdXJjZS9wbGF5YmFja1JhdGUtc3RkZXJyLnR4dFVUCQADwB9SVjQYUlZ1eAsAAQT1
AQAABFAAAACdzLEKwjAQgOG9T3GjLtKkUiSIS10cLIKDgjjE9BoD4U6Sa8W3N76C68/P1/MMWoPS
pl4b1QK+s6qbVWRnIyRxCV+cJJC/qVZtmjts9/iY/M5ARhqOmLP1eAny7Kyg5/QxsKApxmXV/y0H
CvIjz0UPTAca2cD11IFjInRSWnlmG8NQfQFQSwMEFAACAAgAjmB2R9x5vRWHAAAAwAAAAHgAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvcHJlbG9hZF9yZWZsZWN0c19ub25lX2F1dG9wbGF5LXN0ZGVy
ci50eHRVVAkAA8sfUlY/GFJWdXgLAAEE9QEAAARQAAAAlcyxCsIwEIDhvU9xoy7SRG0hiEtdHCyC
g4I4xPQaA+FOkmvFt7eOjq4/P1/LI2gNSptyZXQF+MqqXC4iOxshiUv45CSB/FVVal3fYLPD++C3
BjJSd8CcrcdzkEdjBT2nt4EZDTHOi/ZHrv+QAwX5kqdJD0x76tnA5diAYyJ0MrXpGW0MXfEBUEsD
BBQAAgAIAI5gdkfBH59zxQAAAIwEAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3Rh
dGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQADyx9SVj8YUlZ1eAsAAQT1AQAABFAAAADt
kDFrAkEQhev4K6aMTbi7aIRFLDyLCGoXUoQUc7vjuriZkd05Q/69m2Bnp1XAcuC972PeRo7QNFA3
phqZZgL0nevq+SmKxQhJbaKDJA3sP+qXejz5hOmCut7PDGTSNeWMnlbifUnMS2lvoBQjucHmerBi
0lZ4G3yfUIPwe9BdK1+HSL/XK7KLlAy0aHfkoAJi7IoTOrR7YpdvkZO+ZUpL3soiWDUXbAOPg4fh
bYb7blcZ2J2H+/sLlbykn8LlPsY7+f+TT1BLAwQUAAIACACOYHZHzagFCeoAAAAMBgAAegAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRl
cnIudHh0VVQJAAPLH1JWPxhSVnV4CwABBPUBAAAEUAAAAO2RQUsDQQyFz/ZX5GgvsrtWC4N4cHtQ
qEUQUZAesrPpdOiYlJlsxX/vbOnNi7iXCj0mJF9e3lvIDqoKysoUE1NNgT5TWVxeBLEYIKqNtJWo
nt17eV1eTZdwM6Omc7cGEnH7SCmho1ev6xqVnMQvA+fchTAeLf5M9uy1Rz5nuhd+4JUYeHuqwQoz
Wc29PLPD4NsBV/6/fj3In4tzeeIuL20M5MVAg8CKUWvhlXddxF7t3h/52Abqq3vkNlA0UKNdUwsF
EGOTb0KDdpNdTcO+ekkUe89m3qr5wc75jM7GR5n7KZHjS+RE/j35G1BLAwQUAAIACACOYHZHPgcn
u/QAAAAMBgAAdgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2Fk
ZWRkYXRhLXN0ZGVyci50eHRVVAkAA8wfUlZAGFJWdXgLAAEE9QEAAARQAAAA7ZE/SwNBEMVr8ymm
NI3cnX8SFrHwUihoEEQUgsXc3mSzZJ0Ju3MRv717YmcVj2ih5S4zv/fmvblsoaqgrExxYqoJ0Gsq
i+OjIBYDRLWRNhLVs1uUZ+Xp5BnOZ9R07sJAIm5vKSV09Oh1VaOSk/hm4JC7EMaj+bfJnr32yPtM
98LXvBQDT3c1WGEmq/kvz2wx+HaAym7+pz/if7qTf/20fyPO5YnLvLQ2kBcDDQIrRq2Fl951EXu3
H/nIyyZQ/7pCbgNFAzXaFbVQADE2WRMatOucahp21UOi2Gc281bNF3buZ3QwHqSwr973Sf7v+u90
/Vvkd1BLAwQUAAIACACOYHZHTgtUf+oAAABkBQAAegAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9y
ZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAAPMH1JWQBhSVnV4
CwABBPUBAAAEUAAAAO2TT0sDQQzFz/ZT5GgvsrvWPwziwe2hhVoEEYXiITubToeOSZnJVvz2zoo3
b+5lBY8JyS9v3mPWcoSqgrIyxcxU10DvqSzOz4JYDBDVRjpIVM9uU16WF1evcDOnpnO3BhJxe08p
oaNnr7salZzEDwOn3IUwnax/TfbstUc+ZroXXvJWDLw81GCFmazmXp45YvDtgCt/X79+y1+Jc3ni
Li/tDeTFQIPAilFr4a13XcRe7Zc/8nYI1FcL5DZQNFCj3VELBRBjk29Cg3afXU3DXvWUKPaezb1V
84Od85mcTEeZ+38i40tkDH/8E1BLAwQUAAIACACPYHZHW7v7X/AAAABmBgAAcwAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAkAA80f
UlZBGFJWdXgLAAEE9QEAAARQAAAA7ZQ/T8QwDMVn7lN45BbUlv8RYqA3gAQnJIRAQgxu6stFF+xT
4h7i25MiJphKN9Qxkf17L89WlrKDqoKyMsWRqc6A3lNZHB4EsRggqo20laie3Ut5Uh6fvsLFgprO
XRpIxO0dpYSOnryua1RyEj8M7HMXwny2/DPZs9ce+ZDpXviGV2Lg+b4GK8xkNd/lmh0G3/5QOR/k
X7/t34pzueIqN20M5MZAo8CKUWvhlXddxN7tVz7ytg3Un66R20DRQI12TS0UQIxN1oQG7Sanmsa9
6jFR7DNbeKvmFzvPZ7Y3H6UwZO4TedrPaT//I3nIL/0JUEsDBBQAAgAIAI9gdkecsSRIhAAAAMAA
AABsABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0
VVQJAAPNH1JWQRhSVnV4CwABBPUBAAAEUAAAAJ3MvwrCMBCA8b1PcaMu0sR/GIpLXRwsgoOCOMT0
jAfhTpK04tsbX8H14+PXyQhag9KmXhi9AXwnVc9nQZwNELOL+JKYif1VrdRyfYNmh/fBbw0k5P6A
KVmPZ8rP1mb0Ej8GJjyEMK26v2Viyj/yVHQS3vNDDFyOLThhRpdLK89oA/XVF1BLAwQUAAIACACP
YHZHlqp8/tgAAADCAgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0
cmlidXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQADzR9SVkEYUlZ1eAsAAQT1
AQAABFAAAADVkD9PwzAQxXc+xY0wpHZCCqm3qhXqwICiMlUMrn0hVv0n2Bc+P4fCiNiQQLe8p/dO
+t2d6kbJVjWb1bq9e4HD8fjU49uMhWBwrwei6cvune3RoHvHHsuUYsGd9v6szUVBXgILI/fZLTm0
soVrzDllqOpmc9vdwMD6s6SE8MloP6ZCquukFCMFLwoGHcmZIjCc0Vq0lUmRMJIIaJ2u0GNgV8SQ
0tXpZ3a2+zlMDy5q/9w/biMfEBLh1lpGLAr0IqBu7leSp+Y17sKc/a9AruX/ffB37H/jwR9QSwME
CgAAAAAAAlx2RwAAAAAAAAAAAAAAAFUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svVVQJ
AAMzGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAACXHZHAAAAAAAAAAAAAAAAYwAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L1VUCQADMxhSVukgUlZ1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAiGB2R98lUrntAAAAoQEAAIIAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1hcGktdGV4dHRyYWNrcy1zdGRlcnIudHh0
VVQJAAPAH1JWMxhSVnV4CwABBPUBAAAEUAAAAKWQQUsDMRCFz+6vmKM9WLJb6dZQCnZ7UFCRluJh
6SGbzGZD00xJsir+ekfBi9e+28C89/FeW1ZS3MpyPhWiPsCSBc32fr2DFQt6P6bhFYNxwW7Ro0q4
wyyhFZ91j3Vn7qp6geIAa0/6CAIGlSBQuPnCSBCxB01jyDArXugdqgr+cIAfqRSzKduUh5h1xDPF
zJi2nJcLTlxusBvtSkLC/IwpKYtPZC1//LIksNGjuSQ4q5gbCr2zY1TZUXhzeWjodPb4cz2oYDxG
CY3SAxpuh0F1zIRO6SOPki5rtU8YH0NPG6d50v/ZEq6Lq0nxDVBLAwQKAAAAAACIYHZHAAAAAAAA
AAAAAAAAXgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy91c2VyLWludGVyZmFjZS9VVAkAA8AfUlbp
IFJWdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAIhgdkcd/mbEgwAAAMAAAABuABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3VzZXItaW50ZXJmYWNlL211dGVkLXN0ZGVyci50eHRVVAkAA8AfUlbAH1JW
dXgLAAEE9QEAAARQAAAAncyxCsIwEIDhvU9xoy6SRCkSxKUuDhbBQUEcYnrGg3AnSVrx7Y2v4Prz
8/UygTGgjVUrq1vAd9ZquYjiXYRUfMKXpEIcrrrVa3WDzQ7vY9hayMjDAXN2Ac9Unp0rGCR9LMx4
jHHe9H/LxFR+5KnqJLznh1i4HDvwwoy+1FafyUUami9QSwMECgAAAAAAAlx2RwAAAAAAAAAAAAAA
AFIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQJAAM0GFJW6SBSVnV4CwABBPUBAAAEUAAA
AFBLAwQUAAIACACIYHZHxPWOl94AAADQAgAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9h
dWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQJAAPAH1JWNBhSVnV4CwABBPUBAAAEUAAAANWQ
P08DMQzFdz6FRzpckxwnSLNVVFUHBnQqU8WQJm4vIn+OxMfnJ6djhgkJ5OU9+1n62SfRKt4pcb+W
Ur7C4Xh87vF9wkJwcdcD0fhld872aNB9YI9lTLHgo/b+rM2bgrwMLAw1X90yh453cIs5pwyNaDd3
cgWXqueQYswno/2QCikpOWcDBc8KBh3JmcIwnNFatI1JkTASowEbPVmXGvQY5k6cvL85fc9f7W4K
495F7V/6p22sR4REuLW2YhYFehEg2oc1ryXqWs3ClP2vgW74/3p0yeYn/D/x55nzE1BLAwQKAAAA
AAACXHZHAAAAAAAAAAAAAAAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtZW1iZWQtZWxlbWVudC9VVAkAAzQYUlbp
IFJWdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAAJcdkcnME8xhAAAABoBAABsABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3Ro
ZS1lbWJlZC1lbGVtZW50L2VtYmVkLWRpbWVuc2lvbi1zdGRlcnIudHh0VVQJAAM0GFJWNBhSVnV4
CwABBPUBAAAEUAAAAM3MsQrCMBCA4b1PcaMu0iaiGMSlLg4WwUFBHGJ6jYFwJ8m14tsb38L15+fr
eAKloGmMVqZeAr5zU+tFZGcjJHEJX5wkkL9ttF6v7rDd42P0OwMZqT9iztbjJciztYKe08fAjMYY
51X3h3KgID/yXPTAdKCBDVxPLTgmQiellWeyMfTVF1BLAwQKAAAAAACOYHZHAAAAAAAAAAAAAAAA
AwAcAGpzL1VUCQADzB9SVukgUlZ1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAl2B2RwAAAAAAAAAA
AAAAAAcAHABqcy9kb20vVVQJAAPdH1JW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQUAAIACACOYHZH
LffKypYAAACzAAAAJQAcAGpzL2RvbS9jdXN0b20tY29uc3RydWN0b3JzLXN0ZGVyci50eHRVVAkA
A8wfUlbMH1JWdXgLAAEE9QEAAARQAAAALY1BDoIwEEX3nmIOoNASgqYJqyJhZYxhZ1xUGKShdLQM
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
yV3Gj+B20XLdsBYxOGaHhijyutlcQutWXoWqRnshqcu50ZwuWsfGcXfiC4yu5E3iRkMNasGX5XJJ
ccJdPf3FjslZgIC8Cm0jBUchmrTBCAPJGFxy7xoRuFJEhL9BvUbL3lTBZdxN0OLgEJLzmnYxk9Na
DAjyNn3DFIfCMlK3UmEgnK/5NlkvxPz6vp+fP3ffP76dT0/534S8vD4+nl5evrw+Pb39cwg6/fcf
fv7xp593f/vH//zz7z/+/OMPP/x/UEsDBBQAAgAIAJZgdkfl17C7bwEAAA8EAAAqABwAanMvZG9t
L3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWRpZmYudHh0VVQJAAPcH1JW3R9SVnV4CwABBPUB
AAAEUAAAAMVTX0/CMBB/91NceGHL6BoNJgZCMlRMjCYaUXku2wGTsS7tFbYQvrvbAFGYGF/06XrX
+/1p7soYA/4qIzNDza8FCd4b9PkAh3chbcKlCaOAP2GEQiOPRCYNMUJNTKE2EWn+pnkgZzxPUc0x
YAupAs2EZomSCSrKGKYJ+oSBSymdOI7zF5rCJyOiUtHzgJ02m+eNC3A20fNO4LHb74M1MrFPoYwt
e1kzGkGTCn2qta0ljJEgMcMo9PPLVQP0Lk/LQiKUxuBhKrIWNM9g5e4K0Ol08pq9sttAyiCEuowb
2blQkIUYBZW3n03tdR7wsa98UKi2t+fSw15rJXkF7EDJuene3h9X0hNp8myIJcKF54nCBWDqY1Io
Qj+LSaQ9paRqwUu83QuYYlZMEOolW92FKxHHkqAYyFogb82HrQuSfBlAjvLpxKgESeVunP36Yf/k
dj3jrVkYWyXGXgKsftyGI6hvNo2Xfdwtvo9VCbc/EO9QSwMEFAACAAgAlmB2R3Zle1NzMQAAoE8D
AC4AHABqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktZXhwZWN0ZWQudHh0VVQJAAPc
H1JW3B9SVnV4CwABBPUBAAAEUAAAAM1dwa7rRo7d5yuMbMYGBjEwmNUMejFoZNeDbiD5Aec+v8To
m6vA1y+vPUH+fSypSipZRfKwiizdRTesG5KHRUnkOWU/6cfz++19d+t257f3L9fz7vbL6bb7et69
nN52X97Pu+9/2F3P7+fr7+dPu6/d9dP77vS+++3a/Xa+3u67t9Ov5/fvvvnm72+79y8vL+f393/f
3bsvu6+X19fd+/m8Oz3+/3o5v++6z7tv//E/P/zw7e7h8X76+fyw/Ny9vnZfH4F/uu++/fH7H37c
/fXv//uPv33/4/ffPmJ+05vvfj9dd7frl/N/D///SO96/ro7/+vl/Nvt0r3tfri/3U7/+v567a7/
tfvr6e2tuw1p33457/55vvcZ7/6t9/y3Pu9TH+5y+un1PGT+3Xcjxv7zl7eXPtz+8McS78+DJ27E
2v1l95//EYD+8pf+oN0619i+a44p7H7e96aHP3a7P1udWxrbd83H3uD43e1xq+1zORz8ly6m4FuB
2/X+x58vp9vLLwHS6pwPMeXlU/hmq2bymMrdm+8tL/gpsnjBP0ObrTufwh+7b3ubb/+rb2V/fpc0
l8Pu8j4gr5PlvKZ8l95/DAdaFMKHxPj5fIsF/PPfH/MsHP1rOPztdH0/f/r7P0/3EHL+A5RMbfB8
1t/25+z9dr283L7979YjlAH37TJZ4C2GK5hIw2qse/7iP7ebwSVZNawTPyefsjs0LpcuuYZV23q8
Q8m0mPX5qztOX59bTmQBBUn58oMFZBlZgEMA87GERoABMHQ/gmGNlF9PP+E+n17fqxjGEECjXhPE
ustVRJ7QwggPnyvIRNliM/DOK0+mzGBbrV5UC2fQndd9HCzWo3ZO49Bg/UAWznVIZmkANTv7euW+
zMBu5Yh2H+z3ppc/rt5X4HZrJ/X7YBQHatpxBAVP+5H6erBSI5FerI6PpQzTbzy0U/J14UEt33bU
cvDO3ScPvc0QhnNpWZPMTDDUGOX1QfNqWStpmNpo+/KaafNrWbvtaQCWThNOkL/SpxntdAMWqnw+
LWcesRLpJaRCEQRT2wV0Aw6B630vImKPRWv+ty+vrzUXUO+vEcEzXt2FK+FGrDDdx48VRKNknWts
3zUnE6c3rVY6mjXT2L5rPvYG64k75XDwX7qYgm8Fkkk6Qlqdc726X+CbrRrR9r353vKCx5X9M7TZ
ukld39vE4Zk0F0HVU16k1u6NtCiED6vnQwHDZBuO7NR8TXBQy7ccoQy4b5fJAm8xXMFEGlZj3fMN
9UNxacCsGtaJn5M22r24XLrkGlZt6/EOJdNi1uev7jh9fW65QsXOJuXLD1ZSW08W4BCYUlbTCDAA
rtN9CIY1Eq3Rf7qeT/+suWiGABr1miDWXa4i8oQWRnj4XEEmyhabgXdeeTJlBttq9aJaOIPuvO7j
YLEetXMahwbrB7JwrkMySwOo2dnXK/dlBnYrR7T7YL83vfxx9b4Ct1s7qd8HozhQ044jKHjaj9TX
g5UaifRidXwsZZh+46Gdkq8LD2r5tqOWg3fuPnnobYYwnEvLmmRmgqHGKK8PmlfLWknD1Ebbl9dM
m1/L2m1PA7B0mnCC/JU+zWinG7BQ5fNpOfOIlUgvIRWKIJjaLqAbcAhc73sREXssWvO/nOp+H9j7
a0TwjFd34Uq4EStM9/FjBdEoWeca23fNycTpTauVjmbNNLbvmo+9wXriTjkc/JcupuBbgWSSjpBW
51yv7hf4ZqtGtH1vvre84HFl/wxttm5S1/c2cXgmzUVQ9ZQXqbV7Iy0K4cPq+VDAMNmGIzs1XxMc
1PItRygD7ttlssBbDFcwkYbVWPd8Q/1QXBowq4Z14uekjXYvLpcuuYZV23q8Q8m0mPX5qztOX59b
rlCxs0n58oOV1NaTBTgEppTVNAIMgOt0H4JhjcRp9MdNUXfRPALo1OuEWHu5CsgT2jTCh89VZKJk
sRl455UvpszD1kC9KBbOoDuv+zhY5EZtTOPQYP1AFs51WMzSAdTs7Jco9zQDu5Vj2r3PwPTy16j3
J3C7tTP6/WE0D9S544gKnvJjNPzDSo1Eegk6fizlNP36Q0slXxMe1vItRy0H79x98tDbDGE4l5Y1
ycwEU41RWh80r5a1koaplbYvrZk2v5a1254GYOk04QSUnA4z2ukGLFb5XFrOPCIj0vWkQhEE1fpq
ugGH0Oh9HyJij8Vo/u7tdnmrexBvjKESwwvcyosYwE8x48SfDmsISMXa83n41yKdTMG8XhUp68Dn
4F+DYzTKTOs0n0ObcsDp+FcmncwTtOW1UbBr8JyHaRWgvYPgsre+URQ7CJkUTOtA7yMEu2lgLxuW
tJsgeNN7CsGwBFXw5fcX5kLHaRv/YrjLYACC7jVsMOKFJPy7GJnAlsNfmVTjKuVnjqUWqimXIrvG
dcNmt9HeRE0JyxJtXM2PQj/gpFpxEWJzIGEFfrdq6c6FlJw/f1lvPRSTGXUocC+jlOYoAyn2NVwJ
kBcivcfx6fzTl59/Pl9rrrUYQ6Pzl7h11zqCn2IGRjEfVtCcmrXn8/CvRTLbonm1dNPWgc/BvwbH
aLSe94t8Dm3KAafjX5lkns/QlteGfo9jlYdpFZA9juiyt75R8D2OXAqmdSD3OKJdnOVPDUvY45C8
yf2GaFiCKviyexxJocPAnf5it8dhAQLucWwx4oUk/LsYmcCWw1+ZVOMq5WeOoXCqKpciu8Z1w2a3
zR5HVQnLEm1czY9CP+CkWnGR/N2QsgK/W7Vwj0NMzp+/rDYmysmMOhS2q1BMc5SB8D0OXwLkhcjt
cXw+fXm91V1qQwidyk9Qay90ET1BnMhEOKoiOKXLzibhXoXFRBusDfSaqgRsBu7rPwab3ICfkzk0
qQSYi3tNFrM7ABteESW7GcssLCuA7WUMHnvjW0Ozk7FKwLIGzD7GYDaP67Q3ibsYnC+zhzHYFSCy
nsL+RSzvNEvHP1juXtRCwHsXrUc3n4J7t6Lgtxvqqoza1ic7U0xVUHml8Nza1gwZy1Z7FeXVK8my
bR0/Bq1AU2rEMahtgGneu92cxTsUfGruvCSzqVBGUpSB0L2JIvqiCqPZl/AjNj543J7E6/l2rru4
+gg6aT5j1l7YEvaMN/GE8aCKuJStOJeB9/oXE6s3NlBbmtVz+N5rP44mudk9ZXJoUQQoEe9qLKby
CGt3HZTsPixyMFw9tvfQO+xtbwbNzsMzvOH6mX2H3moexEkbEncdaE9mz6E306MxfsJ+QyjqNCWH
Y8vdhjoAeK+h7UhmE/DuSgT4VsNakU7TyuRmhqmGKS4SnFnTeskT12pvobhw+hSbVvAj0AUwoTbc
gRLucZJ73Y7FOwpsYt58I7MNUEI+VGHQvYQCWqIIotlH8CIsHmjMHkJXdS11KiXdmVy/nbhn0MWZ
39XRD+XqnlE915nOnK5eCnUlewKdnQbq+L2ALjNpu6o9gA7X/wy456rTmdnVDvCuXOt3VrO602j8
bm93USu0fbe3v6ZpTd9Ns7ADtXzGg9bwnS56xp7X7F0ykDpLrV4YGNXojUYeCezZNTKgrYchkEKz
Cjz3bEui31Vr7s6J4XcKrU1NNyON3RXqazStZpXachwDifjPZkKqdnun26pUO3d757sK1Myq4Q65
gxq5q8CFOUBWpZoTAksUWgOfX+te/NT7a5TijFd3RUq4EStM3/FjBQUoWeca23fNybzoTatFhGbN
NLbvmo+9wXpeTjkc/JcupuBbgWQmjpBW51yvlxf4ZqtGNHNvvre84HHd/Axttm5SO/c2cUImzUXQ
z5QXqXN7Iy0K4cNq6VDAMNaGIzs9XRMc1NQtRygD7ttlssBbDFcwkYbVWPd8Q0lQXBowq4Z14uek
jeYuLpcuuYZV23q8Q8m0mPX5qztOX59brlCHs0n58oOVmNaTBTgEpo7VNAIMgGtzH4JhjURr9M+X
t9Pr673msgkhNAp2gVp30QLoCWIY5tNRBbEoX3Y2CfcqJJMnWFdrGmUJ2Azc138MNutBnCZzaFIJ
MBf3miQzdwI2vCL0Kv85C8sKIFo/eOyNbw1c8WcSsKwBqfuDWRzFy94kqH/el9Tnwa4AkfVk9wPm
8oY5Gv9gtytQDwHuDbQf3XwK7t2Kgt9uqKsyaluf7EwxVDI1lcJza1szZCzb7CXUVK8ky7Z1/Bi0
Ak2pEcfI3wHJvHe7OQt3GqTU3HnJarOglKQoA2Hqv5C+qMLg+xCexMYHj9mT6Kqeh/xwV4nyzuTB
xwJqQIrEoKt7uLF+iStg19WmM6mrf4GBYrkksut6j4//nhnHXdV7ChSrFvBd155O1q72ecAzVsHe
QWf14F8oi3lOdgavHpghFXsFneELB6QE+qnZTY/TnfuItDeQ9aH3BLqrEiHrwe8BdMmzbPsDQ+1f
HBrV/M1GIw3t2k1ysO2HJpRFuzqserqlVOiqn/nP5NSuRtwINNLshZXSZNauXtuObSSVBjOcEL6d
9SP7FdNdn5Lr3F9LZyUJAAOAmltHDyB3hcZ2IA62OIymDpBVl0qIoZKeC9zKSxXATzHjxJ4Oa8hD
xdrzefjXIp024WO9TlHWgc/BvwbHaJSZwGk+hzblgNPxr0w6dSdoy2ujQME/52FaBUjLz3nZ3igK
VZ9JwbQOtL4P/2Eaz8uGJSl9wZvW/MGwBFXw5fcB5khx1sa/GO4IGICgewMbjHghCf8uRiaw5fBX
JtW4SvmZY6l2asqlyK5x3bDZbbTXUFPCskQbV/Oj0A84qVZchNgASFiB361aujshJefPX9bbDMVk
Rh0K3LsopTnKQIr9DFcC5IVI73FcPtdcZZfPGm0fsequbB5zxAmcof9QQWG0q3tG9VxnMp8un6uF
F75SCtdzrcfL5/VUDugH7wWz4J6rTuZqD2dzfvX7Cwm20WqRPYXL573dRY3vIyxhjdZL7h1cPsfp
OLUMYb8g50Hq9ctnXfSMPbsXMBQrjKTHZzv9XxoY1PytRh4J7Nk1MqCthyGQQrMKPPdsQxlQWBAo
o2b1oaebjSYvLBKeVrNKbTmOgUT8Z3P+Kh4npsdtVairmYQ85/lKAOuGO+SOqVTV2AeccW1sTwgs
URgNXLX9f1F9v30x2eW/iN/nX+K++aVuG1+7umdUz3Wms6H+W/pLyffzF7tv5nn84yWzM32p+h4e
XzAL7rnqdNbVbnVfyr9jv1jtaF8036tfDL5Rv+i/S78Yfot+Eb8/v0w7xBfwO/OcB62B33TRM/a8
Bk62ZS+W34GXBkY1cKORRwJ7do0MaOthCKTQrALPPduSrFd/X31x+qZaUR96uhlp4MJvpOG0mlVq
y3EMJOI/mwnJaf0N86Xyu+WL17fKF933ybrhDrmDGvitAhfmAFl1ak4ILFE4Dfx+O729nLu6zfEp
ik41LrFrr1EkhyXuNJvnP1TRhLoqUNm0qMti1kQHAxmirYiUR4taHGez3CReZHVoVRhVUi2qtJjF
M7zt9VKi2Ve5GFcD0/DRaW9/E2k0fS4N43owGj9azvP8qbWJml+OwOwBRNMydMBf2CNIij8N7elv
lnsGNkDwHsI2lEFMpEXXY5LYmkwUpNa8YtTMMhVRVYVTZdi8fjgLsNrDqCpmebrNK/uR6IwisXbc
htpySBmG521cvCciJtiCD2U2OWrIUVE4dA+lgjYVBNPssXgTKk9Ueg/m7fy15gJ8uGv2Gya0uste
QA1IgXgMnyrIkH6JK2DX1SZT7WFZrfgUyyWRXdd7fPz39UCPCRzcVy3gu649mccDoNGZ1u90pOhW
K0b2Nh7We8NLHN/NeAK2WjO5f/EwicN07iPCjkXeh9wneNgoEbIe7D7EWLYwufoDu52H8tDgXkO7
0UhDu3aTHGz7oQll0a4Oq55uqCtKq4Ll1K5G3Ai00f6lldJk1q5e245tJJUGMzx/RYe56nKTFap2
LiXXub8S1loSAAbAVK+SHkDuuN72IA62OLSmvp5vX65VP3YcI2hkZ4pZd5HK2DNemNPxoIIwlK44
l4H3+pPJMhpXKxLd6jl877UfR5P1jE0yObQoApSIdzWSaRph7a4DvSp/ysFw9Yg2Hx32tjcDrtDX
8IbrJ3X6aBWH7KINCWqd8yQ19WimR2P8WP0+FTVMyHBsp+JrAUAt33okswl4dyUCfKthrUinaWVy
M8NQh1QUCc6sab3kiWuj/SsKp0+xaQU/Al0AE2rDHfJX/TzJvW7Hwp0BITFvvrGS92XkQxUGU+xF
tEQRBN838CMsHmj0HsL718vjrqm5nsYIGkWdYtZdyzL2jBd4QDyooCWlK85l4L3+ZDaNxtWySbd6
Dt977cfRZD2lk0wOLYoAJeJdjWQGR1i760C/h/CUg+HqkT2E0WFvezPgewhreMP1k3sIo1Wcv4s2
JOwhcJ6krh/N9GiMH7uHMBU1DMlwbLeHUAsA7iG0HslsAt5diQDfalgr0mlamdzMMBQtFUWCM2ta
L3ni2uwhVBROn2LTCn4EugAm1IY75K/6eZJ73Y6FewhCYt58YyX+y8iHKgym3otoiSIIvofgR1g8
0Og9hNsvl/eaq6n316jpGa/uKpZwI1aY/uPHCipSss41tu+akznUm1YLJM2aaWzfNR97g/UcnnI4
+C9dTMG3AslsHSGtzrl+X2CBb7ZqZE+gN99bXvD4fsAztNm6yb2A3iZO0aS5CPsAlBepy3sjLQrh
w2r/UMAw2oYjO91fExzU/C1HKAPu22WywFsMVzCRhtVY93xDOVFcGjCrhnXi56SNpi8uly65hlXb
erxDybSY9fmrO05fn1uuUL+zSfnyg5Xo1pMFOASmltU0AgyAa3UfgmGNxGn0a/e17qJ5BNCp1wmx
9nIVkCe0aYQPn6vIRMliM/DOK19MmYetgXpRLJxBd173cbDIjdqYxqHB+oEsnOuwmKUDqNnZL1Hu
aQZ2K8e0+8N+b3r5a9T7E7jd2hn9/jCaB+rccUQFT/kxGv5hpUYivQQdP5Zymn79oaWSrwkPa/mW
o5aDd+4+eehthjCcS8uaZGaCqcYorQ+aV8taScPUStuX1kybX8vabU8DsHSacAJKTocZ7XQDFqt8
Li1nHpER6XpSoQiCan013YBDaPS+DxGxx2I0//Vedf1c7yoJHNEqr1oeNSDFwX6911EM9RJXwK6r
TefM9V4vb/Dlksiu6z0+/ntmxIYEDu6rFvBd155OzR7Q6EwX6PgE3WrFkIa/3veGl7hCvy+BrdZM
a/frfZqP1zuo27M+tGa/3pUIWQ9eqw9li0PrcWCo04tDoxq92WikoV27SQ62/dCEsmhXh1VPtxQD
hVXBcmpXI24EGmnwwkppMmtXr23HNpJKgxlOiNtxrrrcZKV6m0nJde6vZbKSBIABQI2toweQu0Jb
OxAHWxxGU99/q3wp0BhBJTsTzMqLVMSe8eKcDgc1hKFwxbkMvNefTpbBuF6RqFbP4Xuv/TiaZGbs
nMmhRRGgRLyrkU7TAGt3HRSo8mUOhquHtPngsLe9GRQKfQVvuH5apw9W05BN25Ck1hlPWrMPZno0
xo/X77GocUKOx4YqvhIA1fKNRzKbgHdXIsC3GtaKdJpWJjczLHVIeZHgzJrWS564Rtq/vHD6FJtW
8CPQBTChNtyBEODTJPe6HUt3BvjEvPnGWt4XkQ9VGHCvoISWKIIo9g3cCIsHGr2H8PhfzcX0cNdo
6Qmt7hIWUANSGPzDpwoSol/iCth1tcn0efz3alWkWC6J7Lre4+Ov68EbEzi4r1rAd117MkcHQKMz
rd8BSNGtVoxo/8d/3Rte4rjqfwK2WjOp9x8mcVDOfURQ+nkfUnc/bJQIWQ9W149lC1OrP7BT9OWh
QS3fbjTS0K7dJAfbfmhCWbSrw6qnG2qD0qpgObWrETcCbbR5aaU0mbWr17ZjG0mlwQzPX9Fhrrrc
ZIXqm0vJde6vBLOWBIABMJWrpAeQO66vPYiDLQ6jqbvLp6rL5OGvkpwTXuXlKeBGrDidh481JKFg
nWts3zWnU+RhWq89FGumsX3XfOwNMlM05nDwX7qYgm8F0ik5QFqd8wKlneKbrRrS2g/zveUFr1Db
T9Bm66b19sNmGpVzc5EUN+FFa+6HkRaF8OF191jAONf6I0PlXREc1d4NRygD7ttlssBbDFcwkYbV
WPd8S4VQWhowq4Z14uekkRYvLZcuuYZV23q8Q8m0mPWEAA7T1+eWK1XlXFK+/GAtq9VkAQ4BanMt
jQADKPS5C8GwRqI1+tdfLq/nmotmCKBRrwli3eUqIk9oYYSHzxVkomyxGXjnlSdTZrCtVi+qhTPo
zus+DhbrUTuncWiwfiAL5zokszSAmp19vXJfZmC3ckS7D/Z708sfV+8rcLu1k/p9MIoDNe04goKn
/Uh9PVipkUgvVsfHUobpNx7aKfm68KCWbztqOXjn7pOH3mYIw7m0rElmJhhqjPL6oHm1rJU0TG20
fXnNtPm1rN32NABLpwknyF/p04x2ugELVT6fljOPWIn0ElKhCIKp7QK6AYfA9b4XEbHHYjT/5Vb1
KtveXyWCJ7zKC1fAjVhxug8fa4hGwTrX2L5rTifOw7Re6SjWTGP7rvnYG2Qmbszh4L90MQXfCqST
dIC0OucF6j7FN1s1pO0f5nvLC16h7J+gzdZN6/qHzTQ85+YiqXrCi9b0DyMtCuHD6/mxgHGy9UeG
ar4iOKrlG45QBty3y2SBtxiuYCINq7Hu+Zb6obQ0YFYN68TPSSPtXlouXXINq7b1eIeSaTHrCXEc
pq/PLVeq2LmkfPnBWmqryQIcAtTqWhoBBlDodBeCYY1Ea/SX19N71dtnhwAa9Zog1l2uIvKEFkZ4
+FxBJsoWm4F3XnkyZQbbavWiWjiD7rzu42CxHrVzGocG6weycK5DMksDqNnZ1yv3ZQZ2K0e0+2C/
N738cfW+ArdbO6nfB6M4UNOOIyh42o/U14OVGon0YnV8LGWYfuOhnZKvCw9q+bajloN37j556G2G
MJxLy5pkZoKhxiivD5pXy1pJw9RG25fXTJtfy9ptTwOwdJpwgvyVPs1opxuwUOXzaTnziJVILyEV
iiCY2i6gG3AIXO97ERF7LEbzd2/vt6orqA+gksEzYuW1KyFPaHHEj59r6EbRYjPwzitPZ09vWy96
NAtn0J3XfRwsMgN4SuPQYP1AFs51SKfrCGp29gs0/yIDu5VDmr+335te/grN/wxut3Za8/dG02RN
Oo6k+Uk/WvP3Vmok0ovX/KGUcfwNh4aavyo8qvmbjloO3rn75KG3GcJwLi1rkpkJlpKjuD5oXi1r
JQ1TI81fXDNtfi1rtz0NwNJpwgkIcR1ntNMNWKr52bScecRarheQCkUQUPPr6QYcQqH5nYiIPRat
+c9vX34tuICu5/fz9ffzp914GfVRNFJ4Ri26fJXoETFM+vGjnnQYrHmdQYv1J5OoNy1VQBXrpzNo
sf5jb7CeylMmh1ZlEBNpUY1k8o7AtteCfk9gkYVxBZB9gd58b39T4HsDzwkY14DcH+ht4hBOWpKw
O0B5kZq9N9KiED7svkAoY5iQw5HdrkBNcHBPoP0oZlJo0Ymy8NsNaTCd5pVZT4p6fWJVJjC35jXj
J23VPoFV6XQpNq/gx6AJUErtOEP+2o/z2/O2LNw7YFNrwTNW0l9POuAQmHJX0xEwAL5v4ENUrJGY
PYN//dZdq769GCOo1HOCWbflJWPPeHH6h4OKLypKV5zLwHv96TQajKu/M9WtnsP3XvtxNMnM5TmT
Q4siQIl4VyOduAHW7joo2ClY5mC4emifYHDY294Mil2CFbzh+uk9gsFqmrZpG5L2CRhPeq9gMNOj
MX78nkEsahyR47HhvkElALp30Hgkswl4dyUCfKthrUinaWVyM8Pwm82KIsGZNa2XPHFtfl9QUTh9
ik0r+BHoAphQG+5AiPJpknvdjqW7BXxi3nxjLfSLyIcqDLhnUEJLFEEUewduhMUDjdtDuJ3fPr3X
XVBDCJ2mTlBrL2cRPUGcyEA4qiInpcvOJuFehcWUGqwNFJSqBGwG7us/Bpvc0J6TOTSpBJiLe00W
czkAG14RJTsLyywsK4DtLQwee+NbQ7O7sErAsgbM/sJgNg/ntDeJOwycL7PHMNgVILKewj5DLO80
Scc/WO401ELAew2tRzefgnu3ouC3G+qqjNrWJztTTHVOeaXw3NrWDBnLVnsP5dUrybJtHT8GrUBT
asQxKKk/zXu3m7N4F4JPzZ2XZDYQykiKMhC6F1FEX1RhNPsRfsTGB4/ek7j8WvslyhhBI81TzLoL
W8ae8QJPiAcVxKV0xbkMvNefTKzRuFpt6VbP4Xuv/TiarGd3ksmhRRGgRLyrkUzlCGt3Heh3H55y
MFw9svcwOuxtbwZ852ENb7h+ct9htIqDeNGGhF0HzpPcAxjN9GiMH7vfMBU1TMlwbLfbUAsA7jW0
HslsAt5diQDfalgr0mlamdzMMNQwFUWCM2taL3ni2uwtVBROn2LTCn4EugAm1IY75K/6eZJ73Y6F
OwpCYt58Y7UNUEY+VGEwBV9ESxRB8H0EP8LigUbvIbx/+e18rbmchgAaPZ0g1l3IIvKEFihA+FxB
SMoWm4F3XnkykQbbaq2kWjiD7rzu42CxHstzGocG6weycK5DMm8DqNnZ1+8WLDOwWzmyVzDY700v
f3ynYAVut3Zyn2AwiiM27TjCLgHtR+r2wUqNRHqx+wOxlGH+jYd2uwN14cG9gbajloN37j556G2G
MJxLy5pkZoKhAimvD5pXy1pJw9RmL6C8Ztr8WtZuexqApdOEE+Sv9GlGO92AhTsAfFrOPGIl3EtI
hSIIproL6AYcAtf9XkTEHov93cDr+dfz2+09y7jW338vrJG485779Idx4INIlH8ee7n/GjxSzk+i
Sp55vONsm90BTuMwp1wVJp/Jcl91chDXzfsJVZ499roi5x1J3v/tbJ/sGS4vCPm7TzEC9x1oMC1D
B/yl70Tncs0bf/Fvpt+NmgDh35Eu20/F43zmWDlStLu8BeTdr90n+EvDfLtrnSWTGdleP2glxXa+
aW2prmv+eCzbEqvS/hiVxiee5RPvbMtevoaPcQ4EymCZW0aMaasNEpVtsia/vE1Yjn8TWUi44iYC
ZO1SbST73BfJFcSwKBz8/XQ5ZSwIpvq+2plMeqLSmvP1fENE7GTGRgo8ZfgE6NWch6hQH6Zaabp0
ITTpw2g9j6Inp0J5R1F3DpYawZk6CNV6mCol5pMHrS0fhvFmn0+eoCbzPiTGw0aJkPVgNeK43nBn
9Qd2qrA8NKgD51u3aBvz4V78JdC6HXikkINdt5gtFk+3Lfc6rJqM4cZ7aVWwnNrViOvJNt93lVZK
k1m7elHjqBK48juu7KDzSyl/RYeB6HKTFX63xaVkVSfsey0tCQADYKxcSQ8gd1wPeBAHWxyaqf92
vfx+up0R3r8wFSOGsTgdARqA8xS1QDDX6oG1G6EJguG6YacROG2ABRA1wmSt0QnPTkI1g7lSL2S8
aM0QjOMdvzzZgnbgfUnMYFeAyHqymmKuSbht4x/stEU9BKgxlq2iYuMqBLL6biTfl5rmR+WUb4If
rnR8x92uktkmab4LbFhTPOEPUF1kIll+d2RY55LUP0DFuTFulpXtN0Ukc9gg3/ytltAO59Zg8+2Q
lK99hYu+FyolaMpAmMoqpG6qMLje8yR1PniMWvvy0+vlBZJ/iaUULxKKcIBoP9JPVn6DtVr4PXtR
um+wywya2Z9VfYC7rPmCsUryLX0kxTdYawXfyonRe4Pt1ATSEyypPcaT1nqDmR6N8eN1XixFvEPH
Y0OVVwmAary0HdQMoCGOmUzJtZ6W2REZZdvcB6sa21I3q2GuE9qzN7NywuluX1l54phqOrMS6/Pe
vtbMiLbKyVjNEaSgfbaENpoYhW8zMFJyfLbm1S3TcUXESxUG1HAllEwRRKHf3MiaBxqtte6X8+sn
RLolhkK0wBbCZ0C3UV6iahuMtaLt2YnQbIPZepLM3pxik51FvRZsNXJt6SJUbzBWirWVD63VBtN4
q6cnVVBqtB+JNVipkUgvVqPFCoT7cDy0U2h14UF9lt7yRT/rGAIU/9wt10h80shD59rTVmXgml6D
mmRak+EPk8rrg+bVslZST7f5HWB5zbT5tawdPdaqwSt/E0iMTM+08lf6NFqdbsDC3wbyadnVC/t9
YAmpUATB2H8B3YBD4PrDi4jYYzHPp3i7na+fTy/QLwefjIGo8V85z8fIMy8Eb/mJF9FB/cCLjCP1
vItomvkXr4so7NMu4CDysy5me9WjLlZu0pMuooP2QRc5P+Y5F9F8+ueHTxeB9JQL0Z9+xkW0LEIW
vfnnWyRViv82cPqT4dMtTGDQZ1s8tZiafyobQ5k9j4HoaI1zpPOiGuiHLKLUr7esKtFa7f8tumV1
NUl/iCqjE830WRaWFS9dwIeoPk8HDDMzfooFzUE2yZl4GkRKYNzbhtETLMScPSpd9vyKCsJXEAx8
dkU5FVSHUjy3wpkk+mEyvzc8vfzz9DP279dSUzFi/N1MPEJ+w8h4yr9iHM3VP2NcuVG/YxwNM7+v
SCKwv2SEAsi/ZYzWqh8zPjlJv2YczbU/Z1x7Mb9nHI2nL8QXJ1v6RSPrS/+mcbQrQGQ9+d81TjWJ
316HPxj+srEaAv1t46JV1PwoYwxk9ju9bF9qmh+VU74JfrjS8R13u0pmm6T9L5vsaoon/AGqi0wk
09862tW5JPUPUHFujJtlZfyLR4o5bJAv8SvCmXY4twajXz0K+dpXuOx3j4UETRkI/O1jGXVThVH8
/tGR1PngcU8b6W7nl9v5E/YEk4UxEHX6l/HTMfQcE94beJZJcNA/zWTtSD7PJJjm/g11GoV/pgka
BHiuyWSve7LJs5v4bJPgoH66ScaPe75JMJ//3evyIhCfcSL5M885CZZFyKK38LyTuUrTP1aNf7J8
5okFDPzck2WLqfp32SGU3QM88h2tcY50XlQD/ZBFlPr1llUlWqvDIw8Mq6tJ+kNUGZ1ots9FMax4
6QI+RPV5OmCYmfUzUkgOsknO1HNHEgLj3jasnpUi5exR6cLnpZQTvoJg6HNTiqmgOpTm+Sm+JNEP
k3n3++10w56jklpK8eK7VcMBoD1pP1F1jtZaybnyIvTmaJd5t+fszylNxF3UmNFYIzCffIQqjtZK
abl2onXlaDu9+jE9wdJbqRlP+r3Ug5kejfHj300dSxHf0zgeG76duhIAfT912g4qRtMYx0roZFtP
y+yIjLJt7oNVjW2pm9Uw1wnNuZ1dOeF0t6+sPHEsNaBdifV5b19rZkRb5WSr+ChS0D5b4pXXE6Pw
bQY2Kk/I1ry6RfqujHipwoDv7i6hZIogivd3u5E1DzRaa51+ekCdXqCXny1t5ZiBNsyHgIbjfUUd
F+21Si7jR2i5aLkeMosYnJ5DQ4iabjbXqLqVl1DVaK9Udjk3WttF69gdnk68oO8kbxI3GpagCr6s
1kuKE27p6S92es8CBNR8aBsRHJVo2gajDARkk79388QDS0sREcgP6zUrNo+lWhYcyLqsxcEhNOc1
7WImp1UMiHGQioapDoVlVNxKlYFwjubbZL0QaV71U9e9nk9vCFVbmIoRQ/ubjgCexnmKLC2Ya0na
2o3gaMFw3ZbSCBxDwwKI/Gyy1tCzZyehmsFcSc4yXjQ3C8axPSxPtsDMeF8SM9gVILKeLCebaxLu
3fgHO0ZWDwEyJLBV8H46LGUTUYXRMbH5JjUiYkJAhIcBHaWUhRWE1nEwvI2hETTnM2lVJqdTigfy
r9KmqAyEZVPYLlVhcN7l2Uh98BiGdMdeEDrb8bFie7uD7wXN+8gM665/HeiTD8Wt7rlXj02+LKsS
XGU+dde+/HPhITGpu/q1n88uDIe6z6+BSk6kxJ4IL5o33adXPMEohA/Ple7pO5mGI0OWVBEc5SzA
bc04KVA0NzwYQMmG7syrI/VU6A6815HjQVwPKGZAmqBK7oO1HMhdxXru3Gv9tJTnjrxzT+A76gYG
hwA5jra1gQEUvMal6Vkj0fzj5ZfTFeEysx0fK3Sm8SPAZfI+IpfpbbVc5smH4DK91bpvTL4cl5Fc
RS4zmmq4zMJDqFpvq+Qyzy40l+kt432cnEiBy1BeJE5vpEUhfFguExYebrbhyI7L1AQHWQZyWzNO
ChTNDQ8G0HGZcH8ZcRkuGsJl2B5QymVUQXVcBmw5kLvmvMXOYnLa2GAgl9E3MDgEloG6tYEBcC7j
0/SskWj+8an78tMrtDOTWkrxQn+KBwCnof1EXjNaa5nNyovgNqPdupMk/hy/QdxFjhONNSznyUeo
4mitZDprJ5rrjLbxTl+cYIHvcJ4k3mimR2P8WO4zlSLcnuHYjv/UAoDsBGsHrJsKSdcoFEF0fGi6
G40YER8P4URi3yjlRerAOm4EtyowgOY8zv3I5DQK4UCOVNb4VGGwTIpaoiIIzpn8mqUHGs11Pl/e
Tq8IdUoMhWihlYXPAG+ivETWNBhrSdOzE8GZBrN1i5m9OcYkO4t8Kdhq6NLSRajeYKwkSysfmisN
pvFWT0+qwJRoPxJrsFIjkV4sR4oVCPfheGjHkOrCg6wFuuU5Lw2OqhnAIXTMKN52RsSIDYfwIqE7
lLIiZVgdJ0LbEeavOX9T0zE5fXw0kA+VNDdFECyLgrYHh8B5kFdDtMdiWMtrd4L+0VtiKESLPWv8
jHAgwkvmQL2xmgM9OVEcqDfLdJTJm+VAorPMgUZbFQdauEgcqDfWcqBnH4YD9abTHZ6cVIkDkX40
B+qt1EikF8+BQgXibTgcGnKgqvAoN0Fuec5Lg6NqBnAIJQcKt50VB+LCQRyI7w7FHEgXVsmBwHaE
+as4UGw6NhyIjYZyoILmpggCciB924NDKDiQU0O0x6JZy8/drUMo0GzHxwoNa/wI8J+8j8h+elst
+XnyIbhPb7VuJJMvx3wkV5H3jKYa2rPwkKr2sFWSnmcXmvP0lvGGTk6kwHgoL5qHPIy0KIQPy3XC
wsPdNhzZMZ2a4CD/QG5rxkmBornhwQA6hhPuLyOCw0VD+A3bA0rZjSqojtuALQdyV5230FlsThsX
DOQ1+gYGhwAZhba1gQFwPuPT9KyRaP5xeYN2cyYzNtL8Tm6Ix+Q8RBbzMNWSmKULwWEeRtm3MIsM
hncU+ctgqaEvqYNQrYepkrw8edDc5WGYvO8WYy55HxLjYaNEyHqwnGVc7/ySWUPGUh4aZBLArUv7
4BiKmxpy1zGV8UYyIipMMISnMHd6KUtRhNRxFKytIN6a8xXah8np4mKB/ETbpMAA8Pu8a7AVvYx4
h7Z5Y7PFoZnEa/f2M0JKZjs+VmhB40eAl+R9RGbS22qpyZMPwU16q3WbmHw5diK5ivxkNNUQlIWH
ULXeVklRnl1ojtJbxts3OZECS6G8SJzeSItC+LBcJSw83GvDkR1bqQkOcgnktmacFCiaGx4MoGMt
4f4yoi1cNIS3sD2glLmoguq4C9hyIHfNeYudxeS0scFA/qJvYHAILAN1awMD4DzGp+lZI9H84+10
u/wO/Xur1FKKF/pTPAA4De0n8prRWstsVl4Etxnt1p0k8ef4DeIucpxorGE5Tz5CFUdrJdNZO9Fc
Z7SNd/riBAt8h/Mk8UYzPRrjx3KfqRTh9gzHdvynFgBkJ1g7YN1USLpGoQii40PT3WjEiPh4CCcS
+0YpL1IH1nEjuFWBATTnce5HJqdRCAdypLLGpwqDZVLUEhVBcM7k1yw90Jj3Gf7SXaFvpxJDIVp8
I9f4GXk3IuElvxmxN1a/GPHJiXovYm+WeVvT5M2+FVF0lt+JONqqXom4cJHeiNgba1+I+OzDvA+x
N51ep5OcVOltiKQf/S7E3kqNRHrx70EMFYjvuhkODd+CWBUefQcicstzXhocVTOAQ+iYUbztjIgR
Gw7hRUJ3KGVFyrA6ToS2I8xfc/6mpmNy+vhoIB8qaW6KIOD7xvRtDw6heNeYU0O0x2JYy/3t5Zdr
93b5v/MniAqt7LHYsZEt/oTwIyiGzJYSHzVpyvtS3CmxzjSk51gsk1KGknnVwkVFr3KeEstKfLRk
i3BlOFfiMTWW9YUiMTAwCs3HEuPSLMAYPFdbFjB2jfSvhszNEAzlV4q2BTgXoJY0tMKASsa37AtW
xA+ICvE/TU8rZoM1IEpuqGupqjAqpvjUMW0IIxIU5Y3VDbo4JMgpa1t3YUAF32zS1L2Rab54ewT7
+o6w0NRSihf6ajwAOCftJ/LM0VrLMFdeBLcc7dYdLfHn+CTiLnLIaKxhj08+QhVHayVjXDvRXHG0
jR1jcYIFfsh5knijmR6N8WO531SKcJuGYzu+VwsAsi2sHbBuKiRdo1AE0fG36W40Ym58PISziX2j
lKepA+u4GdyqwACa8zj3I5PTKIQDOVhZ41OFwTIpaomKIDin8muWHmgM17me3t4vZ+xf2z0ZA1Fj
W5uPER4leMtsKjqoCVXGkeJU0TTThhZRWGYFB5H51WyvolgrN4llRQct0cr5MVwrmk/t4ukikBiX
6E/zrmhZhCx68xwsqVK816c/GTIxExiUJaEtRvLU4qmbjzqUkqElt7QVSZNCQjwN60LFbK0svJKz
KdofHkPF3NIGZ0PexIgof6topgXBQC5X3mbVoRS8zrkB+2HSbOz37vV0u2BvV1nayjFDY5wPAX7H
+4rsLtpryV3Gj+B20XLdsBYxOGaHhhB53WyuoXUrL6Gq0V5J6nJuNKeL1rFxPJ14gdFJ3iRuNCxB
FXxZLpcUJ9zV01/smJwFCMir0DYiOCrRtA1GGUjH4JJ714jASRER/gb1mlL2VhRcx90ULQ4OoTmv
aRczOa1iQJC3lTdMdSgso+JWqgyE8zXfJuuFmF/f18vbp+7rd/fL+TX/m5D3Ly8v5/f3z19eX+//
GIJO//2bH7//4cfdX//+v//42/c/fv/NN/8PUEsDBBQAAgAIAJdgdkerne8+tQgAAAMgAAAyABwA
anMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LXByZXR0eS1kaWZmLmh0bWxVVAkAA90f
UlbdH1JWdXgLAAEE9QEAAARQAAAA1VlbU+PIFX7nV3RBZYAtJNtgM9gGp2a4VFK7SabCJvuYalkt
qwdJre1ugT2z/PecvsmSLNkmNTyEKUatvp7Ld853WlzHMk1mB9cxwSE8UiIxmseYCyJvjgsZeVfH
0C3kKiGzg0lCs6czNHmmgkoSou8HCH4kWUovJHPGsaQsm6CMZWSqhwLGQ8K9gEnJ0gka5EsUQpuE
04PXA7Od3WTOEsYn6Kh/MdZj/gNNyB2NIjse4PnTgrMiCz03NbpS/6oHmRMES2iIjsIwNGMRy6QX
4ZQmqwlKWcZEjudWwBTzBQWRByRFfdOVM1BO68FJAho9Ey1QPGhIenFx0bK/wJnwBOE0qgwK+o3o
M6qHegmJ5AT1/ZHrD6nIEwyb0AwsYyV8oaGMYXG//ycrHw5Dmi3KlUY26xrVqnvHikuzGISS5fSY
PRPe0Gg0Gk27jE2IMYOvfPILnCXs4ihhGNTgdBHLuufUrFtQH4Mu7igGpqcSVOw3VJY4SIg3J0lS
09LT+9as9BKDdp72oYLaC8f5WrJHMle+6wSNXlyHTBMuFrPO7gCofr40J9wvc3Av7A+qkTPkq0dT
w07xBA1JsFL/Iy3q54TNn75gLn1QdRJRLqQ3j2kSdhpWHfcI68+2bcZJCq4923GePcOZ3wDOC9SU
GuxGDnWAFknnOPFwQhcQG5K1qMWJQvpfcBYmxJnD7qNMqN5jYhy6xvO84EK5RondjEAcgHcK5zE4
swSOCR4t3jYpajjfhMOCk9W0AUx/tMtfxsTIl2ynmf2Is7RhbJsf1RnK6n8v0oBwQBOposv0OsE3
06hF7XhcS4AuXNrSoIvk4XDYmm6q3i9zjNpoZELAhEGZ8C0OLDzbIGLErcHpwiasiuJaxdaEY0ii
0yxbklTOVXQqMa0BXTaxqHGK1GIVFnkmWvUQ2FO/gh6c4CdPdRiBaIoXpOaZCTovDR4kWFlRTZxD
agAZQBTbQk291165Go47c29EonUCULCCHUt6rERzy9IwCutLwdmie/qYjKfbOL3cyWaZqhw2Krrp
Ogw3NkAhSbpXkPFOaXo/occizxmXwLTcIhmMmqYkkwL91IPzcCFjZuxt2FgVM4B6CTidO0/pBXpO
B/+Xc5QwGCChJ7t0dumArdINTpJbJ0Hr7HPDZSleeg16T6EusF3n/ZJ3mkeD3beeU0Z2GdK1Y9rk
9FlODG16LyR4otKTXIWdsYQRHPnnYlpRY2iVPhISy0J8LgLg8JIPfRU9reKoJZKxJMC8Pu6OjhKi
I3Q9kLJvZW+ZnC5MHNs6SjVdtaDa3SVhV+bYWsqtYRHRJTH72Hzcr6vkY12DmDDbZPEXCrmAN6BW
7vnNo1lIlpCktqi2JsKKCG162WRUo7crm8UyJaYN2FZqgvMCttwp6OVa0IEBsSMh86aFte2Swexr
KXBZmdWOphHHqZGwESf1MqISI7cdmXbTNiuoNdmL5XqSQOEINfMexHQ5fljDy3Jyx6A2RH2sLCPD
zfK4XhzbPYz5NjHcWRKELs+aYz65pOCuOv3q6K+OIxt3ksuPLqFtirklSCq3HZFiU8tXc27GOHRP
O7KM1V+VYKLtcKOHi+t+25QEBySZ4Agi7GxjuenXm2hCzkDVQ/QHOpwelERcoe/m6gRDhc4iT65y
0rrVYadEdmLjihuTRCfIshjFqhjt4KijlAjhCo9OO7e5pRIdjzpR70OFQDFQED1TVojbsgeK2W8k
u62QZRvPu5KjSTFVclG5HFCrkeByu323SLRJ5MJx4F7SWGhAjUOkiokaXdiyr6Poq/JsUEBUZdW8
4/g9pM+TiM2tDVkhVb6ohl+QFJpJ7BDgJQJZgMEGTpEqWepdoIb5NSbmpJ5l2gXIr3SQDEkYC8xs
CzWBnilWOVn+zWIChA04ewGHQyUQY1hriyIqfVUElXoMR7aKL0sR++6ygypk1W+/TqLuk06zxk9p
CLcso5hykHCX7xZGgTqMCfwMtgcLkAavVG96G1TnDfwLUzKtP3449m/xwdHd3V0lpI+uHu4eRg+t
+QmKy3YU39/ft0k9IWkOGarmfFumNWb60ARJa5F/P77qX9m8NU8I5v/R5YG7CqgefW2K1ZTrnv3q
di3mnObgUz6/OYylzMWk18Nf8dJfMLaARTkVCrq6r5fQQPS+/l4QvuoN/KF/bl98KC39r+JwBvvq
/WaovvOchcRTPiQvMO/P4GnlzJvhVWUJCGU/FAYsXMED4gHkxkLcHLubgPpeGA9mvX+DPyFn9e6w
xL373x57v5HgZyrt43NBk7D3T+BdLEgPkALm9CSBDAvX9yKRoIPohaAUvBL+TEJ9ARMeFl7OoVbl
cuVBAVPgxJdLCWIN6tJUPgYdb47oS3pXv7q8IxFDNR02pqibC6p99NEfR4FI3Qx93V/XEMezwXA4
AvPBlFltIgT2XtOAn49nXz49PqKTqMi0Pien3z/8XjA5LQRBQnI6l+Z9evJdJ468CCCdw7TXM51E
7PtSd+Tq2274jycVm8Nz9OqvO9DNzQ30nb6eTpHkBUFU6KcVDJwPtvgRFrnczyKXOyzyDMX2ipIk
fGdxP+4n7sc3OLAh+i6L60dVkUr2OJ7Z4U1194O6uYrvhHpl3i6DXe1hsA9ZIPJpt8muQ5LMvoBS
8NBtMKF5W/sdKbhOXVuDF+m5tLJO2FVvhsYbFB6/r8KtyGlRvoTRm4ywAa46PIBxd2PDTtpqpy0G
YPshyNgJqrvZw3VPPXT7019/MW87gKGmiJgV0BUQu0LbQ7V8qME4eUFkOSe5/hPC4wqUW95zrqj7
XxlZ5uaK+ERWiorQhyOo4/UJuuWjW5xlTCKVlc3BsATYS5dEwG6IRZCdwVhYMu5b+d+Exx9t5PH/
ZOS3g/H/wPDvmmB/XC0x6u/l2Y5paypyLkSLE22x0+8Ivb4vi44G+4k+eAOLblHjvWuY0fl+6pzv
UKenBe/5qvQ9adXn9EcUBY2Hrt6haNZ/+/8vUEsDBAoAAAAAADFcdkcAAAAAAAAAAAAAAAAGABwA
bWVkaWEvVVQJAAOOGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQUAAIACACPYHZHUtUtZugAAACd
AgAAHwAcAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAkAA84fUlZBGFJWdXgLAAEE
9QEAAARQAAAAzdHBSgMxEAbgs/sUc2wvy+5WCgbpoduDgpaCiIJ4yCbTNDTOlGS24tubqDdPsheP
CZlvMv9s+QxdB22nmkvVXQG+p7ZZ1IGNDhDFRDxxFE/upV22y8UrXN/SnlcKAjuXryGJjpLquq62
f6Y2OIwuWwnlHlPSDu++1XUuOirIhQHtFLh8rmfaezdGLZ7pycuh57dTwHK60WQDRgW9Nge00ACS
HnJPGLQ5Itk0barHhLHktfFG1C9bway6mE/qQPYnuK+5tKDj+JFdGkP4n7InL4V8yHreQElHwfOu
B8NEaMpW8puzDt5Wn1BLAwQKAAAAAAAMXHZHAAAAAAAAAAAAAAAAEwAcAG1lZGlhL21lZGlhLXNv
dXJjZS9VVAkAA0cYUlbpIFJWdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAJJgdkfd5mloiwAAAJsA
AABIABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zdGFsbGVkLWhvbGRzLXNsZWVw
LWFzc2VydGlvbi1zdGRlcnIudHh0VVQJAAPUH1JWRxhSVnV4CwABBPUBAAAEUAAAAA3IsQ6CMBAA
0N2vuB/A0IpE2DQsJk5KXIzD0R7YpFzJtcTUr5ft5elSHQulCq1B6bas2kO912UN3Tovd2JL0gvR
S9Wqalqtm+qk3nCdOIjjCUzgJMH3bqYBI0GkBEMG4x3xJjK4bnt+PnBePF3WcSTpXFw85htmEvhi
BLSWLKQACDGz+Uhg9yPZ/QFQSwMEFAACAAgAmmB2R1BgLJfDAAAAJAMAACgAHABtZWRpYS9zb3Vy
Y2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQJAAPkH1JWWRhSVnV4CwABBPUBAAAEUAAA
AO2QMW8CMQyF5/IrPMJS3R2UIao69BhAAraqQ9XBl5gQEWyU+ED8e9KqWzcQG6Ol975Pfms5QtNA
3ZhqYl4aoFOuq/FzFIsRktpEB0ka2H/V03o6/obXGXW9fzOQSVeUM3paivcl8V5KOwOlGMkN1teD
FZO2wpvg+4QahD+DblvZHyL9XHNkFykZaNFuyUEFxNgVJ3Rod8Qu3yIn/ciUFryRWbBq/rENDAdP
o9sMj92uMrD7G+73L1Tyks6Fy32M9yRfAFBLAwQUAAIACACbYHZHrOViwYsAAACAAQAAMAAcAG1l
ZGlhL3N2Zy1hcy1pbWFnZS13aXRoLW1lZGlhLWJsb2NrZWQtc3RkZXJyLnR4dFVUCQAD5R9SVlkY
UlZ1eAsAAQT1AQAABFAAAADzyy9TMDJSMDSyMjCxMjVWSC0vNjQw1svJT07MUSgqSS5KLcgvKsnM
S482NDM0M45VsHFJTSpNt7NSKE7NS/FNLS5OTE8NzyzJcE4sSU3PL6q0UtDIK83J0eTyI9vkzLzM
EpCRwUDTM/PzPPPS8q0UIgKcFZLz8/JSk0uAYkA1ZYk5mSkU2DI43A8AUEsDBAoAAAAAACtcdkcA
AAAAAAAAAAAAAAAMABwAbWVkaWEvdHJhY2svVVQJAAOBGFJW6SBSVnV4CwABBPUBAAAEUAAAAFBL
AwQUAAIACACxYHZHaZTRjfAAAAB3AQAAKgAcAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtYWN0dWFsLnR4dFVUCQADDiBSVoEYUlZ1eAsAAQT1AQAABFAAAAB9kEFLw0AQhe/7K94tScFg
r0IP0qYgShWJIoiH6WaaXbrdDdmJNf/eTbyUHjwNvPfx5s1s7x+e7lDbEzcIg+BMVqxvcQg9fBB7
GDfBMyRgz9DkHDdK1RwFYkgQZXSzmxzogSNsBHWdsylPh75nLW4sVfVe7epck+8cjWL6MLSmUGqx
wNqwPsL6tJZcmjd78g2kp6RGIeGoXt92ufWTXk/yEit824ZDKfwjsxQ/b78KVX28VOu62iC/tkvH
vhWD1QrZMivw/HgBX0aXjnw7UMszyv5f9mhT04nT1IkNPv7R13XLU2hSHrJowjn9NkuH/wJQSwME
FAACAAgAsWB2Rw1/+IScAQAA/gIAACgAHABtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxl
LWRpZmYudHh0VVQJAAMOIFJWDiBSVnV4CwABBPUBAAAEUAAAALVRXWvbMBR996+4b7Fry166FbZB
IVvswuhIR+O1e5WtW1tEkYx1tTb/vtdOFujD2NNASAide74khIDiwZmwR1+UkmRRPW6LR2xuNZ2O
r0EbVdyjQemxMPLgAglCT2JEHwz5Yo9Ky4JG2e6Ou9BWNNIq4elgUODLgC2hyumFojRN/7+ibClI
M+utViCW2XtIl9kHWK2i9ObLt++fodbMAUwMz1KTth08uRGsI/10KJ1FIAcNQiuNQRVBBDXrA/WS
YJaY3vkN2oAetAc5DEYzY+vGkcOaQx5B9VBt6riVduAM1I8udH0yG/qYLS8h/XR0BNWvH9W6rkqI
tZ1C1FOiZW6k7YLsEK6vYYF2kcDd7V/BO23VDGzlQNpZf4Lf/9y8Be6dYkZY+N49c+xFEomTz571
kK/TyG+t0OWT7zg5IzziDlXCbYiLi2MhbeC4djq5K2fc6Bl8dtghrd1+CPz326m0mGGl9hNtZXDP
g0k+T83Ox66JL6+uMvizJccM/yDccKAkbzhcxw1btX5D+C6DaZ2pNiXc3UBdbetIRK9QSwMEFAAC
AAgAsWB2Rwz65Oo2AQAAMwIAACwAHABtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWV4
cGVjdGVkLnR4dFVUCQADDiBSVoEYUlZ1eAsAAQT1AQAABFAAAAB9UUFqwzAQvOsVe7MVUpMUcszJ
cS8FpzRuKZQeZGuRRBTJWOu2+X0lB0MaSkFIMDs7mp1lDQYC0oIg0NkikAdhLXQjBjABRN9bgxI6
PwzYkT0XrHqt6ibvhOutOJMe/Kg0Z2yxgFJjdwTjDBlh43vXCieBBhHRQIIwsOeXOjcu4U2C17CF
TyPRF4TfNEHhffXBWfX2VJVNtYP8tlxYdIo0bLeQrTMO+8cr8rV0YYVTo1A4UdH9yz2a6DTxOtGT
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
yM3SAQAACQoAACgAHABtZWRpYS92aWRlby1wb3N0ZXItYmFja2dyb3VuZC1zdGRlcnIudHh0VVQJ
AAMNIFJWgRhSVnV4CwABBPUBAAAEUAAAAO2R32/aMBCAn5u/4tSnTqPgJBASVJC2aKx96FaNaS9V
hYx9AY/EjmyDhib+9102plUqP162h0lYebBPubvvu3sMowHrDeK4HWfsCZTHiruNFtMJ+gdrarR+
A07NNS9LlIDWDq/DqJ/24Go5VvO33OHH2VcU/p21xk7v9JqXSnKP8hVcqecv7qEzMSsrMOdigZ3c
WLxHqfif23XYS6J2FKcdau2N39ToOg8l36DtULNft+mbhq8toFQaIYqyOHg8S5wl/o1E8lwiN/Xm
v7BgaXq2OFucLY5adEOyuKEDX+5zGNGBdSXeo89NVVt0DuXY8go/ofPUdWxNNeFrlAMQXGvjoVBa
gmtCUDQ/gjCW8mqjpdJz8Ia+JWq4ycfkrsQtdwtg3/pFNouiOGFZzOCxeRdFnydZHyV7Gn1vTGAI
qqpWns9KBKmEb1HtlfYU77YC1N4qdDAcBRcMBk39CUWo5a5YmoUx31tcGO0pnXLhsij53F1u6UoF
PqyqGVoqQAvbk0e7WTVUr8MW7ACXv5Mmd9rH0WeKboOL8BBPJk/x/Ozxgic+isP24yTdHU73IE5x
CserCp3g5UukqJceH1LC2Ikx9Q6uLTzFhbURi787pm0Q/ABQSwMEFAACAAgAt2B2R9oNe0S8AAAA
kgEAAB8AHABtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIudHh0VVQJAAMaIFJWjhhSVnV4CwAB
BPUBAAAEUAAAAKWQMW8CMQyF596v8FiW6u6AG6KqQ4+hlYANdUAMvsSEiNRGiY+q/55QsXWD8Ul+
3ye/tZyhbaFpTT03sw7oJzf19CWKxQhJbaKTJA3st03XdNMdvC5oGP2bgUy6opzR01K8LxfvpXQ0
UIqRXLW+H6yYtBfeBz8m1CD8FfTQy/cp0jV9ILtIyUCP9kAOaiDGoThhQHskdvkROekmU/rkvSyC
VfOPbeC5epo8ZGB3G+7vL1Tykn4Ll8cYJ9UFUEsDBBQAAgAIALhgdkfdwkMfhAAAAMAAAAAhABwA
bWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1zdGRlcnIudHh0VVQJAAMbIFJWjhhSVnV4CwABBPUBAAAE
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
AAAAAAAACwAcAHJldHJpZXMvanMvVVQJAAPkIFJW6SBSVnV4CwABBPUBAAAEUAAAAFBLAwQKAAAA
AAAkYXZHAAAAAAAAAAAAAAAADwAcAHJldHJpZXMvanMvZG9tL1VUCQAD5CBSVukgUlZ1eAsAAQT1
AQAABFAAAABQSwMEFAACAAgAJGF2RxwOCE7FMQAAflADADQAHAByZXRyaWVzL2pzL2RvbS9yZXNl
cnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1hY3R1YWwudHh0VVQJAAPkIFJW5CBSVnV4CwABBPUBAAAE
UAAAAM190Y7jSI7te3+FUS9jA4sycLFPu5iHxaAXuMAsZoDu+wFZWa4uY7JTBaezq3Mb/e/XkiKk
kBVkHDLIUD7MwMomeRiURJ4Tdkk/n16uL7trtzs9v7xeTrvr14fr7vtp9/jwvHt9Oe1+/Gl3Ob2c
Lr+dPu++d5fPL7uHl923S/ftdLm+7Z4ffj29fPzhh388715eHx9PLy//tnvrXnffz09Pu5fTafdw
+//L+fSy677sPvzzv3766cPu5vHy8MvpZvmle3rqvt8Cf3rbffj5x59+3v3tH//zz7//+POPH24x
f+jNd789XHbXy+vpP4f/v6V3OX3fnX5/PH27nrvn3U9vz9eH33+8XLrLf+z+9vD83F2HtK9fT7t/
nd76jHd/6T3/0uf90Ic7P3x6Og2Zf/w4Yuy/vD4/9uH2hz+WeH8ePHEj1u6vu3//PwHor3/tD9qt
c43tu+aYwu6XfW96+GO3+7PVuaWxfdd87A2OH6+3W22fy+Hgv/RiCr4VuF7e/vjz8eH6+DVAWp3z
IWZ5+RS+2aqZPKZy9+Z7ywt+ily84O+hzdadT+GP3Yfe5sN/9K3sz49Jcznszi8D8jpZzmvKd+n9
x3AgRSF8SIxfTtdYwD//7TbPwtHvw+G3h8vL6fM//vXwFkLOf4CSqQ2ez/pDf85erpfz4/XDf7Ye
oQy4b5fJAm8xXMFEGlZj3fMX/7ndDNZk1bBO/Jy8y+7QuFyy5BpWbevxDiXTYtbnr+44fX1uuSIL
UCTlyw8WkDqyAIcA5qOGRoABMHQ/gmGNlF9PP+G+PDy9VDGMIYBEvSaIdZdrEXlCCyM8fK4gE7rF
ZuCdV55MmcG2Wr2IFs6gO6/7OFisR+2cxqHB+oEsnOuQzNIAanb25cp9mYHdyhHtPtjvTS9/XL2v
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
oTHOhwC/432L7C7aS8ldxo/gdtFy3bAWMThmh4Yo8rrZXELrVl6FqkZ7IanLudGcLlrHxnF34guM
ruRN4kZDDWrBl+VySXHCXT39xY7JWYCAvAptIwVHIZq0wQgDyRhccu8aEbhSRIS/Qb1Gy95UwWXc
TdDi4BCS85p2MZPTWgwI8jZ9wxSHwjJSt1JhIJyv+TZZL8T8+r6fnz933z++nU9P+d+EvLw+Pp5e
Xr68Pj29/XMIOv33H37+8aefd3/7x//88+8//vzjDz/8f1BLAwQUAAIACAAkYXZHnp8zuHMBAAAf
BAAAMgAcAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWRpZmYudHh0
VVQJAAPkIFJW5CBSVnV4CwABBPUBAAAEUAAAAMVTX0/CMBB/91NceGHL6BoNJgZCAiomRhONqDyX
7YDJWJf2ClsI391ugCggxhd9ut71fn+auzLGgL/K2ExR82tBgnf7Pd7HwV1E63BpojjkTxij0Mhj
kUtDjFATU6hNTJorJBVZ/JvmoZzaVKOaYcjmUoWaCc1SJVNUlDPMUgwIQ58yOvE87y+1RUBGxKVy
uw3stF4/r12At47t9gk8dno9cIYmCSiSieMuKkYjaCsQUKXpLGCEBKkZxFFgL5c10Ns8KwupUBrD
h4nIG1A/g6W/LUCr1bI1d+k2gZRBiHQZ17IzoSCPMA4P3n42tdO5x8e+8kGh2tycSw87rQfJD8D2
lLybzu39cSU9lsZmAywRPjyPFc4BswDTQhF6eUIi6yolVQNeks1+wATzYoJQLdmqPlyJJJEExUBW
ArbVDlsXJHYpQA7tdBJUgqTy185+/bB/crua8cYsjJwS4y4Alj9uwxHUN5vGyz7uF9/IOQh3PxDv
UEsDBBQAAgAIACRhdkd2ZXtTczEAAKBPAwA2ABwAcmV0cmllcy9qcy9kb20vcmVzZXJ2ZWQtd29y
ZHMtYXMtcHJvcGVydHktZXhwZWN0ZWQudHh0VVQJAAPkIFJW5CBSVnV4CwABBPUBAAAEUAAAAM1d
wa7rRo7d5yuMbMYGBjEwmNUMejFoZNeDbiD5Aec+v8Tom6vA1y+vPUH+fSypSipZRfKwiizdRTes
G5KHRUnkOWU/6cfz++19d+t257f3L9fz7vbL6bb7et69nN52X97Pu+9/2F3P7+fr7+dPu6/d9dP7
7vS+++3a/Xa+3u67t9Ov5/fvvvnm72+79y8vL+f393/f3bsvu6+X19fd+/m8Oz3+/3o5v++6z7tv
//E/P/zw7e7h8X76+fyw/Ny9vnZfH4F/uu++/fH7H37c/fXv//uPv33/4/ffPmJ+05vvfj9dd7fr
l/N/D///SO96/ro7/+vl/Nvt0r3tfri/3U7/+v567a7/tfvr6e2tuw1p33457/55vvcZ7/6t9/y3
Pu9TH+5y+un1PGT+3Xcjxv7zl7eXPtz+8McS78+DJ27E2v1l95//EYD+8pf+oN0619i+a44p7H7e
96aHP3a7P1udWxrbd83H3uD43e1xq+1zORz8ly6m4FuB2/X+x58vp9vLLwHS6pwPMeXlU/hmq2by
mMrdm+8tL/gpsnjBP0ObrTufwh+7b3ubb/+rb2V/fpc0l8Pu8j4gr5PlvKZ8l95/DAdaFMKHxPj5
fIsF/PPfH/MsHP1rOPztdH0/f/r7P0/3EHL+A5RMbfB81t/25+z9dr283L7979YjlAH37TJZ4C2G
K5hIw2qse/7iP7ebwSVZNawTPyefsjs0LpcuuYZV23q8Q8m0mPX5qztOX59bTmQBBUn58oMFZBlZ
gEMA87GERoABMHQ/gmGNlF9PP+E+n17fqxjGEECjXhPEustVRJ7QwggPnyvIRNliM/DOK0+mzGBb
rV5UC2fQndd9HCzWo3ZO49Bg/UAWznVIZmkANTv7euW+zMBu5Yh2H+z3ppc/rt5X4HZrJ/X7YBQH
atpxBAVP+5H6erBSI5FerI6PpQzTbzy0U/J14UEt33bUcvDO3ScPvc0QhnNpWZPMTDDUGOX1QfNq
WStpmNpo+/KaafNrWbvtaQCWThNOkL/SpxntdAMWqnw+LWcesRLpJaRCEQRT2wV0Aw6B630vImKP
RWv+ty+vrzUXUO+vEcEzXt2FK+FGrDDdx48VRKNknWts3zUnE6c3rVY6mjXT2L5rPvYG64k75XDw
X7qYgm8Fkkk6Qlqdc726X+CbrRrR9r353vKCx5X9M7TZukld39vE4Zk0F0HVU16k1u6NtCiED6vn
QwHDZBuO7NR8TXBQy7ccoQy4b5fJAm8xXMFEGlZj3fMN9UNxacCsGtaJn5M22r24XLrkGlZt6/EO
JdNi1uev7jh9fW65QsXOJuXLD1ZSW08W4BCYUlbTCDAArtN9CIY1Eq3Rf7qeT/+suWiGABr1miDW
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
w/b4/529251u2+1+OXKBnCDvDESFnZkiZKeet8+0U/4XLr/RSIofadytLZs+OvFxmCFs/GqYz8vX
2/m6adeHvOup6mK+8GGgIFH7sPn+NqFRdN52ST0pMobX7GiEvDXkAtI1bd/lLAPRQVnv8vlj7x2w
LbvTl5dkqzhJNL18eqQQn07vh3dKNl0ZEpOmZ49Gn/jj/Cs4wPvHiVwbtEwS22ZizzSBnXcz41/3
P/bnZFI2iEQ3lDfRLW5NnJO3nj/2l/NxjwLgXmbpon7w+ePzsnWB+QpPVfxhiP3hcHo8zi/ni7dl
8cvJ5T8dz8nhfMRJBrv/PP167t5O/m/9bB+7/S8/86/gqT3Prz78Z4MXL40jQB/CULIXo0frw/+P
6+79tPeOzyMZ/8P+k/enYl2NmwckhKT9/bz3jt2L95FPx5ffMcy7e1nyk53/L9yQKk8xblYSgctt
H8PO0YX4+jyOa3/eTyduqIllFsYiZXfvp8tn3ET2u1Gvhe9CLmlUj3HuoyM7T+By8cvykfFxz1m5
Lu31NF43P/f34c92H51Ab5Ef/CLyhkT2dTf6gBd/239yUUg46y6fdcaJ4iIO76fDX8F7jn/DYCBh
iDxCTuckkGd/vEVb76OW17t3o66nn1hRhOH6ciXjNuy9oH34/+w8mZ7n835++XqewJ7IfLCBwKHd
aCxiIJr1RLgyx9Mv9ly6rhSQyb8u7x67HlOKarpNwau6jXDi7nl++qsFBX7qFBW3OUMv6VJ64fLS
8TsoUdZJi/eQHFXGRh4/3sg15Hehr13iNIGoBl5vt2dQl35vvTbY7V+C//5yO/JDKluuadyaGFR5
kf+6PkdFxu8KGSEnGaL4+pnt/JUJ9hfCtl3yBekR2TzK1SuSKLr7r+f77c6NoPMhExTbh6/eD38G
/MQ79wEZ8+v5vJ154Rcuq0qSEk8ewMf+M+20F9dzwMK8ojzt8ZkLSc481zgG/R00ZZK88/Vw+QqK
18fvf/H3SeRFElpmEJ+3++3rc75QcY5xZF6YbLlfhgjT4+DDKl5miLaOfs54pQ9f91OUldfzybs0
aWFfZ3YxIyVrNnI0IvfO2+7tcnuJoOiZwBz+nvF6UAxZjAKfciAGIQgiu7FETxHdvTSPcVc3mBHV
17Y2ICH8yeq8GYHe76hyeT97F+J+eOevsczzD2rW9nn+Dz/rwzu8wyb/NiEchS+idCdl7VVbdGh8
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
ngIAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3Np
dGluZy1zdGRlcnIudHh0VVQFAAPTF1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWGB2R3pG
1GbBAAAA8gYAADwAGAAAAAAAAQAAAKSBbJ8CAGNvbXBvc2l0aW5nL3Nob3ctY29tcG9zaXRlZC1p
ZnJhbWUtb24tYmFjay1idXR0b24tc3RkZXJyLnR4dFVUBQADaB9SVnV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAM1bdkcAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQaOgAgBjb21wb3NpdGluZy92
aWRlby9VVAUAA9EXUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADMW3ZHGP5X/bAAAADeAwAA
MAAYAAAAAAABAAAApIHvoAIAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy1z
dGRlcnIudHh0VVQFAAPPF1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU2B2RwjcPEm/AAAA
8gYAADIAGAAAAAAAAQAAAKSBCaICAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdl
LXNyYy1zdGRlcnIudHh0VVQFAANdH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAImF2R9OA
N9gSDQAAanIAAA0AGAAAAAAAAQAAAKSBNKMCAGVycm9yX2xvZy50eHRVVAUAA+AgUlZ1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAADqW3ZHAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UGNsAIAZmFz
dC9VVAUAAwgYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADgW3ZHAAAAAAAAAAAAAAAADAAY
AAAAAAAAABAA7UHMsAIAZmFzdC9jYW52YXMvVVQFAAPzF1JWdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAZmB2R+pmddmGAAAAGgEAACYAGAAAAAAAAQAAAKSBErECAGZhc3QvY2FudmFzL2NhbnZh
cy1saW5lRGFzaC1zdGRlcnIudHh0VVQFAAN/H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
51t2RwAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1B+LECAGZhc3QvaW1hZ2VzL1VUBQADAhhSVnV4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAGxgdkdRp4IYMQAAADEAAAAtABgAAAAAAAEAAACkgT6y
AgBmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLXN0ZGVyci50eHRVVAUAA4wfUlZ1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABtYHZHIY+9ODIAAAAzAAAALAAYAAAAAAABAAAApIHW
sgIAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAUAA44fUlZ1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADrW3ZHAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFu
swIAZmFzdC94c2wvVVQFAAMJGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAcGB2R3L9ZfKF
AAAA6QAAACUAGAAAAAAAAQAAAKSBsbMCAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVy
ci50eHRVVAUAA5QfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABwYHZHzgkoAo0AAADwAAAA
JwAYAAAAAAABAAAApIGVtAIAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0
VVQFAAOUH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAcGB2R8+PZg5QAAAAoAAAACQAGAAA
AAAAAQAAAKSBg7UCAGZhc3QveHNsL3hzbHQtY29udGVudFR5cGUtc3RkZXJyLnR4dFVUBQADlB9S
VnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHFgdkeBSnetSwAAAKwAAAA0ABgAAAAAAAEAAACk
gTG2AgBmYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0
VVQFAAOVH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJmF2R9MpCYd9AQAAnwIAABEAGAAA
AAAAAQAAAKSB6rYCAGZ1bGxfcmVzdWx0cy5qc29uVVQFAAPnIFJWdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAA7Vt2RwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BsrgCAGh0dHAvVVQFAAMOGFJW
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAc2B2RwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1B
8bgCAGh0dHAvdGVzdHMvVVQFAAOaH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA8Vt2RwAA
AAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BNrkCAGh0dHAvdGVzdHMvY2FjaGUvVVQFAAMVGFJWdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAdmB2Ryso4NzuAAAAiQQAADAAGAAAAAAAAQAAAKSBgbkC
AGh0dHAvdGVzdHMvY2FjaGUvbWVtb3J5LWNhY2hlLXBydW5pbmctc3RkZXJyLnR4dFVUBQADnx9S
VnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHdgdkdwYWrCgwAAAMAAAAA9ABgAAAAAAAEAAACk
gdm6AgBodHRwL3Rlc3RzL2NhY2hlL25ldHdvcmstZXJyb3ItZHVyaW5nLXJldmFsaWRhdGlvbi1z
dGRlcnIudHh0VVQFAAOhH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA7Vt2RwAAAAAAAAAA
AAAAABIAGAAAAAAAAAAQAO1B07sCAGh0dHAvdGVzdHMvY2FudmFzL1VUBQADDhhSVnV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAO1bdkcAAAAAAAAAAAAAAAAYABgAAAAAAAAAEADtQR+8AgBodHRw
L3Rlc3RzL2NhbnZhcy93ZWJnbC9VVAUAAw4YUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABz
YHZHjb6BNMwAAACRAgAAOwAYAAAAAAABAAAApIFxvAIAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wv
b3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAUAA5ofUlZ1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAABzYHZHAAAAAAAAAAAAAAAAFwAYAAAAAAAAABAA7UGyvQIAaHR0cC90ZXN0
cy9ldmVudHNvdXJjZS9VVAUAA5ofUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABzYHZHAAAA
AAAAAAAAAAAAHwAYAAAAAAAAABAA7UEDvgIAaHR0cC90ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJz
L1VUBQADmh9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHNgdkdtjg63gwAAABoBAAA8ABgA
AAAAAAEAAACkgVy+AgBodHRwL3Rlc3RzL2V2ZW50c291cmNlL3dvcmtlcnMvZXZlbnRzb3VyY2Ut
c2ltcGxlLXN0ZGVyci50eHRVVAUAA5ofUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADtW3ZH
AAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UFVvwIAaHR0cC90ZXN0cy9mdWxsc2NyZWVuL1VUBQAD
DhhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAO1bdkfTc0HCywAAAAcDAABDABgAAAAAAAEA
AACkgaW/AgBodHRwL3Rlc3RzL2Z1bGxzY3JlZW4vZnVsbHNjcmVlbmVsZW1lbnQtZGlmZmVyZW50
LW9yaWdpbi1zdGRlcnIudHh0VVQFAAMOGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA9lt2
RwAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1B7cACAGh0dHAvdGVzdHMvbWVkaWEvVVQFAAMgGFJW
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA71t2RwAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1B
OMECAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQFAAMRGFJWdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAdWB2R52bdOBQAQAAfwMAADkAGAAAAAAAAQAAAKSBjMECAGh0dHAvdGVzdHMvbWVk
aWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUBQADnR9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAPJbdkcAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQU/DAgBo
dHRwL3Rlc3RzL21lZGlhL2hscy9VVAUAAxcYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB1
YHZHSi11lcsBAABFBQAAQAAYAAAAAAABAAAApIGewwIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxz
LWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUBQADnR9SVnV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAHVgdkcYb9HBxwEAAEUFAAA6ABgAAAAAAAEAAACkgePFAgBodHRw
L3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLWhhcy1hdWRpby1zdGRlcnIudHh0VVQF
AAOdH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAdWB2R8fDHqTRAQAAnwUAAEEAGAAAAAAA
AQAAAKSBHsgCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3MtbG9jYWxlLXNl
bGVjdGlvbi1zdGRlcnIudHh0VVQFAAOeH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAd2B2
R2w0QT3TAQAAnwUAADAAGAAAAAAAAQAAAKSBasoCAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1h
dWRpby10cmFja3Mtc3RkZXJyLnR4dFVUBQADoh9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AHdgdkcJzTSUIgEAAN4DAAAsABgAAAAAAAEAAACkgafMAgBodHRwL3Rlc3RzL21lZGlhL2hscy9o
bHMtcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADoh9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AHhgdkfa2smhRwEAALAHAAA9ABgAAAAAAAEAAACkgS/OAgBodHRwL3Rlc3RzL21lZGlhL2hscy92
aWRlby1jb250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRlcnIudHh0VVQFAAOjH1JWdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAdWB2R0QfZWfOAAAAkQIAADIAGAAAAAAAAQAAAKSB7c8CAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQFAAOdH1JWdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAdWB2R21OU8jhAAAABgMAACoAGAAAAAAAAQAAAKSBJ9EC
AGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADnR9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAHZgdkdsZypp6QAAAMYDAAA5ABgAAAAAAAEAAACkgWzSAgBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRV
VAUAA58fUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAABXHZHAAAAAAAAAAAAAAAAHgAYAAAA
AAAAABAA7UHI0wIAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAMxGFJWdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAfGB2R0DlanlNAQAAlwQAAEIAGAAAAAAAAQAAAKSBINQCAGh0
dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3Rk
ZXJyLnR4dFVUBQADqx9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAH1gdkdz4rLRPAEAAHoD
AABQABgAAAAAAAEAAACkgenVAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQADrR9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAIBgdke1V/2aPQEAAHoDAABSABgAAAAAAAEAAACkga/XAgBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1w
NC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAAOvH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAhGB2R2GETpGKAAAAmwAAADkAGAAAAAAAAQAAAKSBeNkCAGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJyLnR4dFVUBQADtx9SVnV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAIVgdke+M7hLqgAAAAcDAAA7ABgAAAAAAAEAAACkgXXaAgBodHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQAD
uh9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIdgdkeA+PpHoAAAANEBAABGABgAAAAAAAEA
AACkgZTbAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2Vi
dWZmZXItbW9kZS1zdGRlcnIudHh0VVQFAAO+H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
dmB2R/QtF3ntAAAAXwEAAC0AGAAAAAAAAQAAAKSBtNwCAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNl
cnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQADoB9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AHhgdkdtLB/8wQAAAJIBAAAvABgAAAAAAAEAAACkgQjeAgBodHRwL3Rlc3RzL21lZGlhL3JlbG9h
ZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUBQADox9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAHhgdkcdGe2XSAEAAHQCAAAvABgAAAAAAAEAAACkgTLfAgBodHRwL3Rlc3RzL21lZGlhL3Rl
eHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUBQADox9SVnV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAHhgdkfxNraoCQEAAHgDAAA2ABgAAAAAAAEAAACkgePgAgBodHRwL3Rlc3RzL21lZGlh
L3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA6QfUlZ1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAB5YHZHxw1AYlsBAAC2AwAAJgAYAAAAAAABAAAApIFc4gIAaHR0cC90
ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAUAA6UfUlZ1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAB5YHZHDj0pUN8AAABSAgAALQAYAAAAAAABAAAApIEX5AIAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1lcnJvci1hYm9ydC1zdGRlcnIudHh0VVQFAAOmH1JWdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAeWB2R5nbg/wVAQAAPQIAADYAGAAAAAAAAQAAAKSBXeUCAGh0dHAvdGVzdHMv
bWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQADph9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAHpgdkfwYx/vxAAAACQDAAAsABgAAAAAAAEAAACkgeLmAgBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQADpx9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAHpgdkd2jwh75wAAAMYDAAAvABgAAAAAAAEAAACkgQzoAgBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADqB9SVnV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHxgdkdNQOIEhAAAAMAAAAA9ABgAAAAAAAEAAACkgVzp
AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktc3RhbGwtYmVmb3JlLW1ldGEtZGF0YS1zdGRl
cnIudHh0VVQFAAOrH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAfGB2R1dA79S9AAAAkgEA
ACsAGAAAAAAAAQAAAKSBV+oCAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnktdXJsLXN0ZGVy
ci50eHRVVAUAA6sfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB8YHZHYPlNgvgAAABYBQAA
KgAYAAAAAAABAAAApIF56wIAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVjdC1zdGRlcnIu
dHh0VVQFAAOsH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAfGB2RxunwdjeAAAAUgIAACsA
GAAAAAAAAQAAAKSB1ewCAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0ZGVyci50
eHRVVAUAA6wfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAJXHZHAAAAAAAAAAAAAAAAEAAY
AAAAAAAAABAA7UEY7gIAaHR0cC90ZXN0cy9taXNjL1VUBQADQhhSVnV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAHxgdkcZ8QtpwgAAAP4AAAA/ABgAAAAAAAEAAACkgWLuAgBodHRwL3Rlc3RzL21p
c2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXN0ZGVyci50eHRVVAUAA6sf
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB8YHZHUOB648EAAAD+AAAAWwAYAAAAAAABAAAA
pIGd7wIAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5n
ZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92YWwtc3RkZXJyLnR4dFVUBQADqx9SVnV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAI5gdkcVNTWSegAAALwAAAAqABgAAAAAAAEAAACkgfPwAgBodHRw
L3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAUAA8wfUlZ1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAAB4YHZHAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHR8QIAaHR0cC90
ZXN0cy9zZWN1cml0eS9VVAUAA6MfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAD3W3ZHAAAA
AAAAAAAAAAAAKgAYAAAAAAAAABAA7UEf8gIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvVVQFAAMiGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA8lt2RwAAAAAA
AAAAAAAAAD0AGAAAAAAAAAAQAO1Bg/ICAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9VVAUAAxgYUlZ1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAB4YHZH5RkwLjYBAADRAgAAUwAYAAAAAAABAAAApIH68gIAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LWF1ZGlv
LXN0ZGVyci50eHRVVAUAA6MfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB4YHZH5b79Qf8A
AAD7AQAAUwAYAAAAAAABAAAApIG99AIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRVVAUAA6Qf
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB4YHZHLNTSTYQAAADAAAAAawAYAAAAAAABAAAA
pIFJ9gIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50
U2hhZG93RE9NL2RlZmF1bHQtc3JjLW9iamVjdC1kYXRhLXVybC1hbGxvd2VkLXN0ZGVyci50eHRV
VAUAA6QfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB8YHZHY6qsbIIAAACoAAAAQAAYAAAA
AAABAAAApIFy9wIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNs
LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADrB9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHxg
dkdjqqxsggAAAKgAAABSABgAAAAAAAEAAACkgW74AgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS94c2wtdW5hZmZlY3RlZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0
VVQFAAOsH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAeGB2RwAAAAAAAAAAAAAAACQAGAAA
AAAAAAAQAO1BfPkCAGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL1VUBQADox9S
VnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHhgdkcdm4SPiwAAAIABAABKABgAAAAAAAEAAACk
gdr5AgBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2Nh
dGlvbi1hc3NpZ24tc3RkZXJyLnR4dFVUBQADox9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
APJbdkcAAAAAAAAAAAAAAAAiABgAAAAAAAAAEADtQen6AgBodHRwL3Rlc3RzL3NlY3VyaXR5L2lz
b2xhdGVkV29ybGQvVVQFAAMXGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA8lt2R1q+n7yJ
AAAAgAEAAEIAGAAAAAAAAQAAAKSBRfsCAGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3Js
ZC9hbGwtd2luZG93LXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQADFxhSVnV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAHtgdkcKeoavywAAAN0BAAA9ABgAAAAAAAEAAACkgUr8AgBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQFAAOq
H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAe2B2RxW0SZaEAAAAwAAAADoAGAAAAAAAAQAA
AKSBjP0CAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3JjLWZyb20tcmVtb3RlLXN0
ZGVyci50eHRVVAUAA6ofUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADzW3ZHAAAAAAAAAAAA
AAAAIQAYAAAAAAAAABAA7UGE/gIAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvVVQF
AAMZGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAeWB2R8ptNhDuAAAAiQQAAE4AGAAAAAAA
AQAAAKSB3/4CAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlv
LXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUBQADpR9SVnV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAHlgdkczGHFThAAAAMAAAABCABgAAAAAAAEAAACkgVUAAwBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1jc3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAUA
A6UfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACAYHZHLdrEV7QAAAAnAQAAPwAYAAAAAAAB
AAAApIFVAQMAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXItY3Jvc3Mtb3JpZ2luLWNy
YXNoMi1zdGRlcnIudHh0VVQFAAOwH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgmB2R2BL
ZhCRAAAA+wEAAEUAGAAAAAAAAQAAAKSBggIDAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADtB9SVnV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAE9gdkc1E8aamQUAABEQAAAKABgAAAAAAAEAAACkgZIDAwBodHRw
ZC5jb25mVVQFAANVH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAVx2RwAAAAAAAAAAAAAA
AAkAGAAAAAAAAAAQAO1BbwkDAGltcG9ydGVkL1VUBQADMRhSVnV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAHxgdkcAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQbIJAwBpbXBvcnRlZC9ibGluay9V
VAUAA6wfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB8YHZHAAAAAAAAAAAAAAAAFwAYAAAA
AAAAABAA7UH7CQMAaW1wb3J0ZWQvYmxpbmsvZWRpdGluZy9VVAUAA6wfUlZ1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAB8YHZHAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UFMCgMAaW1wb3J0ZWQv
YmxpbmsvZWRpdGluZy9zaGFkb3cvVVQFAAOsH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
fGB2R9JAtyeEAAAAwAAAAE8AGAAAAAAAAQAAAKSBpAoDAGltcG9ydGVkL2JsaW5rL2VkaXRpbmcv
c2hhZG93LzUwNTA5Mi1maWVsZHNldC1pcy1ub3QtdWEtc2hhZG93LWNyYXNoLXN0ZGVyci50eHRV
VAUAA6wfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB8YHZHAAAAAAAAAAAAAAAAHQAYAAAA
AAAAABAA7UGxCwMAaW1wb3J0ZWQvYmxpbmsvZWRpdGluZy9zdHlsZS9VVAUAA6wfUlZ1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAB8YHZHkURisa4AAADeAwAAOgAYAAAAAAABAAAApIEIDAMAaW1w
b3J0ZWQvYmxpbmsvZWRpdGluZy9zdHlsZS9qdXN0aWZ5LWxlZnQtY3Jhc2gtc3RkZXJyLnR4dFVU
BQADrB9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAJBgdkcAAAAAAAAAAAAAAAAUABgAAAAA
AAAAEADtQSoNAwBpbXBvcnRlZC9ibGluay9mYXN0L1VUBQAD0B9SVnV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAPdbdkcAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQXgNAwBpbXBvcnRlZC9ibGlu
ay9mYXN0L2Jsb2NrL1VUBQADIRhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAPdbdkcAAAAA
AAAAAAAAAAAmABgAAAAAAAAAEADtQcwNAwBpbXBvcnRlZC9ibGluay9mYXN0L2Jsb2NrL3Bvc2l0
aW9uaW5nL1VUBQADIRhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAPdbdkckJIr4CgEAANQD
AABlABgAAAAAAAEAAACkgSwOAwBpbXBvcnRlZC9ibGluay9mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
L2Fic3Bvcy1hdXRvLWxlZnQtYW5kLXdpZHRoLWNoYW5nZS1wYXJlbnQtbWFyZ2luLWxlZnQtc3Rk
ZXJyLnR4dFVUBQADIRhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAJBgdkcAAAAAAAAAAAAA
AAAkABgAAAAAAAAAEADtQdUPAwBpbXBvcnRlZC9ibGluay9mYXN0L3RleHQtYXV0b3NpemluZy9V
VAUAA9AfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACQYHZHhZEjTC0BAABcAgAAQwAYAAAA
AAABAAAApIEzEAMAaW1wb3J0ZWQvYmxpbmsvZmFzdC90ZXh0LWF1dG9zaXppbmcvc3VidHJlZS1s
YXlvdXQtY3Jhc2gtYWN0dWFsLnR4dFVUBQAD0B9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AJBgdkf+AF77xAEAAAAEAABBABgAAAAAAAEAAACkgd0RAwBpbXBvcnRlZC9ibGluay9mYXN0L3Rl
eHQtYXV0b3NpemluZy9zdWJ0cmVlLWxheW91dC1jcmFzaC1kaWZmLnR4dFVUBQAD0B9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAJBgdkdF+uQ4YQAAAHAAAABFABgAAAAAAAEAAACkgRwUAwBp
bXBvcnRlZC9ibGluay9mYXN0L3RleHQtYXV0b3NpemluZy9zdWJ0cmVlLWxheW91dC1jcmFzaC1l
eHBlY3RlZC50eHRVVAUAA9AfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACQYHZHUk5J2MII
AABCIQAASQAYAAAAAAABAAAApIH8FAMAaW1wb3J0ZWQvYmxpbmsvZmFzdC90ZXh0LWF1dG9zaXpp
bmcvc3VidHJlZS1sYXlvdXQtY3Jhc2gtcHJldHR5LWRpZmYuaHRtbFVUBQAD0B9SVnV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAAFcdkcAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQUEeAwBpbXBv
cnRlZC93M2MvVVQFAAMxGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAVx2RwAAAAAAAAAA
AAAAACAAGAAAAAAAAAAQAO1BiB4DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQF
AAMxGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAVx2RwAAAAAAAAAAAAAAACUAGAAAAAAA
AAAQAO1B4h4DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9VVAUAAzEYUlZ1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAABXHZHAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UFB
HwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAUAAzEY
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAACXHZHAAAAAAAAAAAAAAAAQAAYAAAAAAAAABAA
7UGqHwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L1VUBQADNBhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAIhgdkcAAAAA
AAAAAAAAAABPABgAAAAAAAAAEADtQSQgAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQFAAPAH1JW
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAh2B2R8bDbufxAAAAlwUAAGcAGAAAAAAAAQAAAKSB
rSADAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAUAA74f
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACHYHZH8hXKSOkAAACkBAAAcgAYAAAAAAABAAAA
pIE/IgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQFAAO+H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2R0HdXezuAAAADAYA
AG4AGAAAAAAAAQAAAKSB1CMDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhy
b3VnaC1zdGRlcnIudHh0VVQFAAO/H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2Rxsp
ZcXqAAAApAQAAHkAGAAAAAAAAQAAAKSBaiUDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9j
YW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA78fUlZ1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACACIYHZH+ooZDOwAAACkBAAAdQAYAAAAAAABAAAApIEHJwMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPA
H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2R+syqkDqAAAApAQAAG4AGAAAAAAAAQAA
AKSBoigDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIu
dHh0VVQFAAPAH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiWB2R9h1aTfvAAAApAQAAHkA
GAAAAAAAAQAAAKSBNCoDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0
YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA8EfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACJYHZHakHVGecAAABKBAAAaQAYAAAAAAABAAAApIHWKwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X2xvYWRzdGFydC1zdGRlcnIudHh0VVQFAAPBH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAiWB2RxKq40XtAAAApAQAAHQAGAAAAAAAAQAAAKSBYC0DAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPCH1JWdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAiWB2RyjfodDqAAAADAYAAHwAGAAAAAAAAQAAAKSB+y4DAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2NhbnBsYXl0aHJvdWdoLXN0
ZGVyci50eHRVVAUAA8IfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACKYHZHc01LrvAAAAAM
BgAAdQAYAAAAAAABAAAApIGbMAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2Nh
bnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQFAAPDH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAimB2R8yqcgrrAAAADAYAAH8AGAAAAAAAAQAAAKSBOjIDAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9vcmRlcl9sb2FkZWRtZXRhZGF0YV9sb2FkZWRkYXRhLXN0ZGVyci50eHRVVAUAA8Mf
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACKYHZH0Pl9ev8AAAAMBgAAeAAYAAAAAAABAAAA
pIHeMwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRzdGFydF9wcm9ncmVz
cy1zdGRlcnIudHh0VVQFAAPEH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAimB2RzGMseXn
AAAATAUAAGUAGAAAAAAAAQAAAKSBjzUDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVz
ZS1zdGRlcnIudHh0VVQFAAPEH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAi2B2R5DYBtzy
AAAAZAUAAHAAGAAAAAAAAQAAAKSBFTcDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVz
ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA8UfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACLYHZHyt540ugAAABMBQAAZAAYAAAAAAABAAAApIGxOAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUBQADxR9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AItgdkdc1wSL6QAAAGQFAABvABgAAAAAAAEAAACkgTc6AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA8UfUlZ1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACLYHZHuZvv7esAAAAMBgAAZwAYAAAAAAABAAAApIHJOwMAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADxh9SVnV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAIxgdkdbsi468gAAAAwGAAByABgAAAAAAAEAAACkgVU9AwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA8cfUlZ1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACMYHZHPHvqvekAAABMBQAAaAAYAAAAAAABAAAApIHz
PgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA8cf
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACMYHZHwaxgHOwAAABkBQAAcwAYAAAAAAABAAAA
pIF+QAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzX25vYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUBQADxx9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIxgdkcirZde6wAAAAwG
AABqABgAAAAAAAEAAACkgRdCAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0
ZS1zdGRlcnIudHh0VVQFAAPIH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjWB2R/WAtbjx
AAAAZgYAAHUAGAAAAAAAAQAAAKSBpkMDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF90aW1l
dXBkYXRlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADyR9SVnV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAI1gdkc9sNsthAAAAMAAAABsABgAAAAAAAEAAACkgUZFAwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAUAA8kfUlZ1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAABXHZHAAAAAAAAAAAAAAAAWgAYAAAAAAAAABAA7UFwRgMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQFAAMyGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAAVx2RwAAAAAAAAAAAAAAAGQAGAAAAAAAAAAQAO1BBEcDAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAUAAzIYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACHYHZHP2lPQcoAAADdAQAAeQAYAAAAAAABAAAApIGiRwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUBQADvh9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAIhgdkdy/XQ4gwAAAMAAAAB1ABgAAAAAAAEAAACkgR9JAwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWRkQ3VlLXN0ZGVyci50
eHRVVAUAA78fUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACNYHZHlo5rjN8AAADkAwAAdwAY
AAAAAAABAAAApIFRSgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdf
bG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA8kfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACN
YHZHxTF4QoQAAADAAAAAbgAYAAAAAAABAAAApIHhSwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25l
dHdvcmtTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUAA8ofUlZ1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACNYHZHaLT+0sgAAACMBAAAcgAYAAAAAAABAAAApIENTQMAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQFAAPKH1JWdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAjWB2R1Jjy9jpAAAAZAUAAHIAGAAAAAAAAQAAAKSBgU4DAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVU
BQADyh9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAJcdkcAAAAAAAAAAAAAAABqABgAAAAA
AAAAEADtQRZQAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3Vy
Y2UvVVQFAAM0GFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2R53D+0S+AAAA7AEAAJEA
GAAAAAAAAQAAAKSBulADAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1y
ZXNvdXJjZS9wYXVzZS1tb3ZlLXRvLW90aGVyLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA78fUlZ1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACIYHZHL+FS+yUBAABvAwAAjwAYAAAAAAABAAAApIFD
UgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNl
LW1vdmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA8AfUlZ1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACIYHZHfMeCHOEAAACsAgAAjwAYAAAAAAABAAAApIExVAMAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92ZS1mcm9tLWRv
Y3VtZW50LXN0ZGVyci50eHRVVAUAA8AfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACIYHZH
Aqw7R4QAAADAAAAAgQAYAAAAAAABAAAApIHbVQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlp
bmctdGhlLW1lZGlhLXJlc291cmNlL3BsYXliYWNrUmF0ZS1zdGRlcnIudHh0VVQFAAPAH1JWdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjmB2R9x5vRWHAAAAwAAAAHgAGAAAAAAAAQAAAKSBGlcD
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wcmVsb2FkX3JlZmxlY3RzX25vbmVfYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUBQADyx9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI5gdkfBH59zxQAAAIwE
AABzABgAAAAAAAEAAACkgVNYAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJp
bmdfY2FucGxheS1zdGRlcnIudHh0VVQFAAPLH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
jmB2R82oBQnqAAAADAYAAHoAGAAAAAAAAQAAAKSBxVkDAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9y
ZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAPLH1JWdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAjmB2Rz4HJ7v0AAAADAYAAHYAGAAAAAAAAQAAAKSBY1sDAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50
eHRVVAUAA8wfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACOYHZHTgtUf+oAAABkBQAAegAY
AAAAAAABAAAApIEHXQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xv
YWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA8wfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACPYHZHW7v7X/AAAABmBgAAcwAYAAAAAAABAAAApIGlXgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUBQADzR9SVnV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAI9gdkecsSRIhAAAAMAAAABsABgAAAAAAAEAAACkgUJgAwBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUAA80fUlZ1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACPYHZHlqp8/tgAAADCAgAAhAAYAAAAAAABAAAApIFsYQMA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3NyY19yZWZsZWN0c19hdHRyaWJ1dGVfbm90X3NvdXJjZV9l
bGVtZW50cy1zdGRlcnIudHh0VVQFAAPNH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAAlx2
RwAAAAAAAAAAAAAAAFUAGAAAAAAAAAAQAO1BAmMDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFj
ay9VVAUAAzMYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAACXHZHAAAAAAAAAAAAAAAAYwAY
AAAAAAAAABAA7UGRYwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQv
VVQFAAMzGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2R98lUrntAAAAoQEAAIIAGAAA
AAAAAQAAAKSBLmQDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3Ry
YWNrLWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50eHRVVAUAA8AfUlZ1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAACIYHZHAAAAAAAAAAAAAAAAXgAYAAAAAAAAABAA7UHXZQMAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3VzZXItaW50ZXJmYWNlL1VUBQADwB9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AIhgdkcd/mbEgwAAAMAAAABuABgAAAAAAAEAAACkgW9mAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
dXNlci1pbnRlcmZhY2UvbXV0ZWQtc3RkZXJyLnR4dFVUBQADwB9SVnV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAAJcdkcAAAAAAAAAAAAAAABSABgAAAAAAAAAEADtQZpnAwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1
ZGlvLWVsZW1lbnQvVVQFAAM0GFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiGB2R8T1jpfe
AAAA0AIAAG4AGAAAAAAAAQAAAKSBJmgDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19j
b25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQFAAPAH1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
Alx2RwAAAAAAAAAAAAAAAFIAGAAAAAAAAAAQAO1BrGkDAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtZW1iZWQtZWxlbWVu
dC9VVAUAAzQYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAACXHZHJzBPMYQAAAAaAQAAbAAY
AAAAAAABAAAApIE4agMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1lbWJlZC1lbGVtZW50L2VtYmVkLWRpbWVuc2lvbi1z
dGRlcnIudHh0VVQFAAM0GFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAjmB2RwAAAAAAAAAA
AAAAAAMAGAAAAAAAAAAQAO1BYmsDAGpzL1VUBQADzB9SVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAJdgdkcAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQZ9rAwBqcy9kb20vVVQFAAPdH1JWdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAjmB2Ry33ysqWAAAAswAAACUAGAAAAAAAAQAAAKSB4GsD
AGpzL2RvbS9jdXN0b20tY29uc3RydWN0b3JzLXN0ZGVyci50eHRVVAUAA8wfUlZ1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACACWYHZHHA4ITsUxAAB+UAMALAAYAAAAAAABAAAApIHVbAMAanMvZG9t
L3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWFjdHVhbC50eHRVVAUAA9wfUlZ1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACACWYHZH5dewu28BAAAPBAAAKgAYAAAAAAABAAAApIEAnwMAanMvZG9t
L3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWRpZmYudHh0VVQFAAPcH1JWdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAlmB2R3Zle1NzMQAAoE8DAC4AGAAAAAAAAQAAAKSB06ADAGpzL2RvbS9y
ZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1leHBlY3RlZC50eHRVVAUAA9wfUlZ1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACACXYHZHq53vPrUIAAADIAAAMgAYAAAAAAABAAAApIGu0gMAanMvZG9t
L3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LXByZXR0eS1kaWZmLmh0bWxVVAUAA90fUlZ1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAAxXHZHAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UHP2wMA
bWVkaWEvVVQFAAOOGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAj2B2R1LVLWboAAAAnQIA
AB8AGAAAAAAAAQAAAKSBD9wDAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAUAA84f
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAMXHZHAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA
7UFQ3QMAbWVkaWEvbWVkaWEtc291cmNlL1VUBQADRxhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAJJgdkfd5mloiwAAAJsAAABIABgAAAAAAAEAAACkgZ3dAwBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXN0YWxsZWQtaG9sZHMtc2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAUA
A9QfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACaYHZHUGAsl8MAAAAkAwAAKAAYAAAAAAAB
AAAApIGq3gMAbWVkaWEvc291cmNlcy1mYWxsYmFjay1jb2RlY3Mtc3RkZXJyLnR4dFVUBQAD5B9S
VnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJtgdkes5WLBiwAAAIABAAAwABgAAAAAAAEAAACk
gc/fAwBtZWRpYS9zdmctYXMtaW1hZ2Utd2l0aC1tZWRpYS1ibG9ja2VkLXN0ZGVyci50eHRVVAUA
A+UfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAArXHZHAAAAAAAAAAAAAAAADAAYAAAAAAAA
ABAA7UHE4AMAbWVkaWEvdHJhY2svVVQFAAOBGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
sWB2R2mU0Y3wAAAAdwEAACoAGAAAAAAAAQAAAKSBCuEDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJh
bmQtc3R5bGUtYWN0dWFsLnR4dFVUBQADDiBSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALFg
dkcNf/iEnAEAAP4CAAAoABgAAAAAAAEAAACkgV7iAwBtZWRpYS90cmFjay90cmFjay1pbi1iYW5k
LXN0eWxlLWRpZmYudHh0VVQFAAMOIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsWB2Rwz6
5Oo2AQAAMwIAACwAGAAAAAAAAQAAAKSBXOQDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtZXhwZWN0ZWQudHh0VVQFAAMOIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsWB2RwZw
1+XSCAAA1yIAADAAGAAAAAAAAQAAAKSB+OUDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtcHJldHR5LWRpZmYuaHRtbFVUBQADDiBSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJtg
dkf1Dqt8kQAAAL0AAAAhABgAAAAAAAEAAACkgTTvAwBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0
ZGVyci50eHRVVAUAA+UfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxYHZHh+jIzdIBAAAJ
CgAAKAAYAAAAAAABAAAApIEg8AMAbWVkaWEvdmlkZW8tcG9zdGVyLWJhY2tncm91bmQtc3RkZXJy
LnR4dFVUBQADDSBSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALdgdkfaDXtEvAAAAJIBAAAf
ABgAAAAAAAEAAACkgVTyAwBtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIudHh0VVQFAAMaIFJW
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuGB2R93CQx+EAAAAwAAAACEAGAAAAAAAAQAAAKSB
afMDAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADGyBSVnV4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAApcdkcAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQUj0AwBwbGF0Zm9y
bS9VVAUAA0QYUlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAKXHZHAAAAAAAAAAAAAAAADQAY
AAAAAAAAABAA7UGL9AMAcGxhdGZvcm0vbWFjL1VUBQADRBhSVnV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAApcdkcAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQdL0AwBwbGF0Zm9ybS9tYWMvZm9u
dHMvVVQFAANEGFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAClx2R57s0oyrAAAAFAMAADAA
GAAAAAAAAQAAAKSBH/UDAHBsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24tc3Rk
ZXJyLnR4dFVUBQADRBhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIJgdkfB9WmxXQIAAJUQ
AAArABgAAAAAAAEAAACkgTT2AwBweXdlYnNvY2tldC53cy5sb2ctMjJOb3YyMDE1LTEyMDIzMC1l
cnIudHh0VVQFAAO0H1JWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgmB2Ryqbtk8IAQAAjwIA
ACsAGAAAAAAAAQAAAKSB9vgDAHB5d2Vic29ja2V0LndzLmxvZy0yMk5vdjIwMTUtMTIwMjMwLW91
dC50eHRVVAUAA7QfUlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAmYXZH/UFThxEnAADKqAAA
DAAYAAAAAAABAAAApIFj+gMAcmVzdWx0cy5odG1sVVQFAAPnIFJWdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAJGF2RwAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1BuiEEAHJldHJpZXMvVVQFAAPk
IFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJGF2RwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQ
AO1B/CEEAHJldHJpZXMvanMvVVQFAAPkIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJGF2
RwAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BQSIEAHJldHJpZXMvanMvZG9tL1VUBQAD5CBSVnV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACRhdkccDghOxTEAAH5QAwA0ABgAAAAAAAEAAACkgYoi
BAByZXRyaWVzL2pzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1hY3R1YWwudHh0VVQF
AAPkIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJGF2R56fM7hzAQAAHwQAADIAGAAAAAAA
AQAAAKSBvVQEAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWRpZmYu
dHh0VVQFAAPkIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJGF2R3Zle1NzMQAAoE8DADYA
GAAAAAAAAQAAAKSBnFYEAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5
LWV4cGVjdGVkLnR4dFVUBQAD5CBSVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACRhdkdy/Pkp
vAgAAAsgAAA6ABgAAAAAAAEAAACkgX+IBAByZXRyaWVzL2pzL2RvbS9yZXNlcnZlZC13b3Jkcy1h
cy1wcm9wZXJ0eS1wcmV0dHktZGlmZi5odG1sVVQFAAPkIFJWdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAJmF2R4aoAcOoqwcAq/UqAAoAGAAAAAAAAQAAAKSBr5EEAHN0YXRzLmpzb25VVAUAA+cg
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAApXHZHAAAAAAAAAAAAAAAABAAYAAAAAAAAABAA
7UGbPQwAc3ZnL1VUBQADfhhSVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAClcdkcAAAAAAAAA
AAAAAAALABgAAAAAAAAAEADtQdk9DABzdmcvY3VzdG9tL1VUBQADfhhSVnV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAK5gdkcceCJ1fwAAAI0AAAAkABgAAAAAAAEAAACkgR4+DABzdmcvY3VzdG9t
L3plcm8tZGFzaGFycmF5LXN0ZGVyci50eHRVVAUAAwcgUlZ1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAAAYXHZHAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UH7PgwAc3ZnL3N0cm9rZS9VVAUAA2AY
UlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACdYHZHZoEDL38AAACNAAAAJQAYAAAAAAABAAAA
pIFAPwwAc3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVUBQAD6h9SVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIACRhdkceMyt/aMcAAPusEwAZABgAAAAAAAEAAACkgR5ADAB3
cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAPjIFJWdXgLAAEE9QEAAARQAAAAUEsFBgAAAADf
AN8ASG8AANkHDQAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>266064</attachid>
            <date>2015-11-22 12:46:09 -0800</date>
            <delta_ts>2015-11-22 12:46:09 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews114 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>852878</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
X3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0ci5vbGRVVAkAA5AeUlaQHlJWdXgLAAEE9QEAAAQUAAAA
dW5pcXVlX3N1YmplY3QgPSB5ZXMKUEsDBAoAAgAAAGZfdkfzhioJMwAAADMAAAAYABwAX3dwdF9j
ZXJ0cy9pbmRleC50eHQub2xkVVQJAAOQHlJWkB5SVnV4CwABBPUBAAAEFAAAAFYJMTUxMjIyMTk1
OTEyWgkJMDEJdW5rbm93bgkvQ049d2ViLXBsYXRmb3JtLXRlc3RzClBLAwQUAAIACABmX3ZHUSqX
OQkFAACPBgAAGAAcAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUCQADkB5SVpAeUlZ1eAsAAQT1
AQAABBQAAABtlTUS4wASRXOdYnLXlJiCDcTMrMxiBossnX69E2+nnbzfr6r/37+/YQVJMf+4HvPH
dpWQ8YU/mpD8b/EXMBRFWByFZRiNYxyBgeYysYkmrkNGe3lEvKqugk/aQc/9Od3UTV3IURTwQrbv
5bVkEHAaObkp3wpKJYiuZJrKYXWHcPWzw+mXFsZh4lVdC7fcHAd7yCKKUXgpMWBGEd2q+8CAuhzp
s6Cv2WfpSHQYuOjDROg8HcUTnjqMbZnTcEOgXbGUQMYhuL1cWIvZEzN7eNYKYJBeCT4nkJA6umye
BkYVWOC6u9yB5JHV2UpmdNFsKLLRJHUKtGLxphQmRX8yT/CVYmCqBLonBx+57eDlcbLvq6/gu6be
wdShpq8SGG31EHDJGJAUs8RiuqqdgH3NZdyoMmGB4AkhMBcQL+iwiQxaXC7zhFYpWMBH2iGbFN1r
7lJ4xmFYZv4d2+Ec7dsx6dkUWS+LQAGOoWAQsmWfYtukaeZMKBxZI+t62Ju3sC6Hg69L8KD1BDgq
881MgFLndUgs7bDapcBG9Sjd44WHkq2s9xy2ZPGzdMejyZvw1vQni/EwIP20Yj8QWnkDfY5DDAlk
3OPI9g0BXQNdaDXMJlyo55YROpRPVWiHIej599pz/LJzUWvx0EvAQkHKniB3MeaC7oaRWfe9AW+x
d2FRJ+Bx39MA5UCvwLvDW2je+h58kuN+pQdNaZrVzmekmaRFgma9n7hLcZfcSwEwLunf3JlLMzG2
OgVhZu4tWxlmhQW9xkq99jdu4+EVLRFdD5Wg+qNzXm501EmjWB8W2MAUpMgDZ2aJZewvy60RTV6b
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
YsriHfqhlVWBNifTIdmB9appQWusGRKtXF/Ey5A5t51qNtDj8XxFabdEhqp9+wStarBYz5mjfhdY
xgvzIIkZyAvyzBAesFbwJdcPI+GJYMlHtTV26LDnuYYBiY+yD1Xr9z9PMq1aZEIkwaycIqaI/0W8
AFBLAwQUAAIACAB2X3ZHMzh/a8IAAADyBgAAPAAcAGNvbXBvc2l0aW5nL3Nob3ctY29tcG9zaXRl
ZC1pZnJhbWUtb24tYmFjay1idXR0b24tc3RkZXJyLnR4dFVUCQADrx5SVq8eUlZ1eAsAAQT1AQAA
BBQAAADtz7EKwjAUBdDdr8hYBxubWlsFBy0KDmLBUaQ804dGY1Neo5C/V3Gwgx+g0u3e6d6zDYJx
NBoPhB8LsWPK4gVqV8p8gzYjUyFZx2p1KEFrLBgSTXqBiJOIeeeFOsygxvX+hNLOiQzly/IGWhVg
segyTzUbWMY35koSU5BH5KkhXGGh4J16QTQUvggT/pi2xroKa55pcEj8MfZK+fT5z5dMqxKZEKOw
s/03RNgivgMRDZuI1FTuJxT9JGkVraJVfFDcAVBLAwQKAAAAAABrX3ZHAAAAAAAAAAAAAAAAEgAc
AGNvbXBvc2l0aW5nL3ZpZGVvL1VUCQADmR5SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
a192RwVPIvbCAAAA8gYAADIAHABjb21wb3NpdGluZy92aWRlby92aWRlby1jbGlwLWNoYW5nZS1z
cmMtc3RkZXJyLnR4dFVUCQADmR5SVpkeUlZ1eAsAAQT1AQAABBQAAADtz7GLwjAYBfDdvyKjDjZN
Ss8oOGi5gxvkCo4i5TP90GhsyteckP/+ejio4OogZHtveu+3EWKWT2cyTVKhtsx4PEMXGl2t0Zfk
WiQfWGf2DViLNUOi+VjIicrZ8PRl9kvo8Gd3RO0/iRxV380FrKnBYz1iQ3PfwDO+dr+ksQB9QF44
whXWBm5pLPIPmchM8X7aOx9a7HhpISDxfuyaqsX/v0QzaxpkUk6zwSYiIuIliOwBUbg2vIUiVSoq
oiIqnij+AFBLAwQKAAAAAAAFYHZHAAAAAAAAAAAAAAAACAAcAGVkaXRpbmcvVVQJAAPJHlJW5SBS
VnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAARYHZHAAAAAAAAAAAAAAAAEwAcAGVkaXRpbmcvcGFz
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
ot7XURLf6cR08MLGDQ8LL5MLvkM3F5yq+1i4hEA3JEQhGNhTEvpxhhshUZZfaswW7T/N/ABQSwME
CgAAAAAAa2B2RwAAAAAAAAAAAAAAAAkAHABmYXN0L2Nzcy9VVAkAA4kfUlblIFJWdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAGtgdkdOS4yOsQAAAM4BAAA2ABwAZmFzdC9jc3MvcGVyc3BlY3RpdmUt
b3JpZ2luLWluaXRpYWwtaW5oZXJpdC1zdGRlcnIudHh0VVQJAAOJH1JWiR9SVnV4CwABBPUBAAAE
FAAAAM2PMQvCMBSEd3/F27SDBidL17aDOCgN2rmmzxJI8kLyKubfW1EUdwfHO+4+7uqm2TcFtHje
aYaeMIIjhoQM2nqDFh3DgFyS9SNjLzkZhAsFmHsM0aNifcUlBT1ot7zNVzNxIjNajKLquBN1K8UT
LiSNQeFDlRRQqBhFKeUXuEJlutCxJrdS3i/WmzzPoIAr6R5exaIwNBzdex32h0DTFk7bavHOTOSP
nc3qn95M/3rzDlBLAwQKAAAAAAATYHZHAAAAAAAAAAAAAAAACQAcAGZhc3QvZG9tL1VUCQAD5h5S
VuUgUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAE2B2RwAAAAAAAAAAAAAAABoAHABmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL1VUCQAD5h5SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
E2B2R6sPcR6wAAAA7gAAAD8AHABmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFiYXNlLWNh
bGxiYWNrLWRlbGl2ZXJ5LXN0ZGVyci50eHRVVAkAA+YeUlbmHlJWdXgLAAEE9QEAAAQUAAAAZc5B
C4JAEAXge79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZo
qRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1
KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN4
9gZQSwMECgAAAAAAGWB2RwAAAAAAAAAAAAAAAAsAHABmYXN0L2Zvcm1zL1VUCQAD8h5SVuUgUlZ1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAGWB2RxTUgs97AQAA+DkAADMAHABmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLXN0ZGVyci50eHRVVAkAA/IeUlbyHlJWdXgLAAEE
9QEAAAQUAAAA7dhNSwMxEAbgu79iTraCuODBQxBBawUrRdktFkGRMTttA7vJmszW9t8bPw4FL3rz
8F5CvmY38xySkHFZ3paGSln2DcfxpouSkgve0MN5WZINbecaoQXnsqY3pysaXPs1N66m+BVEshPV
+5bVrvLcjqN4XUmSNNgr7kPTt5KKS1YuxvOqmMvLjdOiCn20Ukx4zZWNrtNRiFJsOcbix5qObNcN
T44PyFDS2pjeu9denjuNp5NqZMxDjjLmYqtiQy13rCrRn9HO2M80zV10a1Yx5jvVoQ0+Kc1nV8ZU
Gp1f0v7hV3MmGx1xkkp8curWTreHu1+f9o26xnmZ5t8f7I1BC1rQgha0oAUtaEELWtCCFrSgBS1o
QQta0P6C9pFYSXxNYZFxP5MDLGABC1jAAvZ/w7YuV/Jyclat86wf9SdahEh2xZFt7ifbcMJdAdzg
Bje4wQ1ucIMb3OAGN7jBjddm0IIWtHi/w8EGbnBjRwYtaEGLewQONnCD++/c71BLAwQKAAAAAABR
YHZHAAAAAAAAAAAAAAAADAAcAGZhc3QvZnJhbWVzL1VUCQADWh9SVuUgUlZ1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAUWB2R6sPcR6wAAAA7gAAAC8AHABmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLXN0b3JhZ2Utc3RkZXJyLnR4dFVUCQADWh9SVlofUlZ1eAsAAQT1AQAABBQAAABlzkELgkAQ
BeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQ
vHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnw
M5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBL
AwQKAAAAAAAhYHZHAAAAAAAAAAAAAAAADQAcAGZhc3QvaGlzdG9yeS9VVAkAA/0eUlblIFJWdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIACFgdkerD3EesAAAAO4AAABAABwAZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtd2ViZGF0YWJhc2Utbm8tdHJhbnNhY3Rpb24tZGItc3RkZXJyLnR4dFVUCQAD/R5S
Vv0eUlZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+n
Uadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcq
KXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oL
lLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACAAhYHZHbD/afbYAAADcAQAAQgAcAGZh
c3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdlYmRhdGFiYXNlLXBlbmRpbmctdHJhbnNhY3Rpb24tc3Rk
ZXJyLnR4dFVUCQAD/R5SVv0eUlZ1eAsAAQT1AQAABBQAAADlz88KwjAMBvC7T5GTbKBWEBF6E50X
EWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQO
xAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiw
zB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzobToNxvznttC6COLrBOB1lf/XtC1BLAwQKAAAAAAAk
YHZHAAAAAAAAAAAAAAAADAAcAGZhc3QvaW1hZ2VzL1VUCQADAx9SVuUgUlZ1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAJGB2RyGPvTgyAAAAMwAAACwAHABmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2Ut
Y3JvcC1ib3gtc3RkZXJyLnR4dFVUCQADAx9SVgMfUlZ1eAsAAQT1AQAABBQAAABzy0ksSXVJTc5P
SbVSSAHRmXnpCqlFRflFVgqZecn5RUWpySUKKYkliQrJGanJ2XpcAFBLAwQKAAAAAAA5YHZHAAAA
AAAAAAAAAAAACQAcAGZhc3QveHNsL1VUCQADLR9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAOGB2R3L9ZfKFAAAA6QAAACUAHABmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIu
dHh0VVQJAAMrH1JWKx9SVnV4CwABBPUBAAAEFAAAAK1OMQ7CQAzb+4p8oGRguxkm2EB0TttUnJS7
VLmc1P6eg36BxbJsy/akaY1CHjUDm6kFWKLwDwIivlRq4oIXcsLr8MCBx1t0vNOu1Z9cvOBCxXEr
gsZFq00tvr2tn3U6NRUkZoYzsHDi7BDTquZdc8JBIUDNNLZRVxCl+U/j/VHP8/dF9wFQSwMEFAAC
AAgAOGB2R84JKAKNAAAA8AAAACcAHABmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVy
ci50eHRVVAkAAysfUlYrH1JWdXgLAAEE9QEAAAQUAAAApY4xDsIwDEX3nsIXKB7YMsMEG4jOTuuK
SE5cOY4EtyfQI7B8+f9nW3/WvCUhT1qAzdQCrEn4JwERHyotc8UTOeF5uuHE8ZIcr/TW5neuXnGl
6viqgsZVm819vTsfIy1jypuaj83SoWcgqTAcgYUzF4edDp2EfYQArVDsBVxBlJZ/ixStbX5+n/Q7
keEDUEsDBBQAAgAIADhgdkfPj2YOUAAAAKAAAAAkABwAZmFzdC94c2wveHNsdC1jb250ZW50VHlw
ZS1zdGRlcnIudHh0VVQJAAMrH1JWKx9SVnV4CwABBPUBAAAEFAAAAK3MsQ3AIAwF0Z4p/gZR2myD
wAhLNkaWiTJ+yA5prrtXTCdLDrYBcje/0FgIEB6EEySkNAK2Yq5IPO4sXLG7CM0cStGt7ssslb+w
p4fK8ZEvUEsDBBQAAgAIADlgdkeBSnetSwAAAKwAAAA0ABwAZmFzdC94c2wveHNsdC10cmFuc2Zv
cm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQADLR9SVi0fUlZ1eAsAAQT1AQAABBQA
AAC1zLENgDAMRNE+U9wKtGzjwAVZcmxkLOZHomAD6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUb
W3LnUNdXxMBh0cW+juJVbfvl+gBQSwMEFAACAAgAJGF2R/VuA/V1AQAAnQIAABEAHABmdWxsX3Jl
c3VsdHMuanNvblVUCQAD4yBSVuUgUlZ1eAsAAQT1AQAABBQAAACdkUFr20AQhf9KmVMDqyqJY0LV
k8FKMHbrEjlNcxJj7TjaeCUtu6PUIvi/Z3dlQqGFQm/L6M373jzN5vPyLi/uV5vi4yswOXaQvUJD
UmF4sMVq//5IVJtssZWJ40HTp5obHb5ZMp1lyOBmNVs+ggA6GKqYpB99nxWFn2DFPXoxbBZf8/X9
5kOcH49HATWziYS/w9+ZtXZJQ4wSGf8Pnf88cT0UXelYkrWQse3pGKM8R77smtHakX0hmfzqrHQJ
usTYzpDl4U/6XX7rWywW62//jgAjy+2VMUE0mVxdCWj7prT05KFOda3PcSGg45psWVl0NYVkfku1
7DP3JtrvUDsaVxvl99onyM4FaBy6nsvYZymVvxDSH53uG3Lp3JeX5g9F+kDbpeJ0FbWbWL2AF7KB
DtkpkEHnAnnyeXo9FWDUgfTJl1rc6t9ChEKNJebBb3FVj7UK2KlDEMYzr0fXncb9ANmlgN67l2Nd
yOHscqeCNv6Rsy9vUEsDBAoAAAAAADpgdkcAAAAAAAAAAAAAAAAFABwAaHR0cC9VVAkAAzAfUlbl
IFJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFVgdkcAAAAAAAAAAAAAAAALABwAaHR0cC90ZXN0
cy9VVAkAA2IfUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAD1gdkcAAAAAAAAAAAAAAAAR
ABwAaHR0cC90ZXN0cy9jYWNoZS9VVAkAAzYfUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AD1gdkd/GDUk7gAAAIkEAAAwABwAaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmlu
Zy1zdGRlcnIudHh0VVQJAAM2H1JWNh9SVnV4CwABBPUBAAAEFAAAAO3SwUoDMRAG4LP7FHPUy7JZ
WoUgHtweFLQIIgriIZtM09A4U5LZim9vot48SQUvPSZkvmT+zJJ30Peget0pPT8DfMtKzdrI1kRI
YhNuOUkg/zxT3en8Bc6vacUXGiJ7X7Yhi0mS27Ztlr+mFjhOvlgZ5RZzNh5vvtTLUrTRUAojun3g
+riBaRX8lIwEpscg64FftxHr6sqQi5g0DMau0UEHSGYsd8Jo7AbJ5f26esiYal6LYEX/sDUcN0cn
h9z+ITdy38F99mUEPaf34tIU40H+KzlQkEreF71MTf1RDU93A1gmQlsnqZzZmRhc8wFQSwMEFAAC
AAgAPWB2R4YaWM+EAAAAwAAAAD0AHABodHRwL3Rlc3RzL2NhY2hlL25ldHdvcmstZXJyb3ItZHVy
aW5nLXJldmFsaWRhdGlvbi1zdGRlcnIudHh0VVQJAAM2H1JWNh9SVnV4CwABBPUBAAAEFAAAAJ3M
sQrCMBCA4b1PcaMu0oRWJIhLXRwsgoOCOMT0GgPhTpJrxbc3voLrz8/X8wxag9KmVqbdAL6zUs0q
srMRkriEL04SyN8aVa/bO2z3+Jj8zkBGGo6Ys/V4CfLsrKDn9DGwoCnGZdX/LQcK8iPPRQ9MBxrZ
wPXUgWMidFJaeWYbw1B9AVBLAwQKAAAAAAA6YHZHAAAAAAAAAAAAAAAAEgAcAGh0dHAvdGVzdHMv
Y2FudmFzL1VUCQADMB9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAOmB2RwAAAAAAAAAA
AAAAABgAHABodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9VVAkAAzAfUlblIFJWdXgLAAEE9QEAAAQU
AAAAUEsDBBQAAgAIADpgdkcI5vALzAAAAJECAAA7ABwAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wv
b3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAkAAzAfUlYwH1JWdXgLAAEE9QEA
AAQUAAAA1ZCxTgMxEERr8hVbkuZ0PiUgWYiCSwFSkg5RIIo9e+NYMbuRvQfi7/EBHRW6inJHmjc7
s5c36DownW2NXXdA78WYVZPEYYKsLtNZskYOzyvTXl2/wM0DH+TWQpIQqgxFMWtpmmax/zNqQ8MY
KquQ7qgUDLT9pt5V08lCNSbyc8DTc73wIYYxo0bhp6jHXl7PiabrHtknyhZ6dEfy0AIxDjUTBnQn
Yl/mtXoslKe9NtGp/cW2cLm4WM5KYP8z3FcvVAqSPyqXx5T+J/kTUEsDBAoAAAAAADpgdkcAAAAA
AAAAAAAAAAAXABwAaHR0cC90ZXN0cy9ldmVudHNvdXJjZS9VVAkAAzAfUlblIFJWdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIADpgdkek3TpDgwAAABoBAAA7ABwAaHR0cC90ZXN0cy9ldmVudHNvdXJj
ZS9ldmVudHNvdXJjZS1iYWQtbWltZS10eXBlLXN0ZGVyci50eHRVVAkAAzAfUlYwH1JWdXgLAAEE
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
1xFdwUZ1iyGuvlx5JDwBscvKMDxnVm9H+GG3s1cj6bOP/EXLjBEnLSRwokdziDCpRGUMM2fXSdVt
2w3qwwa/rlQwHpOEUuk5GjaOQVVcEyqlFzzefJirx4ypHt7YaZK/tHlRGkfNgyrss4D/Q/kdUEsD
BBQAAgAIAENgdkceE9GY7AAAAMYDAAA5ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1wbGF5LXN0
cmVhbS1jaHVua2VkLWljeS1zdGRlcnIudHh0VVQJAAM+H1JWPh9SVnV4CwABBPUBAAAEFAAAAN2T
QUsDMRCFz/ZXzNFeZHddLATx4PagoEUQqSAestlpGhpnSjJb8d87WzzpaV28CLkkzHzvzRuy4gNU
FZSVKfScA77nsqzPIjsbIYlLuOckgfxLXRaLxStcLrHt/ZWBjNTdY87W4zrItrGCntOHgVPqY5zP
Vr8mBwoyIB+VHphuacMGnh8acEyETvRNaw42hu6bSj3Kv3zZv2PvteJam3YGtDHiJLDYJA3TJvg+
2cHtMR9+20ccbjeWuojJQGPdFjsoAMm2qgmtdTtNNU+b6iljGjJbBifmB1v3MzuZT1IYs/e/I1/8
c/KYX/AJUEsDBAoAAAAAAFJgdkcAAAAAAAAAAAAAAAAeABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvVVQJAANbH1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABHYHZH+lx/LE0B
AACXBAAAQgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVu
ZC1idWZmZXItc3RkZXJyLnR4dFVUCQADRh9SVkYfUlZ1eAsAAQT1AQAABBQAAADN0k1LAzEQBuC7
v2Ju6qHdTfajteBBW4sFC2LVi4hMk9k2mE2WSVZdf71b8OOkV5vTMITJ8w55EHKSyolIh+VJ+ggV
42aJzlTe6qfrNmzPu0gBgtk4tJY0EPPpQJRpXsLR89x8X75g9vx05+itIRVJL5yJM4x4DEcrUt5p
OKxi1xwCRl8DOeVbF4lJH/cdSFa+ZUVTVFtKpp5pSdrgTzUQRSmHMhsn1+yj7wdRSOaea4yX6LQl
DsnSvxhKdqRdMe+D1OTil2+owBpHIMosPZCpKAZCDKSEz/jZcDxKYdbWzQ05TXzLRA+56M9ECpEV
2SMsNs6zcRvo00T29tbUtMZAECjCugNlTf8erElh23fP7ldYN5bO26oinpnQWOyusCOGVwyAWvfb
jB4QQufUlr0z78S/0OT+0oo/aPn/0ka/0/LiX2ljsb+0fB/+2gdQSwMEFAACAAgASGB2R7G+i3E7
AQAAegMAAFAAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25m
aWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADSB9SVkgfUlZ1eAsAAQT1AQAA
BBQAAADlkcFOAjEQhu8+xdyEA+y2wEpIPAhIJJGECHohhAztLDR22820q65Pb01UHsI5/fkzmfm/
mZ2Qk1xOxLB/k8s9lIynFTpTeqsP6yacp22kAMGcHFpLGoj5tieKfFhA53Vh/prvmT0fnh191KQi
6aUzcY4Ru9DZkPJOw3UZ2/oaMPoKyCnfuEhMupscyDa+YUUzVGfKZp5pRdrgRfXEqJB9ORhna/bR
p0EUsoXnCuMDOm2JQ7byb4ay70jfYpFAKnLxN19fgTWOQBSD/Gp3gRbjfwg9+DeflrkY9YToSQk/
+EV/nIjmTVU/kdPEWybaDUWqiRRiMBrtYXlyno07QaKJ7O3WVHTEQBAowrEFZU3aB0dS2CT37mWD
VW1p2pQl8dyE2mL7iC0xvGMA1DpdM3pACK1TZ/bOfBJffQFQSwMEFAACAAgASmB2R2FDqH88AQAA
egMAAFIAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWct
Y2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQJAANLH1JWSx9SVnV4CwABBPUBAAAE
FAAAAOWQQU8CMRCF7/yKuQEH2G2BVUg8CEgkkYQIeiGEDO0sNHbbzbSrrr/eNVH8Eczp5eVl5n2z
E3KSyom46afjmz3kjKcVOpN7qw/rKpyndaQAwZwcWksaiPmuJ7J0mEHnbWEu4Qdmz4cXR58lqUh6
6UycY8QudDakvNPQzmNdtgGjL4Cc8pWLxKS7jQPJxlesaIbqTMnMM61IG/xXPTHKZF8ObpM1++ib
RRSShecC4yM6bYlDsvLvhpKfSj9i0YAU5OJfv74CaxyByAZpa3eBFkJeIbTMrgVapmLUE6InJfzi
j/tyOIJ5VZTP5DTxlol2Q9HMRAoxGI72sDw5z8adoKGJ7O3WFHTEQBAowrEGZU1zD46ksGrc+9cN
FqWlaZXnxHMTSov1E9bE8IEBUOvmm9EDQqidOrN35ou49Q1QSwMEFAACAAgATmB2R+yUUp+KAAAA
mwAAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wbGF5LXN0
ZGVyci50eHRVVAkAA1MfUlZTH1JWdXgLAAEE9QEAAAQUAAAADcixDoIwEIDh3ae4F9DQE9SwaVhM
nJS4GIejPbBJuZIrxNSnl3/68mNhqq0xW0QwWBdY43F3OCE0yzjdWRxrq8yv0qzVaMy+rN5wHSSq
lwFslFljaP3IHSWGxDN0GWzwLKvY0rLe8/NB4xT4svQ9a+PTFCjfKLPClxKQc+xgjkCQstiPRvE/
1s0fUEsDBBQAAgAIAFBgdkdkSszxpgAAAAcDAAA7ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtcmVtb3ZlLXN0ZGVyci50eHRVVAkAA1cfUlZXH1JWdXgLAAEE9QEA
AAQUAAAAzZCxDoIwFEV3v+L9AIb3Sklk07CYOClxMQ6lPLRJaUkLMfXr5QN0ljud3OnkUI4yQ8yI
AKnKqRK4RSqgnofxzK7j0ATmW4HLKkIUUt7h+HA+GPcA7d0UvG3MwK2KDJEnaBNoa9gtxFrNy7u/
XtQwWj7Mfc+hNnG0Kp1U4gAvFUF1HXcweVAQk9PP4J15c9jQV7XylxqVmP9XbbfaaoJWW03INVT7
AFBLAwQUAAIACABSYHZHr8A+1KIAAADRAQAARgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAkAA1sfUlZbH1JW
dXgLAAEE9QEAAAQUAAAAxdCxDsIgEAbg3ae4F9DAtRjtpuli4qSNi3GgcK0kFBpoY/Dp5QHsqjf9
/z99OWRcrDlfIwLHimFViA3LpZ6H8UJOU2gC0b3k+SrkuOXsAafe+WBcD8q7KXjbmIFaGQkiTdAm
UNaQy4mUnPN6uF3lMFo6zl1HoTZxtDKdZaIALxlBak0aJg8SYnLqGbwzbwor/EoTSzRelOK/tN3y
19j+V7QPUEsDBBQAAgAIAENgdkcwm9Sl7AAAAF8BAAAtABwAaHR0cC90ZXN0cy9tZWRpYS9wZGYt
c2VydmVkLWFzLXBkZi1zdGRlcnIudHh0VVQJAAM+H1JWPh9SVnV4CwABBPUBAAAEFAAAAIVPu27D
MAzc8xWcstmyjTQPAUYRpC06dCiMdAo6KBJjC9CrElUgf18ZbbKW5HCHuyPIU9vxpsy6Xj2sP+H1
eHwf8CtjIrjocaZP2YYX7YT5GN72Tg1oPeFeqYgpcRC/ANpuUzel2xIrXsjRwEQUOGN3iW+bpmEW
lRbsWyv0FU3RExlUlfFC1XLUj05Y7MtKn6PExKhcUgd1Wd6s/W6uJV0D9iIEo6Ug7R0rnsXp32f+
6CGiIHyO0ceDtxYdcUAnfXaEERUIBziLHM5XQojCjQgG3UgTWJ2sIDlBBWny2Sg437UOdLrhzW67
WvwAUEsDBBQAAgAIAERgdkel0ukHvQAAAOwBAAAvABwAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQt
YWZ0ZXItZGlhbG9nLXN0ZGVyci50eHRVVAkAAz8fUlY/H1JWdXgLAAEE9QEAAAQUAAAAtZCxasNA
DIbn5ik0pkuxTcBwlAx1hgSSbKVD6SDfyZfDF8ncyS19+15Lt2wJAS0C/d+H/qN8QtNA3ZiqTAv0
let69RTFYoSkNtEkSQP791Vdte0HPG+on/3aQCY9UM7oaS/el4uXEhoNlGAktzheD1ZM2gkPwc8J
NQi/BT11cp4i/W5bZBcpGejQnshBBcTYFyf0aEdil2+Rk75mSjseZBOsmgu2geXi4fEmA7v/4v7+
QiUv6btweY7xnuQfUEsDBBQAAgAIAERgdkdCX2uGSgEAACgDAAAvABwAaHR0cC90ZXN0cy9tZWRp
YS90ZXh0LXNlcnZlZC1hcy10ZXh0LXN0ZGVyci50eHRVVAkAA0AfUlZAH1JWdXgLAAEE9QEAAAQU
AAAA1ZBNTwIxEIbv/Io5ET2wX5IAjWgIaDRRQhCjCeFQtsNuk+50bWcR/r3dKJw9aqeHmb7vPJnp
3O4hyyDNRBLuAPDTp2k/MjaXBhznDmvrWFOx7qfJYLCB6xlum+JGgEdSz+i9LPBNczmVjIV1RwEX
1Bhz2Zn/e/LwT5A1aW6RL4GuLT3Szgp4X0wht0SYc3gLnr00WnXWJ36UZaMNPKxWiyV+NOgZdrpo
y1lT1feapHldPk1ILbGyjBOlXKALkN9JGHMQJSHS0Ba80DgDJXMt4vgsiWGSJHGFSst4rxXaHpfO
MhtUPWOlivJC35KscByQtnE5+pjDJBEfuHuyjkft6fKxxjHjgePaSE2/2OOnnDoMP33nnHVTW1VI
LAAptw0xOlQgCbAVBWyPjOAkFQgGqeASKu0ryXkJPfClbYyC7VnLQPtT3u8nV50vUEsDBAoAAAAA
AEFgdkcAAAAAAAAAAAAAAAAXABwAaHR0cC90ZXN0cy9tZWRpYS90cmFjay9VVAkAAzofUlblIFJW
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAEFgdkcuYLB0gwAAAMAAAAA9ABwAaHR0cC90ZXN0cy9t
ZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc2xvdy1sb2FkaW5nLTItc3RkZXJyLnR4dFVUCQADOh9S
VjofUlZ1eAsAAQT1AQAABBQAAACdzLEKwjAQxvG9T3GjLtLETkFc6uJgERwUxCGmZzwId5JcK769
8RWEb/rz8RtkBmvBWNfWtYDvYky3ShJ8gqwh40uyEsdrZ0y7vsFmh/cpbh0U5PGApfiIZ9Jn7xWj
5I+DBU8pLZvhb5mY9Eeeqk7Ce36Ig8uxhyDMGLS2+pl9orH5AlBLAwQUAAIACABGYHZHDJz1waIC
AADOCQAANgAcAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtYWN0
dWFsLnR4dFVUCQADQx9SVkMfUlZ1eAsAAQT1AQAABBQAAADllU1P4zAQhu/5FaNe+iGUpJQFhMSh
QBbQIopoQJUQWrnJNPHi2JHjFCrEf1/bST/owm4v9LKqVKnu65nHr8czAE6IhYKJkJChIjFRBJQk
0VMBEyky6Oc5Q7i4GkKhJJLMdRyn04EhKpjSGIVbyGgHngmdx4gpgSqKACZI7NzeXbcWUjiGZqpU
fuR53d0D19ef7tGh7/ue3elJLEQpIyy8lBXenMjLpUh+Uh7ji5v1ysNm23GC++A6bJE4trRtJxjd
BKdhcAatCt9lyBOVwrHO2G22YfDDktg/NUVFpPBFhVb+4D/+EcN90iltgDlIFWddlokYrSymBRkz
jNfS1QJ9chrHyDV9BR8RnjMyU6kUZZK2K2MVkQrM8ljvXHGWMAZRicUHvhp1q/3FUUuMUsIT/KIF
Q3lPGNUuoyGyNeR0oLvitl521SyvvBYycWncW78Ro7HlZzS8ZOwjwZQw/f2EM6tqhJfhbuNz3SJc
Y2ifAJyKkivKk3qPptzdBuVN0N2Iss/j2RKttw20/tXJRmjn2j9l+s0FVcWScW8LjOfBYCPG17fP
RQuuBs1Igl6+qIGP1JRPRKUelBIuUIq/iDnJ6tBkjG6+WlzftuBO/+by9Ovc0YfY30YZjkajjcow
1G0fTpgYL/g6ELyYXq3AstfDb96HdmA6b03jGRSozOvXysSMNNsytfLSbDyzOaoJ6prG+tB7XEnf
fg+23EJ5oQiPUEygLyWZnZSTCUpLq2SJy4Ey1tR3kukcd7dXbmTf02D8CyOlf7c4PttztR5Woz/u
wCsYw4+gubiaJry1dXc3Me1awDBDruohXaeZN2ozGlbZ3+14pnE9Zw/2191/J0yRJqmqJrJf3/g/
3Nv7j9zr+v7m9tVSJ7g+g8F3CINh6Di/AVBLAwQUAAIACABGYHZHe8upGwYBAAAWAgAANAAcAGh0
dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtZGlmZi50eHRVVAkAA0Mf
UlZDH1JWdXgLAAEE9QEAAAQUAAAAvY+xTsMwEIb3PMVtaeq6pgtbpQiaqVJBtLSsl9zRWHXiKj5D
eXuSqAwIFhYWW/rv8/f7tNZg9t7FhoNZoaApDltz4HJt5XrdRevIrLiMR+Pww0fRwkF0xyE6CaYW
OZshCaZhsmikw+qkbatLbEnXLuiGBamXa76cuRKmuVwkUUr9ZzdWEtGNzXkOerGY3YLqz8UN5HkC
xctjcb8rVjAZHfOTbQmWS0i/BGkGD+ufXOOJR45swNIxXbmn5803AtLaEnGbZokq9sVmN6mwPfdL
Sd35eKz7OFHTKWwFO4FhUPaPZ/COVuDVd4DOQRU5gHhwHilRQ8WbJfbzAZ9kWf+7X82QwJ/Mn1BL
AwQUAAIACABGYHZHT2tOw6ECAAB4CQAAOAAcAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFu
ZC1obHMtbWV0YWRhdGEtZXhwZWN0ZWQudHh0VVQJAANDH1JWQx9SVnV4CwABBPUBAAAEFAAAAOWV
TU/jMBCG7/kVo176IZSklAWExKFAFtAiimhAlRBaufE08eI4keMUKsR/X9tJP+jCbi/0sqpUqe47
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
0uHN2/9vRny1Gj0+xQzTb5kMr2OcnIJx9pWS4HU4NyfAuR58m+D/LUHV+tHtC3QL+h8/fwVQSwME
FAACAAgARmB2Rx5NeI0NAQAA0gMAADYAHABodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQt
aGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA0MfUlZDH1JWdXgLAAEE9QEAAAQUAAAA1ZFBSwMx
EIXP9lfMUS9lsxTqRinoVlSwpVCKh8VDupmmoWlmSWYt/nuzraLosQoKuQx58703M5XIZZbeeb8Q
xRNczm9uZ4vJbARXzLhteIq8o7CZkLdMYY7cNhI8MURktt5A24A/aGB7EF2A0jpgjGAjOKqV61Uf
Lnn2ay5TeoY8h3cvwF0UYtDff0LgOmBDocNVA5ENhynHGJetGcnOZpJQyuADGZMU16lpIyE1OtSf
4w/EX4zPKnBJfmVNGxRb8o+W1yVtG4dddae8dhgklKpeo4YM0KtlmgyWqt6g1/G43S0ihnu/orGt
WX5jSzjtnZwd5eD123n2cylGQ+ElcX3r3Fdy8f/IIvtB8itQSwMEFAACAAgARmB2R7WbzQdPAQAA
EAQAACYAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWF1dGgtc3RkZXJyLnR4dFVUCQADQx9SVkMf
UlZ1eAsAAQT1AQAABBQAAADVU8FKAzEQPduvmGN76G6ydrsQRNAtoqCltIqCeEiz021smiyz2Vb9
+matqOCxCHrLhDdv3jzejN0GkgR4IlgiOAfc1pwPIuOUNEBeEVaOvLbl44CzLHuCkxHOm/JUQI22
uMG6liXea7/MpcfS0auArm2M6XXGf5BZW+1byllg185e2YUT8DDJQTlrUfnwFzAbaXTRSRhP+5z3
v02KsmwIo2ZdTYNCpFtC3I8QCWfpIEzaV5BfjNFvHa0Cm0eyQRcSOYIue1GMSxHPXEMKc6mWGH+i
v179LGFRGmXxhNxzEDZtrNdrjGdIOqh7k3ODZ6SWeoORqiqRDlnvfynmw+PDMuI/InLtyjIgzkPT
SkBoNFgcQuwl+dzZhS4bkm0i3jPo1pXBtrqUtjBIwbHWiQIYoG13K2Au1Sq4XB+21V2N1OZypJUX
P7jDDXSOfvO2dlBLAwQUAAIACABHYHZHsBlxN+AAAACsAgAALQAcAGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tZXJyb3ItYWJvcnQtc3RkZXJyLnR4dFVUCQADRR9SVkUfUlZ1eAsAAQT1AQAABBQAAAC1
kUFLA0EMhc/2V+SoF9kZC4VBPLg9KGgRRBTEQ3Y2nQ4dkzKTrfTfd1Y86c3VY0Lel+S9lezBWjDW
NdYZC/RRjJmfJ/GYIKvPtJOskcPr3DSLxRtcLqkbwpWDQtzfUykY6DnqpkWlIPng4JSHlM5mq1+T
I0cdkY+VHoVveS0OXh5a8MJMXmuvzuwxxX7ClkL6df6dhFAnrqto66AKE00CK2ZthdcxDBnHaz/9
kfddorG6Qe4TZQct+g310AAxdnUndOi31dUy7aunQnn0bBm9uh/sms/s5Hs6F/+W+1+Sj1BLAwQU
AAIACABHYHZHHYYfLRcBAADxAgAANgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9l
cy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUCQADRh9SVkYfUlZ1eAsAAQT1AQAABBQAAADtjkFLAzEQ
he/9FXNsD7tN0pVdgwilRSpoKWuLQukh3Uy3wWyyJtlV/70pVa8ieJS5zJt5881b2h4YA8o4YZxO
AF89pVmqbSU0uFA5bK0LytTbjJI838HVHPddfc3Bo5H36L2o8VGF40wErK175zA0ndajwfKf/Cdk
ZVQ4IR8iXVlzaw6Ww9NqBpU1BqsQZ9HTC63kYPvFTwt2sYPFer0q8aVDH+Cg6kUI7aecK1liharH
En1rjceZ0HovqmcO7ryQcIz+qM57yEgGQ3TOOkgou5wUIzjE/mTi4zFleUpiUV4QQsbSok+MDQm+
KR/SpsX6p3BRzrumvVFG6E15NzUxYWMDTqWMGTwHcW7g+1U8i17onP5Fig9QSwMEFAACAAgAR2B2
R+Zyo6rDAAAAJAMAACwAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJy
LnR4dFVUCQADRh9SVkYfUlZ1eAsAAQT1AQAABBQAAADtkbFqAzEMhufkKTS2SzgfBwFTMuQypNBm
Kx1KBp2tOCauFGxdS9++bumWrUe2jAL934f07+QD2hZMa5vWmg7osxjTLZI4TJDVZTpL1sjhrTPN
crmHhw0NY1hZKKTPVAoGepIQ6sa6hk4WajCRn+/+D1bM2gsfYhgzahR+jXrs5f2c6GfaIvtE2UKP
7kgeGiDGoTphQHci9mWKnPSlUH7kg2yiU3vBtnA3n91PMrD/e9zvXagUJH9VLo8pTSPfGrlGI99Q
SwMEFAACAAgASGB2R8t1B9vlAAAAxgMAAC8AHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXkt
cHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADRx9SVkcfUlZ1eAsAAQT1AQAABBQAAADVkUFLA0EMhc/2
V+RoL7KzrBQG8eD2YEGLIKIgHrKz6XToNCkz2Yr/3lnx5knXgx4T8r68vKzlCHUNprZVbU0D9JqN
ac6iOIyQ1CU6SNLA/rkx1WLxAhdL6gZ/aSET97eUM3p6DLptUclLerNwykOM89n6x+TAQUfkfaEH
4RVvxMLTXQtOmMlp6ZWZI8bQT9jy//3rp/0b8b5MXBXRzkIRRpoEVkzaCm+CHxKObj/ykf0h0lhd
I/eRkoUW3ZZ6qIAYu7ITOnS7kmqedtVDpjRmtgxO7Rd2+c/sZP4n//498vkvkt8BUEsDBBQAAgAI
AElgdkdylSq/gwAAAMAAAAA9ABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLWJl
Zm9yZS1tZXRhLWRhdGEtc3RkZXJyLnR4dFVUCQADSh9SVkofUlZ1eAsAAQT1AQAABBQAAACdzLEK
wjAQgOG9T3GjLtKESiGIS10cLIKDgjjE9IwH4U6Sa8W3t76C68/P18sE1oKxrrbOrAHfxZhmlST4
BFlDxpdkJY7XxtRte4PNDu9j3DooyMMBS/ERz6TPzitGyR8HCx5TWlb93zIx6Y88zToJ7/khDi7H
DoIwY9C5zc/kEw3VF1BLAwQUAAIACABKYHZHRWj2PrwAAACSAQAAKwAcAGh0dHAvdGVzdHMvbWVk
aWEvdmlkZW8tcXVlcnktdXJsLXN0ZGVyci50eHRVVAkAA0sfUlZLH1JWdXgLAAEE9QEAAAQUAAAA
pZAxbwIxDIVn7ld4hAVdTkioEWLgGIrUslUdKgZfYkJEaqPE16r/vmnFxgbjk/y+T357+YKuA9PZ
trPmCei7GLOYJ3GYIKvLdJGskcPHwrTL5QFWWxrGsLZQSF+pFAz0IiHUi00tnS3UYiLf7O8HK2bt
hY8xjBk1Cr9HPfXyeUn0l56RfaJsoUd3Ig8tEONQnTCgOxP78oic9K1Q3vFRttGpvWFbmDaT2UMG
9tfh/v9CpSD5p3J5TGnW/AJQSwMEFAACAAgASmB2R+YGWmFBAQAAwQUAACoAHABodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAkAA0wfUlZMH1JWdXgLAAEE9QEAAAQU
AAAA1ZNNSwMxEIbP9lfM0R4s2aW1GqRgtwcFLaVFFIqH7O4kGxqTkmTrx693tujF23b9wLklTJ53
Pt7M3Q7SFJKUs5Qn54DPIUmGA+MKYcDHwuPW+aitWg8TNh4/wsUM81pNOAS05S2GIBTe61hlIqJy
/pXDsa2N6ffmB5O11bFBroiunb220nF4WGRQOGuxiHRHOTthdNlbf/IHo7RhUEC2vJyuYEIB0tSh
WlClpLNEgyLgCiOHNXsZS8lOZT46S1L2CFOqawMMKhHAOnvyht6BR0matY2QdGgnYPyY041TijL2
WhzoocGyCzgKHzNnpVa1F81Y9otwT1uDzelK2NKg55CJosKSukMrctKEXBQbGkro1tVdQN8sZ6YL
GulXNhmhd9TvpPBTBvuP5Daf4ne8mrI/9Go78UO82lKhxd6/lfwOUEsDBBQAAgAIAEpgdkdbnwSM
3AAAAFICAAArABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby11c2VyYWdlbnQtc3RkZXJyLnR4dFVU
CQADTB9SVkwfUlZ1eAsAAQT1AQAABBQAAAClkUFLA0EMhc/2V+RoL7I7FAqDeHB7UNAiiCiIh+xs
Oh06JmUmW/HfmxVvggf3mJD3veRlKydwDlrnG+ddA/RR23Z1kSVghqKh0FGKJo6vq7ZZr9/gckP9
GK88VOLhnmrFSM9J9x0qRSmfHs55zHm52P6bnDjphHw0ehK+5Z14eHnoIAgzBbWezZwwp2GGSyX9
Wf9OYrSJaxMdPJgw0yywYtFOeJfiWHDa9jsfeT9mmqob5CFT8dBh2NMAxmbszRN6DAdLtc676qlS
mTLbpKD+F9v+szhbznL4++9fUEsDBAoAAAAAAGtgdkcAAAAAAAAAAAAAAAAQABwAaHR0cC90ZXN0
cy9taXNjL1VUCQADih9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAS2B2R21OVGDqAAAA
ZgEAAC0AHABodHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRVVAkA
A04fUlZOH1JWdXgLAAEE9QEAAAQUAAAAdY1NS8NAEIbv/RVzKomUTCIUZSkB0eaiaEmkOW82k3Ql
yYTdieC/NzUVRZA5vR/PvPs8f8kVZNp2VIMwaGdO9p3AT5Ujz5MzBA07OImMCjG5voni+RJ1G8cx
9tYb/O55NNyP2vvobWxXeORu6mfzQYvGfVlgSdWjFSy+ymd1z46wY12Tw8sumgafqNXmY87vFi8y
4xhst0kICrxosQYO80pOzUHc7vJHqb9YCv9GShlHWigwPHiB8jVTqhBnhxbWmx8sc7onuNrAUjuS
Ef41+Mz1nKZnxEutVDMNRiwPu4q5g2Ch12Earj4BUEsDBBQAAgAIAExgdkekA8TzwgAAAP4AAAA/
ABwAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1z
dGRlcnIudHh0VVQJAANPH1JWTx9SVnV4CwABBPUBAAAEFAAAAE2OQUvDQBSE7/0Vc1RoZXe1URbx
0thTKKXqqZSyJK/1YbIbXl4q+uu7BYUOzGHgg/mcsfOZtTPnYJ03zrv7u8I4lGPXbyg2JO9CtH2w
pnj0zhRm/rTDWlJPoj9oeVBwPIWWGxySXNoF9bDG4Ka/xgbUIcakqFPUwBGrj6q6nWyvX3d4zsGy
XKz3FXes1OAlB0s+/u2Sh69FqD8pO5w46+3fSP99PF5FssW3sHI8Io357gLjwC1NoTLGOihBE35J
0uQMUEsDBBQAAgAIAExgdkcv6ssvwwAAAP4AAABbABwAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1m
cmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92YWwt
c3RkZXJyLnR4dFVUCQADTx9SVk8fUlZ1eAsAAQT1AQAABBQAAABNjk1LA0EQRO/5FXVUMDIz+VAG
8ZI1pyWEqKcQwrDbiY27M0tvb4L++kxAIQV1KHhQzxk7G1s7dg7WeeO8mzxO8yiGtttQrEk+hGg7
tWb+5J2Zm9nzDmtJHYn+oOFewfEUGq5xSHJtG9TDGoO77hbrUYUYk6JKUQNHrD7L8n60vXmd7PCS
g2WxWO9LblmpxmsOlnz82wX334tQfVF2OHHW27+T/vt4vIlki7OwcjwiDfnuCuPADT1AZYhVUIIm
/JKk0QVQSwMEFAACAAgAa2B2RxU1NZJ6AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1i
YWQtaW1wb3J0LXN0ZGVyci50eHRVVAkAA4ofUlaKH1JWdXgLAAEE9QEAAAQUAAAAjY5BDsMgDATv
eYU/QCDtoRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9
e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9Q
SwMECgAAAAAAXGB2RwAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQADbx9S
VuUgUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAARGB2RwAAAAAAAAAAAAAAAB8AHABodHRwL3Rl
c3RzL3NlY3VyaXR5LzQwMS1sb2dvdXQvVVQJAAM/H1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACABEYHZHJ5ad3IkAAACAAQAANAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvNDAxLWxvZ291dC80
MDEtbG9nb3V0LXN0ZGVyci50eHRVVAkAAz8fUlY/H1JWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0
sjIAIjOF1PJiQ0MTvZz85MQchaKS5KLUgvyiksy89GgTQwNLo1gFG5fUpNJ0OyuF4tS8FN/U4uLE
9NTwzJIM58SS1PT8okorBY280pwcTS4/sk3OzMssARkZDDQ9Mz/PMy8t30ohIsBZITk/Ly81uQQo
BlRTlpiTmUKBLYPD/QBQSwMECgAAAAAAUGB2RwAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkAA1cfUlblIFJWdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAAEZgdkcAAAAAAAAAAAAAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL1VUCQADRB9SVuUgUlZ1eAsAAQT1AQAA
BBQAAABQSwMEFAACAAgARWB2R01KkD/WAAAA+AEAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJy
LnR4dFVUCQADQR9SVkEfUlZ1eAsAAQT1AQAABBQAAAClkDFLBEEMhWv3V6TURnaXa24QC/cKBT0E
EQWxyM7k5oYbk2Mme+K/Nyt2di6kCbz3Pd7bygn6HrretXZroM/adavLLB4zFPWFjlI0cXxbde26
f4erDY1TvHZQSR+oVox0LzGa4sZMBwdmzBSa7f/BikUH4V2KU0FNwi9J94N8HDPN3y1yyFQcDOj3
FKAFYhwtE0b0B+JQl4STPlcqd7yTTfLq/rAdnDdnF4sSOPwO99MLlaKUL+PylPMScuKkM/LJ6LbT
3MHB6+MAXpjJz9uZ5oQ5heYbUEsDBBQAAgAIAEZgdkfDtuxqugAAAJIBAABTABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93
LXZpZGVvLXN0ZGVyci50eHRVVAkAA0MfUlZDH1JWdXgLAAEE9QEAAAQUAAAApZAxbwIxDIVn7ld4
LAu6RCyNEAPHQKWWrWKoOvgSEyJSGyW+Vv33pFW3bjA+ye/75LeXT7AWjHW9dcYAfVVjlossHjMU
9YUuUjRxfFua/tG+w2pL4xTXDirpC9WKkZ4lxnaxaaWzg1bMFLr97WDFooPwMcWpoCbhQ9LTIB+X
TD9phxwyFQcD+hMF6IEYx+aEEf2ZONR75KSvlcoTH2WbvLp/bAcP3Wx+l4HD33C/f6FSlPLduDzl
PO+uUEsDBBQAAgAIAEZgdkfXsHXZggAAAMAAAABrABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2RlZmF1bHQtc3JjLW9iamVjdC1k
YXRhLXVybC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA0QfUlZEH1JWdXgLAAEE9QEAAAQUAAAAncyx
CsIwEIDhvU9xoy7SC10M4lIXB4vgoCAOMT1jINxJcq349sZXcP35+QaZwRhAY1tjEYHeBbFbJfEu
QVaf6SVZI4drh+3a3GCzo/sUthYK8XigUlygc9Rn75SC5I+FBU8pLZvhbzly1B95qnoU3vNDLFyO
PXhhJq+11Wd2KY7NF1BLAwQUAAIACABQYHZHY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA1cf
UlZXH1JWdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG
2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwq
aCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACABQYHZHY6qsbIIA
AACoAAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11
bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAA1cfUlZXH1JWdXgLAAEE9QEA
AAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ
4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNt
XCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACABLYHZHbD/afbYAAADcAQAAOgAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkA
A04fUlZOH1JWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhARehOdFxFh88+53TIpdMnI
WsW3dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aMsYFkDsQBDAGKsKQjdWEf
G+zU1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlksVylosMwePiWtv0LrFqVm
aY4t0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAACAAgATmB2RxIa2gHKAAAA
3QEAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90
ZS1zdGRlcnIudHh0VVQJAANTH1JWUx9SVnV4CwABBPUBAAAEFAAAAKWQsU4DMRBEa+4rtkya09mK
FGEhilwKIkE6RBFR7Nkbx4rZjWxfEH+PL9BRoSt3pHmzM3u5gtagtOm00Wugz6zUqo1iMUIqNtFF
UgnsDyuluvt3eNjxUR4NRPG+ypALppLbtm32/0ZtaRh9ZWUqL5Qzenr+oW6q6WygGiO5OeDpuV74
GPyYsATht1BOvXxcIk3XE7KLlAz0aE/koANiHGomDGjPxC7Pa/WaKU17bYMt5g/bwKK5W85KYPc7
3K0XFvKSviqXxxiXzTdQSwMEFAACAAgATmB2RxrvxlKDAAAAwAAAADoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAANUH1JWVB9S
VnV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0oQOGsSlLg4WwUFBHGJ6pgfhTpJrxbe3voLr
z8/XyQTWgrGuts6uAd/FmGaVJPgEWUPGl2QljrfGmHpzh+0eH2PcOSjI/RFL8REvpEPrFaPkj4MF
jyktq+5vmZj0R55nnYQP/BQH11MLQZgx6NzmZ/KJ+uoLUEsDBAoAAAAAAEdgdkcAAAAAAAAAAAAA
AAAhABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvVVQJAANGH1JW5SBSVnV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACABHYHZHwHXWePcAAACJBAAATgAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJy
LnR4dFVUCQADRh9SVkYfUlZ1eAsAAQT1AQAABBQAAADNkcFKBDEMhs/OU+Sol2E7FoQiHpw9KOgi
iCiIh06b7Zat6dJmVnx7W/XmSYZxPaYkX5r/W8U9dB2ITi06JU4B37IQsg3R6ACJTcJdTOzJPUux
OBMvcH5N63ihIETnyjNk1olz27bN6teoJQ6jK6yMfIs5a4c3X9TLMrRVUAYD2ing+rk+0tq7MWn2
kR49b/r4ugtYqytNNmBS0GuzQQsLQNJD2QmDNlskm6dd9ZAx1byW3rD6wVZw3BydTNpA9ju4z7s0
o4vpvXBpDOHvyHIu1/KQruXsruU/MTIX2ZPnirwv9GKgpqPg6a4HE4nQVCulZ6+Dt80HUEsDBBQA
AgAIAEdgdkeatVDxggAAAMAAAABCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
aW5zZWN1cmUtY3NzLWluLWlmcmFtZS1zdGRlcnIudHh0VVQJAANGH1JWRh9SVnV4CwABBPUBAAAE
FAAAAJ3MsQrCMBCA4b1PcaMu0oSAEMSlLg4WwUFBHGJ6xoNwJ8m14ttbX8H15+frZQJrwVjfWm8c
4Lsa41ZZYshQNBZ8SVHidHWmXZsbbHZ4H9PWQ0UeDlhrSHgmfXZBMUn5eFjwmPOy6f+WiUl/5GnW
SXjPD/FwOXYQhRmjzm1+ppBpaL5QSwMEFAACAAgAVmB2R8EWXJ+0AAAAJwEAAD8AHABodHRwL3Rl
c3RzL3NlY3VyaXR5L3ZpZGVvLXBvc3Rlci1jcm9zcy1vcmlnaW4tY3Jhc2gyLXN0ZGVyci50eHRV
VAkAA2QfUlZkH1JWdXgLAAEE9QEAAAQUAAAAlY69DoJAEIR7n2JLLYQDLhGvIxJDYWEIVsQCYZGL
cOD9mPj2rsFYmphtZjIz2a8MQsFCwbm35dEZsqI45nh3aCy08ppZO31sKpsca5QPzNFMozK4q/r+
UtU3AXoOGuioT27OgTMOS9R61LAOwm0Ur6Al/S4J3w/CjcfoAhEzxnyDtdPSPn01KjSu7rxh4ovy
Nx7Z1A3TXqqqP+WHRBHjMFpMmoYojIBqFvB9RjPqgtP9XxwvUEsDBBQAAgAIAFxgdkdgS2YQkQAA
APsBAABFABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1
cml0eU9yaWdpbi1zdGRlcnIudHh0VVQJAANvH1JWbx9SVnV4CwABBPUBAAAEFAAAAO2OMQ6DMAxF
d07hC4QEllaZYejSngEFUyKZJLKdCm5fOvQGHau/vq/3Qt5KpEljToDMmT0skRBW1eKt7fpL6851
/uqcs4KhctTD7iJmGO+3cTC7kJlzqBsmNV/gwfEZU7tvBBQTQg9I+CFA9CCUFVGb8+lfyHK6PeRE
B3StgwUnrYwCEyNILSWz4tyEf+iPQ99QSwMECgAAAAAASGB2RwAAAAAAAAAAAAAAABMAHABodHRw
L3Rlc3RzL3N0b3JhZ2UvVVQJAANIH1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABIYHZH
qw9xHrAAAADuAAAARQAcAGh0dHAvdGVzdHMvc3RvcmFnZS9jYWxsYmFja3MtYXJlLWNhbGxlZC1p
bi1jb3JyZWN0LWNvbnRleHQtc3RkZXJyLnR4dFVUCQADSB9SVkgfUlZ1eAsAAQT1AQAABBQAAABl
zkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBAC
JmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRP
tPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO
83j2BlBLAwQKAAAAAABVYHZHAAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvVVQJAANiH1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABVYHZHfn/tF7EAAAABAQAA
QQAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcG9zdC1ibG9iLWNvbnRlbnQtdHlwZS1hc3lu
Yy1zdGRlcnIudHh0VVQJAANiH1JWYh9SVnV4CwABBPUBAAAEFAAAAGWNsQrCQBBE+3zFVqKgHjaC
B1YmglgoiZhCLC7JKoe522OzUfx7DQRULGd4My9J012qYePvprYVrMgLepkcngHHYPs2GDYOBRne
ucVppI5Utw4bFRsxKskzlWOxtaIyarnELq2IUYXayIXYKY/yIL6pveEGq97SSaZlCMPZYj4CDQVR
Df1U69ChX+SwJN8I5Ie11pmw9VcYjCHFEu0duSNgMILTT7H83MWtc88//Tl6AVBLAwQUAAIACABV
YHZHfn/tF7EAAAABAQAAQAAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcG9zdC1ibG9iLWNv
bnRlbnQtdHlwZS1zeW5jLXN0ZGVyci50eHRVVAkAA2IfUlZiH1JWdXgLAAEE9QEAAAQUAAAAZY2x
CsJAEET7fMVWoqAeNoIHViaCWCiJmEIsLskqh7nbY7NR/HsNBFQsZ3gzL0nTXaph4++mthWsyAt6
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
AANNH1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABLYHZH1c7HvIMAAADAAAAAPwAcAGll
dGVzdGNlbnRlci9jc3MzL2ZsZXhib3gvZmxleGJveC1hbGlnbi1iYXNlbGluZS0wMDEtc3RkZXJy
LnR4dFVUCQADTR9SVk0fUlZ1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLpKEQiGIS10cLIKD
gjjE9EwPwp0kacW3N76C68/PN8gCxoA2VhlrFOA7a91uongXIRWf8CWpEIdbq1XX3WG7x8ccdhYy
8njEnF3AC5WpdwWDpI+FFc8xrpvhb5mYyo88V52ED/wUC9dTD16Y0Zfa6rO4SGPzBVBLAwQKAAAA
AABlYHZHAAAAAAAAAAAAAAAACQAcAGltcG9ydGVkL1VUCQADfR9SVuUgUlZ1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAAZWB2RwAAAAAAAAAAAAAAAA0AHABpbXBvcnRlZC93M2MvVVQJAAN9H1JW5SBS
VnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABlYHZHAAAAAAAAAAAAAAAAIAAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvVVQJAAN9H1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAA
AABlYHZHAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9VVAkAA30fUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGVgdkcAAAAAAAAAAAAAAAAv
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAkAA30f
UlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGZgdkcAAAAAAAAAAAAAAABAABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L1VUCQADgB9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAgGB2RwAAAAAAAAAAAAAAAE8A
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAOwH1JW5SBSVnV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACABlYHZHUh9h9dUAAADXBAAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5LXN0ZGVyci50eHRVVAkAA30fUlZ9H1JWdXgLAAEE9QEAAAQUAAAA7ZExbwIxDIVn+BUeYTld
DpZGiKHHQKXCVnWoGHw5EyLSGCU+EP++ubYbE0JIRepoS+/ze35rPkJVgap0OdHlE9ApKTUtPBv0
EMVEOnAUF+zHVKlSbWD2ErY81+DZ2ryGJBglFUUxXF+NWlDT2cxKJCtKCS29/lCfs2ivIQs9tbeA
e3M1h62zXURxHN6d7Gr+PHjqpyWG1lPUUKPZUQslUMAm34QGzZ5Cm/5kKpK3RLEvYuGM6AvTGkbD
wfiB/3bveJnyW813LhSyHM+ZGzrv/8mPT/4CUEsDBBQAAgAIAGZgdkcqsT/L8QAAAGQFAAByABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQJAAN/H1JWfx9SVnV4CwABBPUBAAAEFAAAAO2TwUoDMRCGz/Yp5mgvsll7MYgHtwcLWgQRBfEw
m52moelMSbIV395Z8SKeaqkieEyY+ebPF2YuW6hrMLWtTm11BvSSjZmcRHEYIRWXaCOpBPZPE2Mq
8wznU2p7f2EhE3c3lDN6eghl2WAhL+nVwjH3MY5H82+TA4cyIO+UHoRnvBALj7cNOGEmV/ROa7YY
Q/d5iqkOlX8n8k/lLx/xr8V7rbjUppUFbYy0F7hgKo3wIvg+4ZD23Y+sN5GG0xVyFylZaNAtqQNl
M7Y6E1p0K7Wa93vVfaY0OJsGV+wXtv7P6Gj87+0XvB1qX/4ieZcdfwNQSwMEFAACAAgAZmB2R+sB
rKryAAAADAYAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2gt
c3RkZXJyLnR4dFVUCQADgB9SVoAfUlZ1eAsAAQT1AQAABBQAAADtlLFOAzEMQGf6FR5hQZfQKUIM
XAeQoEJCCCTE4ObcNGqwq8RXxN+TQ0wwlQPB0DGR/Ww/K5nLFqwFY11z4owBeinGTI+TeEyQ1Wfa
SNbI4XFqTGOe4HRGiz6cOSjE3TWVgoHuo65aVAqSXx0ccp/S0WT+bXLkqAPyttKj8CUvxcHDTQte
mMlrvasxW0yxG1GlkH60fyUh1IjzmrR2UBMTjQIrZm2FlzH0GYdu3/3I8ybRcLpA7hJlBy36FXXQ
ADEuak1YoF9Xq2XcVHeF8uBsFr26L+y6n8nB5+3Y3/Jm/9Kb/Wfednkve/Ke/BPkXf7SN1BLAwQU
AAIACABnYHZHzQAqduoAAACkBAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA4IfUlaCH1JWdXgLAAEE9QEAAAQU
AAAA7ZPBSgMxEIbP9inm2F5ks+0piAe3BwUtgoiCeJjNTtPQdKYksxXf3qx40tPagyA9Jsx88+cL
s5ID1DWY2lZza2qgt2zM4jyKwwhJXaK9JA3sXxbGVOYVLpbU9v7SQibu7ihn9PQUdNOgkpf0bmHK
fYyzyerX5MBBB+RDoQfhG16Lhef7Bpwwk9NyV2oOGEP3bcp8VH79in8r3peKq9K0tVAaIx0FVkza
CK+D7xMOaT/9yG4faThdI3eRkoUG3YY6qIAY2zITWnTbYjUf96rHTGlwtgxO7Q92+Z/J2ezk7Q+8
jdmX/04es+MfUEsDBBQAAgAIAGhgdkeib69i6QAAAKQEAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAODH1JWgx9SVnV4
CwABBPUBAAAEFAAAAO2TsU4DMQxAZ/oVHtsFXY5jiRAD14FKUCEhBBJi8OXcNGqwq8RXxN+TQ2xM
cLAgRlv2s/Mir+UAdQ2mttWJNQ3QSzamOY7iMEJSl2gvSQP7x8aYyjzB2ZK6wZ9byMT9NeWMnu6D
bltU8pJeLcx5iHExW3+bHDjoiLwt9CC84o1YeLhpwQkzOS25UnPAGPoJUzLpx/pX4n2puChNOwul
MdIksGLSVngT/JBw3PbdjzzvI43RJXIfKVlo0W2phwqIsSszoUO3K1bztFfdZUqjs2Vwaj+xy//M
jhb/3n7E2+mv3ctfJ3/lxt8AUEsDBBQAAgAIAGlgdkcp8t0p6wAAAKQEAABuABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA4UfUlaFH1JW
dXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC+yWauHIB7cHixoEUQUxMNsdpqGpjMlma349mbF
k57WHgTxmDDzzZ8vzFL2UNdgaludWnMG9JqNmZ1EcRghqUu0k6SB/fPMmMq8wMWc2t5fWsjE3S3l
jJ4eg64bVPKS3iwccx/jdLL8MTlw0AF5X+hBeMErsfB014ATZnJa7krNHmPovkw5H5VfP+PfiPel
4qo0bSyUxkgHgRWTNsKr4PuEQ9oPP7LdRRpO18hdpGShQbemDiogxrbMhBbdpljNh73qIVManM2D
U/uNXf5ncjT99/YL3sbsy18nj9nxd1BLAwQUAAIACABpYHZHf3F9qesAAACkBAAAeQAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50
eHRVVAkAA4YfUlaGH1JWdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC+yWQtKEA9uDxa0CCIK
4mE2O01D05mSzFZ8e7PiSU9rD4J4TJj55s8XZil7qGswta1OrTkDes3GzE6iOIyQ1CXaSdLA/nlm
TGVe4GJObe8vLWTi7pZyRk+PQdcNKnlJbxaOuY9xOln+mBw46IC8L/QgvOCVWHi6a8AJMzktd6Vm
jzF0X6acj8qvn/FvxPtScVWaNhZKY6SDwIpJG+FV8H3CIe2HH9nuIg2na+QuUrLQoFtTBxUQY1tm
QotuU6zmw171kCkNzubBqf3GLv8zOZr+e/sFb2P25a+Tx+z4O1BLAwQUAAIACABqYHZHW4EUZesA
AACkBAAAaQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4
dFVUCQADiB9SVogfUlZ1eAsAAQT1AQAABBQAAADtk8FKAzEQhs/2KeZoL7JZe9AgHtweLGgRRBTE
w2x2moamMyWZrfj2ZsWTntYeBPGYMPPNny/MUvZQ12BqW51acwb0mo2ZnURxGCGpS7STpIH988yY
yrzAxZza3l9ayMTdLeWMnh6DrhtU8pLeLBxzH+N0svwxOXDQAXlf6EF4wSux8HTXgBNmclruSs0e
Y+i+TDkflV8/49+I96XiqjRtLJTGSAeBFZM2wqvg+4RD2g8/st1FGk7XyF2kZKFBt6YOKiDGtsyE
Ft2mWM2HveohUxqczYNT+41d/mdyNP339gvexuzLXyeP2fF3UEsDBBQAAgAIAGtgdkdrA4bt7gAA
AKQEAAB0ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAkAA4kfUlaJH1JWdXgLAAEE9QEAAAQUAAAA7ZOxTgMxDIZn+hQe2wVdjk4R
YuA6gAQVEkIgIYZczk2jpnaV+Ip4e3yICaZyqsTQMZb9+fdvZ8l7qGswta0ubF0Bvhdj5ueJvUuQ
xWfccZZI4XVuTGXe4HKBbR+uLBSk7h5LcQGfo6wbJxg4f1iYUp/SbLL8MzlSlAH5qPTIdEsrtvDy
0IBnIvSiMc3ZuxS7H13MQfrlW/4dh6AZ11q0saCFCUeBxWVpmFYx9NkNar/84e0u4fC6cdQlzBYa
59fYgVpDrtWe0Dq/UVfLuKmeCubBs0X0Yn+xdT+Ts9nJt1HX/N82cjztxyIf8sc/AVBLAwQUAAIA
CABsYHZHzxRcrvIAAABmBgAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9j
YW5wbGF5X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA4sfUlaLH1JWdXgLAAEE9QEAAAQU
AAAA7ZRNSwMxEIbP9lfM0V5ks+0piAe3BwUtgoiCeJjNTtPQOFOS2Yr/3qx40lM/wMseE2aeefOE
ZCk7qGswta1mtjZAH9mY+UUUhxGSukRbSRrYv86NqcwbXC6o7f2VhUzc3VPO6Ok56LpBJS/p08I5
9zFOJ8uDyYGDDsjHQg/Ct7wSCy8PDThhJqdlr9TsMIbu15R6r/z6E/9OvC8V16VpY6E0RjoKrJi0
EV4F3ycc0n77kfdtpGF1g9xFShYadGvqoAJibMtMaNFtitV83KmeMqXB2SI4tX/Y5X4mZ9PR2z94
2+e9jOSRfAry4X/p7IT5vwBQSwMEFAACAAgAbWB2RzBUx9fxAAAAZgYAAHUAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAkAA40f
UlaNH1JWdXgLAAEE9QEAAAQUAAAA7ZSxTgMxDIZn+hQe6YIu12OJEEOvQ5FoVQkhkBCDL+emUYNT
Jb4i3p4cYoKJckOHGx3Zn3/7V7wORyhLUKUuZrqcAb0npaorHwx6iGIiHUIUx/alUqpQr3CzoKaz
txoScbuilNDSk5NdjUI2xA8Nl9x5P52sTyY7dtIjHzLdBb7jbdDwvKnBBGYykt9yzhG9a390qf6k
X77l3wdrc8Y8F+015EJP5wkWjFIH3jrbRezX8LX48Hbw1EdL5NZT1FCj2VELBRBjk3tCg2af7Ur/
m+oxUezNWDgj+hc7Gz+5mI7jDfNfRvJIHoJ8+i29HlD/J1BLAwQUAAIACABuYHZHb+YBevEAAABm
BgAAfwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9sb2FkZWRtZXRhZGF0YV9s
b2FkZWRkYXRhLXN0ZGVyci50eHRVVAkAA48fUlaPH1JWdXgLAAEE9QEAAAQUAAAA7ZTBSgQxDIbP
7lPk6F5kOq4einhw9qCgiyCiIB4ynWy3bE2WNrPi29sRTwqCuoiHOaYkX/7kp1nIFuoaTG2rQ1sf
AT1nY2YHURxGSOoSbSRpYP8wM6Yyj3Ayp7b3pxYycXdFOaOnu6CrBpW8pBcL+9zHOJ0sfkwOHHRA
3hR6EL7gpVi4v27ACTM5LW8lZ4sxdB+6HH9Lv77LvxTvS8ZZKVpbKIWR/idYMWkjvAy+Tzis4W3x
8rSJNETnyF2kZKFBt6IOKiDGtvSEFt262JV/N9VtpjSYMQ9O7Sd2MX6yNx3H281/GckjeRfkv7ql
X+t/BVBLAwQUAAIACABuYHZHdroQdO0AAAAMBgAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9vcmRlcl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADkB9SVpAfUlZ1eAsA
AQT1AQAABBQAAADtlE1LA0EMhs/2V+RoL7KzFpRBPLg9KGgRRBTEQ3Y2nQ4dkzKTrfjvnRVPeqr2
0MMeE5InHy/JQrZQ12BqW53a+gzoPRszO4niMEJSl2gjSQP7l5kxlXmFizm1vb+0kIm7O8oZPT0F
XTWo5CV9WDjmPsbpZPFncuCgA/Kh0IPwDS/FwvN9A06YyWnxlZgtxtD9qHK+U//63f6teF8irkrS
2kJJjHSYYMWkjfAy+D7hsIavxcvbJtJgXSN3kZKFBt2KOqiAGNtSE1p06yJX/t9Uj5nSIMY8OLW/
2EX4ydF0HG8/9zKSR/I+yLv80k9QSwMEFAACAAgAb2B2R6mhLvz0AAAADAYAAGUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUCQADkh9SVpIfUlZ1eAsAAQT1
AQAABBQAAADtlEFLAzEQhc/2V8zRXmSz7cUgHtweFLQIIgriYTY7TUPjTElmK/57syJePOlS6KHH
hJnvvbwHWcoO6hpMbauZrc+B3rMx87MoDiMkdYm2kjSwf5kbU5lXuFhQ2/tLC5m4u6Oc0dNT0HWD
Sl7Sh4VT7mOcTpb/JgcOOiAfCj0I3/BKLDzfN+CEmZyWuzKzwxi6ESqZ9Nv+rXhfJq7K0sZCWYw0
CqyYtBFeBd8nHNx+5SNv20jD6Rq5i5QsNOjW1EEFxNgWTWjRbUqqedyrHjOlIbNFcGp/sUs/k5Pp
KIV99b6/RvZn+dj1D3lWHckHR/7LX/oJUEsDBBQAAgAIAHBgdkfOW9Np6AAAAKQEAABwABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD
lB9SVpQfUlZ1eAsAAQT1AQAABBQAAADtk8FKA0EMQM/2K3K0F9nZ9jSIB7cHBVsKRRTEQ3Y2nQ4d
kzKTbfHvnRVvnnQRETwmJC+ZN2QlR6hrMLWtZnZmgE7ZmPlFFIcRkrpEB0ka2D/NjanMM1wuqO39
lYVM3C0pZ/T0EHTXoJKX9GrhnPsYp5PVt8mBgw7ITaEH4VveioXHdQNOmMlpyZWaI8bQjZiSST/W
vxPvS8V1adpbKI2RRoEVkzbC2+D7hMO2737k5RBpiG6Qu0jJQoNuRx1UQIxtmQktun2xmse96j5T
GpwtglP7iV3+Z3I2/ff2C95+6l7+IvkrN/4GUEsDBBQAAgAIAHFgdkerXpq69QAAAGYGAABkABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUCQADlR9SVpUfUlZ1
eAsAAQT1AQAABBQAAADtlE1LA0EMhs/2V+RoL7Kz29MgHtweFLQIIgriIZ1Np0PHpMxkK/57Z8WT
glA/ikKPGZInb94wmckG6hpMbavGNjXQUzZmchTFYYSkLtFakgb29xNjKvMAx1Oa9/7EQibuLiln
9HQbdNmikpf0bOGQ+xjHo9mXyYGDDsjrQg/C57wQC3dXLThhJqflreRsMIbuXZdmK/36Jv9CvC8Z
p6VoZaEURvoWWDFpK7wIvk84qH31Rx7XkYboDLmLlCy06JbUQQXEOC89YY5uVVzNf3Iq0ptMaVjG
NDi1H0SXxY8Oxv/Yt98eb6v/sifvyT9B3tUt/Vz/C1BLAwQUAAIACAByYHZHkpn98+sAAACkBAAA
bwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4
dFVUCQADlx9SVpcfUlZ1eAsAAQT1AQAABBQAAADtk7FOAzEMQGf6FR7pgi7XY4kQA9cBJKiQEAIJ
Mfhybho12FXiK+LvySE2pnJCMDDasp+dF3kle6hrMLWtFnbRAL1mY5qTKA4jJHWJdpI0sH9qjKnM
M5wtqRv8uYVM3N9QzujpIeimRSUv6c3CMQ8xzmerb5MDBx2Rd4UehK94LRYeb1twwkxOS67U7DGG
fsKUTPq5/rV4XyouStPWQmmMNAmsmLQVXgc/JBy3/fAjL7tIY3SJ3EdKFlp0G+qhAmLsykzo0G2L
1TztVfeZ0uhsGZzaL+zyP7Oj+b+3X/D2U/dyGPn0T5APufF3UEsDBBQAAgAIAHJgdkca6e487QAA
AAwGAABnABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVU
CQADmB9SVpgfUlZ1eAsAAQT1AQAABBQAAADtlD1PAzEMhmf6KzzSBV2uhSFCDFwHkKBCQggkxODL
uWnUYFeJr4h/Tw4xwVTowHCjLfvxxyt7KTuoazC1rWZ2dgr0lo2Zn0RxGCGpS7SVpIH989yYyrzA
+YLa3l9YyMTdLeWMnh6DrhtU8pLeLRxzH+N0svw1OXDQAXlf6EH4mldi4emuASfM5LT4SswOY+i+
VTnbq3/9av9GvC8RlyVpY6EkRvqfYMWkjfAq+D7hsIbPxcvrNtJgXSF3kZKFBt2aOqiAGNtSE1p0
myJX/ttUD5nSIMYiOLU/2EX4ydF0HO8w9zKSR/IhyPv80g9QSwMEFAACAAgAc2B2R+1X+33xAAAA
ZgYAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0
ZGVyci50eHRVVAkAA5ofUlaaH1JWdXgLAAEE9QEAAAQUAAAA7ZTBSgMxEIbP9inmaC+y2RaUIB7c
HhS0CCIK4mGanaahcaYksxXf3qx487arCNJjwsw3f76QLGUPdQ2mttXMzk6B3rIx85MoDiMkdYl2
kjSwf54bU5kXOF/QqvMXFjJxe0s5o6fHoJsGlbykdwvH3MU4nSwHkwMH7ZH3hR6Er3ktFp7uGnDC
TE7LXqnZYwztiCmZ9Cv+jXhfKi5L09ZCaYw0CqyYtBFeB98l7NN++pHXXaR+dYXcRkoWGnQbaqEC
YlyVmbBCty1W87hTPWRKvbNFcGq/scv9TI6mB29/4O233sv/J58dyAPJw//Sn8z/AVBLAwQUAAIA
CAB0YHZH4VB6bfQAAAAMBgAAaAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVz
cy1zdGRlcnIudHh0VVQJAAOcH1JWnB9SVnV4CwABBPUBAAAEFAAAAO2UQUsDMRCFz/ZXzNFeZLPt
QYN4cHtQsKUgolA8ZLPTNDTOlGS24r83K57saV0sCD0mzHzv5T3IgvdQlqBKXUz05BLwPSk1vQhs
TYAoNuKOo3hyq6lShXqF6xnWrbvRkJCaOaZkHD572VRG0HH80HBObQjj0eLXZE9eOuRjpnume1qz
hpdlBZaJ0Eq+yzN7E3zzQ+Wql3/5tv/AzuWJ27y01ZAXAw4Ci4lSMa29a6Pp3H7lw2+7gN3pzlAT
MGqojN1gAwUgmTprQm3sNqeahr3qKWHsMpt5K/qAnfsZnY0HKfTp/dTIn+b1j7s+kY9B7vOXfgJQ
SwMEFAACAAgAdWB2R6RT48nqAAAApAQAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cHJvZ3Jlc3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAOdH1JWnR9SVnV4CwABBPUBAAAEFAAA
AO2TwUoDMRCGz/Yp5theZLPuKYgHtwcLWgQRBfEwm52moXGmJLMV396seNLT2oMgHhNmvvnzhVnL
AeoaTG2rM9tUQK/ZmOY0isMISV2ivSQN7J8aYyrzDOdL6gZ/YSET9zeUM3p6CLptUclLerMw5yHG
xWz9Y3LgoCPyrtCD8Io3YuHxtgUnzOS03JWaA8bQf5liJuXXz/jX4n2puCxNOwulMdJRYMWkrfAm
+CHhmPbDj7zsI42nK+Q+UrLQottSD0UNY1dmQoduV6zm4151nymNzpbBqf3GLv8zO1n8e/sFb1P2
5a+Tp+z4O1BLAwQUAAIACAB2YHZH1vXjc+wAAAAMBgAAagAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAkAA58fUlafH1JWdXgLAAEE9QEAAAQUAAAA
7ZRNSwNBDIbP9lfkaC+ys93TIB7cHhTaIogoiIfsbDodOiZlJlvx3zsr3jzZgoj0mJA8+XhJVrKH
ugZT22pmmxroLRvTXERxGCGpS7STpIH9c2NMZV7gck7d4K8sZOJ+STmjp8egmxaVvKR3C+c8xDid
rA4mBw46Iu8LPQjf8losPN214ISZnBZfidljDP0RVTLpV/sL8b5EXJekrYWSGOlvghWTtsLr4IeE
4xo+Fy+vu0ijdYPcR0oWWnQb6qECYuxKTejQbYtc+bipHjKlUYx5cGq/sYvwk7Ppabzfv5f/T56d
yAeSf/JLPwBQSwMEFAACAAgAd2B2R7H2N67uAAAADAYAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA6EfUlahH1JWdXgL
AAEE9QEAAAQUAAAA7ZTBSgMxEIbP9inmaC/SbPcUxIPbg4IWQURBPMxmp2lonCnJbMW3Nyue9LRW
8LLHhJlv/nwhWcsBqgpMZRdLWy+B3rIx9VkUhxGSukR7SRrYP9fGLMwLnK+o7f2FhUzc3VLO6Okx
6LZBJS/p3cIp9zHOZ+tfkwMHHZD3hR6Er3kjFp7uGnDCTE7LXqk5YAzdtyn1qPz6Ff9GvC8Vl6Vp
Z6E0RjoKrJi0Ed4E3ycc0n76kdd9pGF1hdxFShYadFvqYAHE2JaZ0KLbFav5uFM9ZEqDs1Vwan+w
y/3MTuaTt3/wNua9TOSJ/BfkMX/pB1BLAwQUAAIACAB3YHZHLI3eFIMAAADAAAAAbAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJyLnR4dFVUCQADoR9SVqEf
UlZ1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtLEuARxqYuDRXBQEIeYnmkg3Elyrfj2xldw
/fn5ep5Ba1DatmtrNoDvopRZJfYuQRaf8cVZIoWbUapVd9ju8TGFnYWCNByxFBfwEmXsnGDg/LGw
oCmlZdP/LUeK8iPPVY9MB3qyheupA89E6KW2+swuxaH5AlBLAwQKAAAAAABlYHZHAAAAAAAAAAAA
AAAAWgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1VUCQADfR9SVuUgUlZ1eAsA
AQT1AQAABBQAAABQSwMECgAAAAAAZWB2RwAAAAAAAAAAAAAAAGQAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svVVQJAAN9H1JW5SBSVnV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACABlYHZHZT5ii8oAAADdAQAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZh
Y2VzL1RleHRUcmFjay9hY3RpdmVDdWVzLXN0ZGVyci50eHRVVAkAA30fUlZ9H1JWdXgLAAEE9QEA
AAQUAAAApZAxT8MwEIVn8itupEuUpGWohTqQDlSCbogBMVzsq2vV3FX2pRX/HgfYmFDGe9L73r23
lwt0HbSdaZamWQNdc9uu6igWIyS1ic6SNLB/W7XN+u4d7nd8kI2BKN4XGbJi0lzXdbX/N2pLw+gL
K5M+U87o6emH+lBMJwPFGMnNAU/P9cKH4MeEGoRfgx57+ThHmq5HZBcpGejRHslBA8Q4lEwY0J6I
XZ7X6iVTmvbaBqvmD9vAbXWzmJXA7ne4716o5CV9Fi6PMS6qL1BLAwQUAAIACABlYHZHM0KoH4QA
AADAAAAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hZGRD
dWUtc3RkZXJyLnR4dFVUCQADfR9SVn0fUlZ1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtLE
OjSIS10cLIKDgjjE9BoD4U6Sa8W3N76C68/P1/MMWoPSpl6bugV8Z6WaVWRnIyRxCV+cJJC/Napu
N3fY7vEx+Z2BjDQcMWfr8RLk2VlBz+ljYEFTjMuq/1sOFORHnosemA40soHrqQPHROiktPLMNoah
+gJQSwMEFAACAAgAeGB2R1SKoEveAAAA5AMAAHcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0
d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQADox9SVqMfUlZ1eAsAAQT1
AQAABBQAAADtkTFLBDEQhWv3V0ypjWzWBSGIxe0VCnoIIgpiMZvM5cLFmSOZPfHfmxU7u7tSy4H3
vse8t5I9dB2YzrYXtr8E+ijG9OdJHCbI6jLtJGvk8Nob05o3uFrSOIVrC4X0nkrBQHcSQlUsqmlr
oRoT+WZ1OFgx6yC8jmHKqFH4OepmkPddovm6QfaJsoUB3YY8tECMY82EEd2W2JdjwkmfCuVbXssy
OrW/2BZOm5Oz4xL+ezsogf1Pcd9/oVKQ/Fm5PKX018iRo87Ix0qv2869W3h5GMAJM7l576rZY4q+
+QJQSwMEFAACAAgAeGB2RxoOkOKDAAAAwAAAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0
d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUCQADpB9SVqQfUlZ1eAsAAQT1AQAABBQAAACd
zLEKwjAQgOG9T3GjLtLEDBLEpS4OFsFBQRxieqaBcCfJteLbG1/B9efn63kGrUFp266t2QC+i1Jm
ldi7BFl8xhdniRRuRqlW3WG7x8cUdhYK0nDEUlzAS5Sxc4KB88fCgqaUlk3/txwpyo88Vz0yHejJ
Fq6nDjwToZfa6jO7FIfmC1BLAwQUAAIACAB5YHZHR/pD3OcAAACmBQAAcgAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4dFVUCQADpR9SVqUf
UlZ1eAsAAQT1AQAABBQAAADtk7FKBEEMhmvvKVJqIzvrNg5i4V6hoIcgoiAW2Znc3HBjcsxkT3x7
Z8XOTtlCuDKQfMmf5F/JHtoWTGubM9udA70XY7rTJA4TZHWZdpI1cnjpjGnMK1wsaRjDpYVCekel
YKBbCaFmXNWirYVamMgvVr8HK2bthdcxjBk1Cj9F3fTytks0RdfIPlG20KPbkIcGiHGoPWFAtyX2
5S/NZ1NF+lgo3/BaltGp/TG0hePF0ck/3tvc8irl+zRfulApSP6oXB5TOpAP5DnIkaNOyIdKrx6a
/tvC830PTpjJTb6qOXtM0c84/ydQSwMEFAACAAgAemB2R57LZPDrAAAApAQAAHIAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVyaW5nX3BhdXNlLXN0ZGVyci50eHRVVAkAA6cf
UlanH1JWdXgLAAEE9QEAAAQUAAAA7ZOxTgMxDEBn+hUe6YIuR1kixMB1oBJUSAiBhBh8OTeNmtpV
4ivi78khNqZyQnRgtGU/Oy/yUvZQ12BqW53biwroLRszO4viMEJSl2gnSQP7l5kxlXmFyzm1vb+y
kIm7O8oZPT0FXTeo5CW9WzjlPsbpZPljcuCgA/Kh0IPwgldi4fm+ASfM5LTkSs0eY+hGTMmkX+vf
ivel4ro0bSyUxkijwIpJG+FV8H3CYdtPP7LdRRqiG+QuUrLQoFtTB4XN2JaZ0KLbFKt53KseM6XB
2Tw4td/Y5X8mJ9N/b3/g7bfu5TCyOQryITf+AVBLAwQKAAAAAABmYHZHAAAAAAAAAAAAAAAAagAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAkAA38f
UlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAGVgdkeEGuDXygAAADcCAACRABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8t
b3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQADfh9SVn4fUlZ1eAsAAQT1AQAABBQAAAC10LFO
AzEMBuCZPoVHupwuR1kixNDrABLthhgQgy9x06jBrhJfK96eHLAxoROjLfmz/e/kDF0HprPtjTUt
0KUYs2qSOEyQ1WU6SdbI4XVlTHv7BnePvJd7C0lCqG0oillL0zSL3Z+pDQ1jqFYh3VIpGOjpW13X
oaOFOpjIz4Gn43rhfQxjRo3CL1EPvbyfEk3VA7JPlC306A7kodqMQ90JA7ojsS/zvnoulKe8NtGp
/WVbuF5cLWdtYP8T3NdfqBQkf1SXx5T+U/4EUEsDBBQAAgAIAGZgdkcquq+PKAEAAG8DAACPABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1v
dmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA38fUlZ/H1JWdXgLAAEE9QEAAAQUAAAA
zZJNTwIxEIbP8ivmqAfJFlCkMSSyHDRRQiBEE8Kh253tNtQpabv48eudJXrhiibOrc3M8868MzO/
h14PRE9mfSkywLcoxKDrvFYOQtIBdz4kS2Y9ECK72sDtFIvGjCVEpPIJY1QGn22qc5XQ+PAh4Zwa
5y46s39ItmRTi1wy3Xp6oMpLeJnnoD0R6sR/nLNXzpad9Q+/O7q+YQYH5Iu7yRLGHFC5JtZz7pR1
FuhQRVxikrDO3odVoUo9ENVwlG1gwn1tIYNaRSBPl58YPASsWLOhBP2TjErfPj16YzjjoCWBCx2W
p4CTCin3VFnTBNXacliEf905bF/3ikqHQUKudI0lT4ekCtaEQuktmxJPm2oVMbTLmVrNlh6z+RA6
Z8dnIP7swH6T/AVQSwMEFAACAAgAZmB2R6IaMnQnAQAAFQMAAI8AHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1l
bnQtc3RkZXJyLnR4dFVUCQADfx9SVn8fUlZ1eAsAAQT1AQAABBQAAAC1kk1LAzEQhs/2V8zRHiyb
bYsQpGC3BwUtpYsoFA9JdpINjUlJsvXj1ztb9OJFcHFuCTPPO/POrMMRyhJYyYspZwzwNTE2m7ig
hIOYVcRDiNl6s5sxVsyf4WqFsjMLDgl9c48pCYOPNreVyGhCfOdw7jvnxqP1n8nW29wja6Lb4G+9
DhyeNhWo4D2qTH+UcxTONqPdN38yLQtiUEC1vV7WsKAA7brUbqhT0tmiQ5GwxsxhV7xdaim0lOVc
aipcUl97KKAVCXzwFx8YA0TUpNn5DNMB4yTMXz7dBWMo46TFgQodNkPAWcRcBa+t6aLobTktIrwc
HPavG+Ebh5FDJVSLDU2HXkjSBCnUnkxJw6Z6SBj75aysIkt/sukQRmfjQQr/dWC/kT8BUEsDBBQA
AgAIAGZgdkeWIL0ZgwAAAMAAAACBABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhl
LW1lZGlhLXJlc291cmNlL3BsYXliYWNrUmF0ZS1zdGRlcnIudHh0VVQJAAN/H1JWfx9SVnV4CwAB
BPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0ot1CeJSFweL4KAgDjE904NwJ0la8e2tr+D68/N1OoEx
gMbWa4sI9M6IzSqqdxFS8YlemgpLuDWI9eYO2z09xrCzkEn6I+XsAl24DK0rFDR9LCxkjHFZdX/L
LFx+5HnWWeUgT7VwPbXgVYR8mdv8TC5yX30BUEsDBBQAAgAIAHpgdkfWOnNZgwAAAMAAAAB4ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVjdHNfbm9uZV9hdXRvcGxheS1zdGRl
cnIudHh0VVQJAAOnH1JWpx9SVnV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0ot1CeJSFweL
4KAgDjE904NwJ0la8e2tr+D68/N1OoExgMbWa7tBoHdGbFZRvYuQik/00lRYwq1BrPEO2z09xrCz
kEn6I+XsAl24DK0rFDR9LCxkjHFZdX/LLFx+5HnWWeUgT7VwPbXgVYR8mdv8TC5yX30BUEsDBBQA
AgAIAHtgdkcGbS355gAAAEwFAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVf
ZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQADqR9SVqkfUlZ1eAsAAQT1AQAABBQAAADt07FO
AzEMBuCZewqPsKDLtSwRYuA6gAQVEkIgIQZf4qZRg10lviLenhxiY4F27RjJ/n7Fspeyg64D09l2
Zi86oI9izPw8icMEWV2mrWSNHF7nxrTmDS4XNIzhykIhvadSMNCdhFArrmvTxkJtTOSb5f6wYtZe
eBXDmFGj8HPUdS/v20TT6wbZJ8oWenRr8tACMQ41EwZ0G2JfDgknfSqUb3kli+jU/rItnDYnZ4cl
HOe2VwL7n8F9/wuVguTP6vKY0lE+yn+VZ/+QI0edyMeq1xua9tvCy0MPTpjJTXdVa3aYom++AFBL
AwQUAAIACAB7YHZHspqEv/MAAADABgAAegAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0
YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAOqH1JWqh9SVnV4CwABBPUB
AAAEFAAAAO2UwUoDMRCGz/Yp5mgvstmulyAe3B4UtAhSKoiHbHaahsaZksxW+vbNiicFoVSshz0m
zHzz5wvJjLdQlqBKXUz05QTwPSlVXQS2JkAUG3HDUTy5l0qpQr3C1RSbzl1rSEjtA6ZkHC68rGoj
6DjuNJxTF8J4NPuHZE9eeuRTpnumO1qyhufHGiwToZW8l2u2Jvj2y5TqoPzyGf+encsVN7lprSE3
BjwKLCZKzbT0roumT/vhh982AfvVraE2YNRQG7vCFgpAMk2eCY2x62w1HXeqecLYO5t6K/obO9/P
6Gw8eDuBt0Pey0AeyL9B/qu/9Of8e1BLAwQUAAIACAB8YHZHkHWjyPAAAABmBgAAdgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50eHRV
VAkAA6wfUlasH1JWdXgLAAEE9QEAAAQUAAAA7ZTBSgMxEIbP9inmaC/SrK2HIB7cHhS0CCIK4mE2
O01D40xJZiu+vVnx5sluwcseE2a++fOFZCV7qCowlZ2d28UC6CMbMz+L4jBCUpdoJ0kD+9e5MTPz
BpdLajp/ZSETt/eUM3p6DrqpUclL+rRwyl2M08nqYHLgoD3ysdCD8C2vxcLLQw1OmMlp2Ss1e4yh
HTAlk/7EvxPvS8V1adpaKI2RBoEVk9bC6+C7hH3abz/yvovUr26Q20jJQo1uQy3MgBibMhMadNti
NQ871VOm1DtbBqf2F7vcz+RkOnr7B29/eS8XI3kkH4F8+F96zPxfUEsDBBQAAgAIAH1gdkdJjknO
7gAAAKQEAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRl
ZG1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA64fUlauH1JWdXgLAAEE9QEAAAQUAAAA7ZNBSwMxEIXP
9lfM0V6kWatCEA9uDwpaBBEF6WE2O01D40xJZiv+e7PiSU/r4kHwmDDzvZf3yFL2UFVgKjs7tien
QK/ZmPlRFIcRkrpEO0ka2D/PjZmZFZwvqOn8hYVM3N5SzujpMeimRiUv6c3CIXcxTifLH5MDB+2R
94UehK95LRae7mpwwkxOy12Z2WMM7ReVs0H+9dP+jXhfJi7L0tZCWYw0CqyYtBZeB98l7N1+5CMv
u0j96Qq5jZQs1Og21MIMiLEpmtCg25ZU87hXPWRKfWaL4NR+Y5d+JgfTUQpDev9v5G838lvkIX/8
HVBLAwQUAAIACACAYHZHfc8jhPMAAABmBgAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFk
eVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAkAA68fUlavH1JWdXgLAAEE9QEAAAQU
AAAA7ZTBSgMxEIbP9inmaC+yWStoEA9uDwpaBBEF8TDNTtPQOFOS2Ypvb1Y8KQi1opc9Jsx88+cL
yUw2UNdgalsd2qNjoJdszOQgisMISV2itSQN7B8nxlTmCU6nNO/8mYVM3F5TzujpPuiyQSUv6dXC
PncxjkezH5MDB+2Rt4UehC95IRYebhpwwkxOy16p2WAM7acpJ1vl14/4V+J9qTgvTSsLpTHSTmDF
pI3wIvguYZ/23Y88ryP1qwvkNlKy0KBbUgsVEOO8zIQ5ulWxmnc71V2m1DubBqf2C7vcz2hvPHj7
B2/bvJeBPJB/g/xXf+n3+d8AUEsDBBQAAgAIAIBgdkc793f/ggAAAMAAAABsABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAAOwH1JWsB9SVnV4
CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMukoRMQVzq4tAiOCiIQ0zPGAh3klwrvr3xFVx/fr6R
FzAGtHHKOqUA31Vru8kcfIYioeCLiySKV6u10jfY7vE+x52DijQNWKuPeE7y7L1g5PJxsKI553U3
/i0nSvIjT01PTAd6sIPLsYfARBiktfYsPqep+wJQSwMEFAACAAgAgGB2R6smH+vVAAAAwgIAAIQA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNl
X2VsZW1lbnRzLXN0ZGVyci50eHRVVAkAA7AfUlawH1JWdXgLAAEE9QEAAAQUAAAA1ZA/T8MwEMV3
PsWNMKR20khNvFVUVQcGFJWpYnDtC7Hwn9S+8Pk5FGY2JNAt76f3Tnp3l7pRslVSbnZy+wqn8/l5
wNuChWB0byei+RsPzg5o0H3ggGVOseCj9v6qzbuCvBoWJs4zrT60soV7zDllqOqm33YPMLL+Cikh
fDLaT6mQ6jopxUTBi4JBR3KmCAxXtBZtZVIkjCQCWqcr9BiYihhTurv83J3xsIT56KL2L8PTPvIB
IRHureWKRYFeBdTNbiN5al7jLCzZ/07J/h8/uP+rD/4EUEsDBAoAAAAAAGZgdkcAAAAAAAAAAAAA
AABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQADfx9SVuUgUlZ1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAZmB2RwAAAAAAAAAAAAAAAGMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
dHJhY2svdHJhY2stZWxlbWVudC9VVAkAA38fUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AGZgdkdzptBYpAAAADgBAACCABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVs
ZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUCQADfx9SVn8fUlZ1eAsAAQT1
AQAABBQAAACljbEOwiAURWf7FW/UxZRaHYhxsB000W7GwThQeKWkCA286u+Ls5uON7nnnMY/oSiA
FTxfcZYDviJj5dJ6KSwEkgFHH8g4fStZvlnfYVtjO+kdh4h0xhiFxpPXOj32CRo4JNCiyprfxSQC
Vd51Rk9BkPHuaqiv/GO0+FkH4ZTFwKESskcFye1Em5rQCjmgU/GfONIlYji6ztdGEv9yc5hns0X2
BlBLAwQKAAAAAABmYHZHAAAAAAAAAAAAAAAAUQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXJlYS1lbGVtZW50L1VU
CQADfx9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAZmB2R5Dsz+GDAAAAwAAAAGwAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvdGhlLWFyZWEtZWxlbWVudC9hcmVhLXN0cmluZ2lmaWVyLXN0ZGVyci50eHRVVAkAA38f
UlZ/H1JWdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy7Si9UhiEtdHCyCg4I4xPSMB+FOkrTi
21tfwfXn5+t0BGMAja2XFhHonRGbRVTvIqTiE700FZZwbbBer26w2dF9CFsLmaQ/UM4u0JnLs3WF
gqaPhZkMMc6r7m+ZhcuPPE06q+zloRYuxxa8ipAvU5ue0UXuqy9QSwMECgAAAAAAZmB2RwAAAAAA
AAAAAAAAAFIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQJAAOAH1JW5SBSVnV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABmYHZHzAZZLN4AAADQAgAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxl
bWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQJAAOAH1JWgB9SVnV4CwABBPUBAAAE
FAAAANWQP0/DMBDFdz7FjTCktpNIBG8VVdWBAUVlqhhc+0osznbqP3x+HIUZJiTQLe/dvZN+dyfR
St5J0W76TrzC4Xh8HvFaMGW42LdDzvOX3Vkzokb7gSOmOfiEj4rorPS7hLgODEw1X906h573cIsx
hgiNaB+64Q4uVS8hyRgFrWgKKcth4JxN2RFL6JTPVieG7ozGoGl08Bl9ZnnCRhVjQ4OEbun4QnRz
+p6/2l1x8956RS/j09bXI1zIuDWmYiYJahUg2vsNryXqWs1CifRroH33vx6dov4J/0/8eeH8BFBL
AwQKAAAAAAB5YHZHAAAAAAAAAAAAAAAAAwAcAGpzL1VUCQADph9SVuUgUlZ1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAAsmB2RwAAAAAAAAAAAAAAAAcAHABqcy9kb20vVVQJAAMPIFJW5SBSVnV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACAB5YHZHqw9xHrAAAADuAAAANQAcAGpzL2RvbS9jYWxsYmFjay1m
dW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC1zdGRlcnIudHh0VVQJAAOmH1JWph9SVnV4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTc
yFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5Rykwikd
WFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZj
cz1pnXtp6Q7zePYGUEsDBBQAAgAIAJhgdkerD3EesAAAAO4AAAAwABwAanMvZG9tL2V4Y2VwdGlv
bnMtdGhyb3duLWluLWNhbGxiYWNrcy1zdGRlcnIudHh0VVQJAAPfH1JW3x9SVnV4CwABBPUBAAAE
FAAAAGXOQQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH
4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBd
uA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1p
nXtp6Q7zePYGUEsDBBQAAgAIALJgdkccDghOxTEAAH5QAwAsABwAanMvZG9tL3Jlc2VydmVkLXdv
cmRzLWFzLXByb3BlcnR5LWFjdHVhbC50eHRVVAkAAw8gUlYPIFJWdXgLAAEE9QEAAAQUAAAAzX3R
juNIju17f4VRL2MDizJwsU+7mIfFoBe4wCxmgO77AVlZri5jslMFp7Orcxv979eSIqSQFWQcMshQ
PszAyiZ5GJREnhN2ST+fXq4vu2u3Oz2/vF5Ou+vXh+vu+2n3+PC8e3057X78aXc5vZwuv50+7753
l88vu4eX3bdL9+10ub7tnh9+Pb18/OGHfzzvXl4fH08vL/+2e+ted9/PT0+7l9Np93D7/8v59LLr
vuw+/PO/fvrpw+7m8fLwy+lm+aV7euq+3wJ/ett9+PnHn37e/e0f//PPv//4848fbjF/6M13vz1c
dtfL6+k/h/+/pXc5fd+dfn88fbueu+fdT2/P14fff7xcust/7P728PzcXYe0r19Pu3+d3vqMd3/p
Pf/S5/3Qhzs/fHo6DZl//Dhi7L+8Pj/24faHP5Z4fx48cSPW7q+7f/8/Aeivf+0P2q1zje275pjC
7pd9b3r4Y7f7s9W5pbF913zsDY4fr7dbbZ/L4eC/9GIKvhW4Xt7++PPx4fr4NUBanfMhZnn5FL7Z
qpk8pnL35nvLC36KXLzg76HN1p1P4Y/dh97mw3/0rezPj0lzOezOLwPyOlnOa8p36f3HcCBFIXxI
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
MQAAoE8DAC4AHABqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktZXhwZWN0ZWQudHh0
VVQJAAMPIFJWDyBSVnV4CwABBPUBAAAEFAAAAM1dwa7rRo7d5yuMbMYGBjEwmNUMejFoZNeDbiD5
Aec+v8Tom6vA1y+vPUH+fSypSipZRfKwiizdRTesG5KHRUnkOWU/6cfz++19d+t257f3L9fz7vbL
6bb7et69nN52X97Pu+9/2F3P7+fr7+dPu6/d9dP77vS+++3a/Xa+3u67t9Ov5/fvvvnm72+79y8v
L+f393/f3bsvu6+X19fd+/m8Oz3+/3o5v++6z7tv//E/P/zw7e7h8X76+fyw/Ny9vnZfH4F/uu++
/fH7H37c/fXv//uPv33/4/ffPmJ+05vvfj9dd7frl/N/D///SO96/ro7/+vl/Nvt0r3tfri/3U7/
+v567a7/tfvr6e2tuw1p33457/55vvcZ7/6t9/y3Pu9TH+5y+un1PGT+3Xcjxv7zl7eXPtz+8McS
78+DJ27E2v1l95//EYD+8pf+oN0619i+a44p7H7e96aHP3a7P1udWxrbd83H3uD43e1xq+1zORz8
ly6m4FuB2/X+x58vp9vLLwHS6pwPMeXlU/hmq2bymMrdm+8tL/gpsnjBP0ObrTufwh+7b3ubb/+r
b2V/fpc0l8Pu8j4gr5PlvKZ8l95/DAdaFMKHxPj5fIsF/PPfH/MsHP1rOPztdH0/f/r7P0/3EHL+
A5RMbfB81t/25+z9dr283L7979YjlAH37TJZ4C2GK5hIw2qse/7iP7ebwSVZNawTPyefsjs0Lpcu
uYZV23q8Q8m0mPX5qztOX59bTmQBBUn58oMFZBlZgEMA87GERoABMHQ/gmGNlF9PP+E+n17fqxjG
EECjXhPEustVRJ7QwggPnyvIRNliM/DOK0+mzGBbrV5UC2fQndd9HCzWo3ZO49Bg/UAWznVIZmkA
NTv7euW+zMBu5Yh2H+z3ppc/rt5X4HZrJ/X7YBQHatpxBAVP+5H6erBSI5FerI6PpQzTbzy0U/J1
4UEt33bUcvDO3ScPvc0QhnNpWZPMTDDUGOX1QfNqWStpmNpo+/KaafNrWbvtaQCWThNOkL/Spxnt
dAMWqnw+LWcesRLpJaRCEQRT2wV0Aw6B630vImKPRWv+ty+vrzUXUO+vEcEzXt2FK+FGrDDdx48V
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
aWEtc291cmNlL1VUCQADvB9SVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAhmB2R4F9A4WL
AAAAmwAAAEgAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0YWxsZWQtaG9sZHMt
c2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAkAA7wfUla8H1JWdXgLAAEE9QEAAAQUAAAADcix
DoIwEADQ3a+4H8DQE4KyaVhMnJS4GIejPbBJacm1xNSvl+3lYanqQqkCERS2ZdUq3NdNA906L3f2
hqUX5lelylPTosLDsX7DdfJBrJ9AB58kuN7OPFBkiJxgyKCdZb+JNa3bnp8PmhfHl3UcWTobF0f5
RpkFvhSBjGEDKQBBzF5/JHj7Y9n9AVBLAwQUAAIACACbYHZHbh5YOcYAAAAkAwAAKAAcAG1lZGlh
L3NvdXJjZXMtZmFsbGJhY2stY29kZWNzLXN0ZGVyci50eHRVVAkAA+UfUlblH1JWdXgLAAEE9QEA
AAQUAAAA1ZExb8IwEIVn+BU30gUlaSohC3VoGEBq2aoOiOFiH44V40P2pVX/fV3ExgbKwHjSve/d
e7flb6gqKCtV1OqlAvpJZVnPPWv0EEVHOnEUF+yuLovF8x6WK2oH+6ogkXxQSmjpna3NG29Z1CvI
Qk9mur0dLBil4XBwdogojsOXk67h48nT/7TGYDxFBQ3qjgwUQAHb7Akt6p6CSfeYj5aK5DNR3IQD
r5wWdXW0gtl08vTAvY0dL1MurznnQiHL8Tdzw+D9mOQ/UEsDBBQAAgAIAJtgdkfpr2ZTiwAAAIAB
AAAwABwAbWVkaWEvc3ZnLWFzLWltYWdlLXdpdGgtbWVkaWEtYmxvY2tlZC1zdGRlcnIudHh0VVQJ
AAPlH1JW5R9SVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLEyNVZILS82NDTRy8lPTsxRKCpJ
LkotyC8qycxLjzYxNLAwjlWwcUlNKk23s1IoTs1L8U0tLk5MTw3PLMlwTixJTc8vqrRS0MgrzcnR
5PIj2+TMvMwSkJHBQNMz8/M889LyrRQiApwVkvPz8lKTS4BiQDVliTmZKRTYMjjcDwBQSwMECgAA
AAAAvGB2RwAAAAAAAAAAAAAAAAwAHABtZWRpYS90cmFjay9VVAkAAyMgUlblIFJWdXgLAAEE9QEA
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
AAAAvQAAACEAHABtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0ZGVyci50eHRVVAkAA+cfUlbnH1JW
dXgLAAEE9QEAAAQUAAAAbY5BDoIwFAX3nuJfQBo1GsO2ipBIQhAOQNoXbYL92P6SeHtl5cbVzGIW
o26cgoEezANKc0AN64afrTf7wzbb7o6qCSws7wlRFe5edl2zUI8OXsrB2xFWpyj87Nvrt52dRcgM
mb+BDhgELeLEPuLkjBQcLpAWr4QoOWlOoyXPQob9jCDUdxUJU13VZ1o2clp9AFBLAwQUAAIACADR
YHZH4G1OmVsAAABvAAAAJgAcAG1lZGlhL3ZpZGVvLXBsYXllZC1yYW5nZXMtMS1zdGRlcnIudHh0
VVQJAANKIFJWSiBSVnV4CwABBPUBAAAEFAAAAIs2NLIyMLMyNtEztjSLVbABAgXPQF1nRwU7IFAo
yCxMToxPzSssTS1N9cxNTE/1zHN2BDMCQUJWCsg8z7zi1KISMF8hLTEzJzVFRyGlNLcgMy9dIa0o
MTeVCwBQSwMEFAACAAgA6GB2R6hzAZ29AAAAkgEAAB8AHABtZWRpYS92aWRlby1zcmMtYmxvYi1z
dGRlcnIudHh0VVQJAAN0IFJWdCBSVnV4CwABBPUBAAAEFAAAAKWQMW8CMQyF596v8AgLulypWkWI
gWOgEmWrOlQdfIkJEcFGiY+q/75pxdatjE/y+z757eQCXQems+2jNQ9An8WY+SyJwwRZXaazZI0c
3uemfbr/gMWahjEsLRTSFyoFA20lhHqxqqWjhVpM5Jvd/8GKWXvhfQxjRo3Cb1EPvZzOiX7SBtkn
yhZ6dAfy0AIxDtUJA7ojsS+3yElfC+Vn3ss6OrV/2BYmzd30JgP763C/f6FSkPxVuTymNG2+AVBL
AwQUAAIACADpYHZHR0AghoQAAADAAAAAIQAcAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJy
LnR4dFVUCQADdSBSVnUgUlZ1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtLEohLEpS4OFsFB
QRxieo2BcCfJteLbG1/B9efn63gCrUFpU6+NWgG+s1LNIrKzEZK4hC9OEsjfGlVvlnfY7vEx+p2B
jNQfMWfr8RLk2VpBz+ljYEZjjPOq+1sOFORHnosemA40sIHrqQXHROiktPJMNoa++gJQSwMECgAA
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
UPJuO3cPp5X0RBqbDbFE+PA8UbgAzAJMC0Xo5wmJrKeUVA14SbbbAVPMiwlCtWSr+nAjkkQSFANZ
C9hWO2xdkNilADmy00lQCZLK3zj79cP+ye16xluzMHZKjLsEWP24DSdQ32waL/u4X3wj5yjc/UC8
A1BLAwQUAAIACAAiYXZHdmV7U3MxAACgTwMANgAcAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdv
cmRzLWFzLXByb3BlcnR5LWV4cGVjdGVkLnR4dFVUCQAD3yBSVt8gUlZ1eAsAAQT1AQAABBQAAADN
XcGu60aO3ecrjGzGBgYxMJjVDHoxaGTXg24g+QHnPr/E6JurwNcvrz1B/n0sqUoqWUXysIos3UU3
rBuSh0VJ5DllP+nH8/vtfXfrdue39y/X8+72y+m2+3revZzedl/ez7vvf9hdz+/n6+/nT7uv3fXT
++70vvvt2v12vt7uu7fTr+f377755u9vu/cvLy/n9/d/3927L7uvl9fX3fv5vDs9/v96Ob/vus+7
b//xPz/88O3u4fF++vn8sPzcvb52Xx+Bf7rvvv3x+x9+3P317//7j799/+P33z5iftOb734/XXe3
65fzfw///0jvev66O//r5fzb7dK97X64v91O//r+eu2u/7X76+ntrbsNad9+Oe/+eb73Ge/+rff8
tz7vUx/ucvrp9Txk/t13I8b+85e3lz7c/vDHEu/PgyduxNr9Zfef/xGA/vKX/qDdOtfYvmuOKex+
3vemhz92uz9bnVsa23fNx97g+N3tcavtczkc/JcupuBbgdv1/sefL6fbyy8B0uqcDzHl5VP4Zqtm
8pjK3ZvvLS/4KbJ4wT9Dm607n8Ifu297m2//q29lf36XNJfD7vI+IK+T5bymfJfefwwHWhTCh8T4
+XyLBfzz3x/zLBz9azj87XR9P3/6+z9P9xBy/gOUTG3wfNbf9ufs/Xa9vNy+/e/WI5QB9+0yWeAt
hiuYSMNqrHv+4j+3m8ElWTWsEz8nn7I7NC6XLrmGVdt6vEPJtJj1+as7Tl+fW05kAQVJ+fKDBWQZ
WYBDAPOxhEaAATB0P4JhjZRfTz/hPp9e36sYxhBAo14TxLrLVUSe0MIID58ryETZYjPwzitPpsxg
W61eVAtn0J3XfRws1qN2TuPQYP1AFs51SGZpADU7+3rlvszAbuWIdh/s96aXP67eV+B2ayf1+2AU
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
dG9yYWdlL1VUCQADCCBSVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAs2B2RwAAAAAAAAAA
AAAAAA8AHABzdG9yYWdlL3dlYnNxbC9VVAkAAxEgUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIAK5gdkerD3EesAAAAO4AAAAtABwAc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJs
ZS1zdGRlcnIudHh0VVQJAAMIIFJWCCBSVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0Q
Eewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0
EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruL
QYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAK5g
dkerD3EesAAAAO4AAAA1ABwAc3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJl
dXNlLXN0ZGVyci50eHRVVAkAAwggUlYIIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQ
bRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNU
IXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fm
u4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgA
rmB2R6sPcR6wAAAA7gAAAEYAHABzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1uby1jcmFz
aC1vbi1wcmVmbGlnaHQtZmFpbHVyZS1zdGRlcnIudHh0VVQJAAMIIFJWCCBSVnV4CwABBPUBAAAE
FAAAAGXOQQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH
4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBd
uA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1p
nXtp6Q7zePYGUEsDBBQAAgAIAK5gdkdsP9p9tgAAANwBAAAoABwAc3RvcmFnZS93ZWJzcWwvY2hh
bmdlLXZlcnNpb24tc3RkZXJyLnR4dFVUCQADCCBSVgggUlZ1eAsAAQT1AQAABBQAAADlz88KwjAM
BvC7T5GTbKBWEBF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEhRCFgAkel
YIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR9+yBtuql
NR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzobToNxvznttC6COLrBOB1l
f/XtC1BLAwQUAAIACACvYHZHqw9xHrAAAADuAAAAMgAcAHN0b3JhZ2Uvd2Vic3FsL2Nsb3NlLWR1
cmluZy1zdHJlc3MtdGVzdC1zdGRlcnIudHh0VVQJAAMJIFJWCSBSVnV4CwABBPUBAAAEFAAAAGXO
QQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAIm
aKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+0
9SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7z
ePYGUEsDBBQAAgAIAK9gdkerD3EesAAAAO4AAAA0ABwAc3RvcmFnZS93ZWJzcWwvZGF0YWJhc2Ut
bG9jay1hZnRlci1yZWxvYWQtc3RkZXJyLnR4dFVUCQADCSBSVgkgUlZ1eAsAAQT1AQAABBQAAABl
zkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBAC
JmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRP
tPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO
83j2BlBLAwQUAAIACACvYHZHqw9xHrAAAADuAAAAKQAcAHN0b3JhZ2Uvd2Vic3FsL2VtcHR5LXN0
YXRlbWVudC1zdGRlcnIudHh0VVQJAAMJIFJWCSBSVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/
Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC
5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V
1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQA
AgAIAK9gdkerD3EesAAAAO4AAAAqABwAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJncy1z
dGRlcnIudHh0VVQJAAMJIFJWCSBSVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QEewt
yi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B
2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNl
dvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAK9gdker
D3EesAAAAO4AAAAyABwAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtcm93c0FmZmVjdGVkLXN0
ZGVyci50eHRVVAkAAwogUlYKIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRAR7C3K
LhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHY
gyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V2
8B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAr2B2R6sP
cR6wAAAA7gAAAD8AHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlc3FsLWFjY2VwdHMtb25seS1vbmUt
c3RhdGVtZW50LXN0ZGVyci50eHRVVAkAAwogUlYKIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXg
e79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxx
YILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZ
jlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwME
FAACAAgAsGB2R6sPcR6wAAAA7gAAAC4AHABzdG9yYWdlL3dlYnNxbC9oYXNoLWNoYW5nZS13aXRo
LXhoci1zdGRlcnIudHh0VVQJAAMMIFJWDCBSVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6h
UG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XD
VCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffR
ZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAI
ALBgdkdsP9p9tgAAANwBAAA/ABwAc3RvcmFnZS93ZWJzcWwvbXVsdGlwbGUtZGF0YWJhc2VzLWdh
cmJhZ2UtY29sbGVjdGlvbi1zdGRlcnIudHh0VVQJAAMMIFJWDCBSVnV4CwABBPUBAAAEFAAAAOXP
zwrCMAwG8LtPkZNsoFYQEXoTnRcRYfPPud0yKXTJyFrFt3cTPfkI3vKR3wdJlufHXMOZjPUIgSFE
IWACR6VggxSMBxMDT++mjLGBZA7EAQwBirCkI3VhHxvs1NYEo7Jroa5o9y6ogqOUOKQNC6oDV9H3
7IG26qU1Hb4rwzAr2zZZLFcpaLDMHj4lrb9C6xalZmmOLdKaqguKq5/JgCe/OhtOg3G/Oe20LoI4
usE4HWV/9e0LUEsDBBQAAgAIALBgdkerD3EesAAAAO4AAABEABwAc3RvcmFnZS93ZWJzcWwvbXVs
dGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLXN0ZGVyci50eHRVVAkAAwwg
UlYMIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jf
p1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03
KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuq
C5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAsGB2R6sPcR6wAAAA7gAAAC8AHABz
dG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlvbnMtc3RkZXJyLnR4dFVUCQADDCBSVgwg
UlZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu
83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNV
oj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5
RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACACwYHZHqw9xHrAAAADuAAAAKAAcAHN0b3Jh
Z2Uvd2Vic3FsL251bGwtY2FsbGJhY2tzLXN0ZGVyci50eHRVVAkAAwwgUlYMIFJWdXgLAAEE9QEA
AAQUAAAAZc5BC4JAEAXge79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzI
WIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1Y
UF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNz
PWmde2npDvN49gZQSwMEFAACAAgAsGB2R2w/2n22AAAA3AEAAEgAHABzdG9yYWdlL3dlYnNxbC9v
cGVuLWRhdGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRV
VAkAAwwgUlYMIFJWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhARehOdFxFh88+53TIp
dMnIWsW3dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aMsYFkDsQBDAGKsKQj
dWEfG+zU1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlksVylosMwePiWtv0Lr
FqVmaY4t0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAACAAgAsGB2R2w/2n22
AAAA3AEAADkAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNr
LXN0ZGVyci50eHRVVAkAAwwgUlYMIFJWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhAR
ehOdFxFh88+53TIpdMnIWsW3dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aM
sYFkDsQBDAGKsKQjdWEfG+zU1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlks
VylosMwePiWtv0LrFqVmaY4t0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAAC
AAgAsWB2R6sPcR6wAAAA7gAAADUAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWVtcHR5
LXZlcnNpb24tc3RkZXJyLnR4dFVUCQADDSBSVg0gUlZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7
v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFg
guflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mO
VdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQU
AAIACACxYHZHqw9xHrAAAADuAAAANAAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhw
YW5kLXF1b3RhLXN0ZGVyci50eHRVVAkAAw0gUlYNIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXg
e79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxx
YILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZ
jlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwME
FAACAAgAsWB2R6sPcR6wAAAA7gAAADkAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLXNl
dC1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAkAAw0gUlYNIFJWdXgLAAEE9QEAAAQUAAAAZc5B
C4JAEAXge79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZo
qRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1
KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN4
9gZQSwMEFAACAAgAsWB2R5pSl5vFAAAA4gEAAEUAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFi
YXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLXN0ZGVyci50eHRVVAkAAw0gUlYNIFJW
dXgLAAEE9QEAAAQUAAAA1Y9BS8NAFITv/RVzKgmoK0gR9iY1XkQKibbn3c2rLG7eCy+7iv/eROzJ
U4+9zTDfwEzTtrvW4o2dT4QsyEUZwogclAbi7BJcyXL96UIpA6pbsGQ4BqmK1iuzl1QGmsyjy840
h84cyD/HbDopGmhxW1EyL9KXNGNf5PuZ9G6i38oibsI4Vneb+xoWXiThr2TtibB2JD2KDruR+IH7
PWk8flcLfPWfbpZpWM/J65O1XdbI71jXq+bstxucxiJOSBI+qL+szz9QSwMEFAACAAgAsWB2R6sP
cR6wAAAA7gAAADkAHABzdG9yYWdlL3dlYnNxbC9wcml2YXRlLWJyb3dzaW5nLW5vcmVhZC1ub3dy
aXRlLXN0ZGVyci50eHRVVAkAAw0gUlYNIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQ
bRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNU
IXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fm
u4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgA
sWB2R6sPcR6wAAAA7gAAAEcAHABzdG9yYWdlL3dlYnNxbC9yZWFkLWFuZC13cml0ZS10cmFuc2Fj
dGlvbnMtZG9udC1ydW4tdG9nZXRoZXItc3RkZXJyLnR4dFVUCQADDSBSVg0gUlZ1eAsAAQT1AQAA
BBQAAABlzkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhY
h+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQ
XbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9
aZ17aekO83j2BlBLAwQUAAIACACxYHZHqw9xHrAAAADuAAAAQAAcAHN0b3JhZ2Uvd2Vic3FsL3Jl
YWQtdHJhbnNhY3Rpb25zLXJ1bm5pbmctY29uY3VycmVudGx5LXN0ZGVyci50eHRVVAkAAw4gUlYO
IFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1Gn
bvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03Kilz
VaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2
eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAsWB2R6sPcR6wAAAA7gAAACgAHABzdG9y
YWdlL3dlYnNxbC9zcWwtZGF0YS10eXBlcy1zdGRlcnIudHh0VVQJAAMOIFJWDiBSVnV4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTc
yFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5Rykwikd
WFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZj
cz1pnXtp6Q7zePYGUEsDBBQAAgAIALFgdkdsP9p9tgAAANwBAABBABwAc3RvcmFnZS93ZWJzcWwv
c3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAAw4g
UlYOIFJWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhARehOdFxFh88+53TIpdMnIWsW3
dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aMsYFkDsQBDAGKsKQjdWEfG+zU
1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlksVylosMwePiWtv0LrFqVmaY4t
0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAACAAgAsWB2R6sPcR6wAAAA7gAA
ADIAHABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJhY2stc3RkZXJyLnR4dFVU
CQADDiBSVg4gUlZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGd
kXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnah
w0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1L
l/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACACxYHZHbD/afbYAAADcAQAA
QwAcAHN0b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1zdWNjZXNzLWNhbGxiYWNrLWlzb2xhdGVkLXdv
cmxkLXN0ZGVyci50eHRVVAkAAw4gUlYOIFJWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2yg
VhARehOdFxFh88+53TIpdMnIWsW3dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP
76aMsYFkDsQBDAGKsKQjdWEfG+zU1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvb
NlksVylosMwePiWtv0LrFqVmaY4t0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwME
FAACAAgAsmB2R6sPcR6wAAAA7gAAACoAHABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNr
LXN0ZGVyci50eHRVVAkAAw8gUlYPIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRAR
7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQ
rYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tB
g2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAsmB2
R6sPcR6wAAAA7gAAAEMAHABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNrLXdoZW4tcGFn
ZS1kZWZlcnMtbG9hZGluZy1zdGRlcnIudHh0VVQJAAMPIFJWDyBSVnV4CwABBPUBAAAEFAAAAGXO
QQuCQBAF4Hu/Yk6hUG0QEewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAIm
aKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+0
9SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7z
ePYGUEsDBBQAAgAIALJgdkerD3EesAAAAO4AAAApABwAc3RvcmFnZS93ZWJzcWwvdGVzdC1hdXRo
b3JpemVyLXN0ZGVyci50eHRVVAkAAw8gUlYPIFJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79i
TqFQbRAR7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn
5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV
99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAAC
AAgAsmB2R6sPcR6wAAAA7gAAAD4AHABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1jYWxsYmFj
ay1leGNlcHRpb24tY3Jhc2gtc3RkZXJyLnR4dFVUCQADECBSVhAgUlZ1eAsAAQT1AQAABBQAAABl
zkELgkAQBeB7v2JOoVBtEBHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBAC
JmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRP
tPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO
83j2BlBLAwQUAAIACACyYHZHbD/afbYAAADcAQAAPQAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0
aW9uLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAAxAgUlYQIFJWdXgLAAEE
9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhARehOdFxFh88+53TIpdMnIWsW3dxM9+Qje8pHfB0mW
58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aMsYFkDsQBDAGKsKQjdWEfG+zU1gSjsmuhrmj3LqiC
o5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlksVylosMwePiWtv0LrFqVmaY4t0pqqC4qrn8mAJ786
G06Dcb857bQugji6wTgdZX/17QtQSwMEFAACAAgAsmB2R2w/2n22AAAA3AEAAEMAHABzdG9yYWdl
L3dlYnNxbC90cmFuc2FjdGlvbi1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIu
dHh0VVQJAAMQIFJWECBSVnV4CwABBPUBAAAEFAAAAOXPzwrCMAwG8LtPkZNsoFYQEXoTnRcRYfPP
ud0yKXTJyFrFt3cTPfkI3vKR3wdJlufHXMOZjPUIgSFEIWACR6VggxSMBxMDT++mjLGBZA7EAQwB
irCkI3VhHxvs1NYEo7Jroa5o9y6ogqOUOKQNC6oDV9H37IG26qU1Hb4rwzAr2zZZLFcpaLDMHj4l
rb9C6xalZmmOLdKaqguKq5/JgCe/OhtOg3G/Oe20LoI4usE4HWV/9e0LUEsDBBQAAgAIALNgdker
D3EesAAAAO4AAAA0ABwAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3ItY2FsbGJhY2st
c3RkZXJyLnR4dFVUCQADESBSVhEgUlZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEBHs
LcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCt
gdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GD
ZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACACzYHZH
bD/afbYAAADcAQAARQAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLXN1Y2Nlc3MtY2FsbGJh
Y2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQADESBSVhEgUlZ1eAsAAQT1AQAABBQAAADl
z88KwjAMBvC7T5GTbKBWEBF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEh
RCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR
9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzobToNxvznttC6C
OLrBOB1lf/XtC1BLAwQKAAAAAADvYHZHAAAAAAAAAAAAAAAABAAcAHN2Zy9VVAkAA4IgUlblIFJW
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAO9gdkcAAAAAAAAAAAAAAAALABwAc3ZnL2N1c3RvbS9V
VAkAA4IgUlblIFJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAO9gdkcQ/fNnfwAAAI0AAAAkABwA
c3ZnL2N1c3RvbS96ZXJvLWRhc2hhcnJheS1zdGRlcnIudHh0VVQJAAOCIFJWgiBSVnV4CwABBPUB
AAAEFAAAAA3IzQqCQBQG0H1P8b1A4phgDNFGo020qHbRYsoPEsZ74zraz9Pn8pyjTigKuMLnlV/l
4HtwrsyiPkJEM/avE6WlXYy8li5fVzdsdmZqW496X6skftKZ6dAJmzA8PTqZQuxatLMQzMLXIyRE
hiFBhWBkT0noxznuhKgsfzTNFn9QSwMECgAAAAAAyGB2RwAAAAAAAAAAAAAAAAsAHABzdmcvc3Ry
b2tlL1VUCQADOCBSVuUgUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAyGB2R2UDNHN/AAAAjQAA
ACUAHABzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0VVQJAAM4IFJWOCBSVnV4
CwABBPUBAAAEFAAAAA3IzQqCQBQG0H1P8b1A4ogIDdFGpU20qHbR4pYfJIx34jraz9Pn8pxjnFEU
cIXPK+8q8D06V2YhPiSgmYbXidrRLkZeS+fyzQ3b1izazqPe11ETP+nMdOiVjYxPj15nCX2HbhHE
TL4ekhAoY0JUgoEDNWGYlrgTGnX9o8Vs9QdQSwMEFAACAAgAHGF2RwlS1aY2wwAA65kTABkAHAB3
cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQJAAPXIFJWkB5SVnV4CwABBPUBAAAEFAAAAO39e3Pj
RrYvCv7fn0I3Yqq3fc+GRLz4UEyNx64qtz3HLleUyrv3iTlzFRCZkuACATYAqqSO++EnAb4pkMzX
ylwA03u3iqRE5C9Xrly53vn+w09//uP6G7lzZklU3mf51ClJURbX/8ji9OGizC7mBbmYZXl5EXqj
weBv7/m+MPzbrx9//qPx70lK8qisvpSSbxfvfryI04ur/8qS+ZQUV++jMrr68M+bq3+Su/8Zl8t/
fprHyeTqPbmbP1wl0Us2L+uHOTkp5klZXN1+m5W3Y5KXxRGcm3GjC68XDC/u4vLi882PF7M8fopK
cvGVvPztUuq///E//sfftl9/y+P1RLdGqaj1H8qmfDWO6DMvZ2T6H39zqv/+dpgIfxYVnHGW3scP
84oaWXpxn2dTdQtwlc1IWhTJ5fj+4W/vHsn460X5GJX0B7nIyb/m9FsX06gcP5Ki/qyIH9KonOfk
bzerVxfZ17+9o8+K7+NxRbH3pIzipLj+28XyvxuSx1Fy8XE+vSP59YV78V3v2f1+/ev/ipJ4Epcv
6w+q/z5m5cVPhJKCXNPXTxeed+GOrsPRtetRbnDDi3/8/uXVF368L0l+cU0RjI9/4WZ+9xcZl9c7
Txhn02mWfoym5GLvv7cXr9dm/dX/DnujJ/+CPJeUkHSBit2nLn/9U1TE44t39NdlHsUpXduLv+0P
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
VnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAGZfdkfzhioJMwAAADMAAAAYABgAAAAAAAEAAACk
ge4jAABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAUAA5AeUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABmX3ZHUSqXOQkFAACPBgAAGAAYAAAAAAABAAAApIFzJAAAX3dwdF9jZXJ0cy9sb2Nh
bGhvc3Qua2V5VVQFAAOQHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZl92RxfxfJnSCQAA
LhIAABgAGAAAAAAAAQAAAKSBzikAAF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADkB5SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAGZfdkessJTPAwAAAAMAAAARABgAAAAAAAEAAACkgfIz
AABfd3B0X2NlcnRzL3NlcmlhbFVUBQADkB5SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAGZf
dkftgY/WAwAAAAMAAAAVABgAAAAAAAEAAACkgUA0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUA
A5AeUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhYXZHfVaNXzo1AQAKWAsADgAYAAAAAAAB
AAAApIGSNAAAYWNjZXNzX2xvZy50eHRVVAUAA94gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAB2X3ZHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEUagEAY29tcG9zaXRpbmcvVVQFAAOvHlJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAbV92RwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B
WmoBAGNvbXBvc2l0aW5nL3JlZ2lvbnMvVVQFAAOdHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAbV92R3mTxN2sAAAAFAMAAEUAGAAAAAAAAQAAAKSBqGoBAGNvbXBvc2l0aW5nL3JlZ2lvbnMv
d2Via2l0LWZsb3ctcmVuZGVyZXItbGF5ZXItY29tcG9zaXRpbmctc3RkZXJyLnR4dFVUBQADnR5S
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHZfdkczOH9rwgAAAPIGAAA8ABgAAAAAAAEAAACk
gdNrAQBjb21wb3NpdGluZy9zaG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0
ZGVyci50eHRVVAUAA68eUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrX3ZHAAAAAAAAAAAA
AAAAEgAYAAAAAAAAABAA7UELbQEAY29tcG9zaXRpbmcvdmlkZW8vVVQFAAOZHlJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAa192RwVPIvbCAAAA8gYAADIAGAAAAAAAAQAAAKSBV20BAGNvbXBv
c2l0aW5nL3ZpZGVvL3ZpZGVvLWNsaXAtY2hhbmdlLXNyYy1zdGRlcnIudHh0VVQFAAOZHlJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABWB2RwAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1BhW4B
AGVkaXRpbmcvVVQFAAPJHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAEWB2RwAAAAAAAAAA
AAAAABMAGAAAAAAAAAAQAO1Bx24BAGVkaXRpbmcvcGFzdGVib2FyZC9VVAUAA+EeUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAFYHZHkTmEgu4AAACGAQAAMAAYAAAAAAABAAAApIEUbwEAZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2ZXMtdXJscy1zdGRlcnIudHh0VVQFAAPJHlJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACmB2R5PYTxLqAAAAgQEAAEQAGAAAAAAAAQAAAKSBbHAB
AGVkaXRpbmcvcGFzdGVib2FyZC9pbWctc3Jjc2V0LWNvcHktcGFzdGUtY2Fub25pY2FsaXphdGlv
bi1zdGRlcnIudHh0VVQFAAPUHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEGB2R5AFBMPg
AAAAVAEAACwAGAAAAAAAAQAAAKSB1HEBAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3BsdWdp
bi1zdGRlcnIudHh0VVQFAAPgHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEWB2R4eAYkjp
AAAAfwEAADIAGAAAAAAAAQAAAKSBGnMBAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3Njcmlw
dC14aHRtbC1zdGRlcnIudHh0VVQFAAPhHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI2F2
R5b2DTPTCgAA2UEAAA0AGAAAAAAAAQAAAKSBb3QBAGVycm9yX2xvZy50eHRVVAUAA+EgUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABrYHZHAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UGJfwEA
ZmFzdC9VVAUAA4kfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAgYHZHAAAAAAAAAAAAAAAA
DAAYAAAAAAAAABAA7UHIfwEAZmFzdC9jYW52YXMvVVQFAAP8HlJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAIGB2R5ranhOHAAAAGgEAACYAGAAAAAAAAQAAAKSBDoABAGZhc3QvY2FudmFzL2Nh
bnZhcy1saW5lRGFzaC1zdGRlcnIudHh0VVQFAAP8HlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAa2B2RwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B9YABAGZhc3QvY3NzL1VUBQADiR9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGtgdkdOS4yOsQAAAM4BAAA2ABgAAAAAAAEAAACkgTiB
AQBmYXN0L2Nzcy9wZXJzcGVjdGl2ZS1vcmlnaW4taW5pdGlhbC1pbmhlcml0LXN0ZGVyci50eHRV
VAUAA4kfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAATYHZHAAAAAAAAAAAAAAAACQAYAAAA
AAAAABAA7UFZggEAZmFzdC9kb20vVVQFAAPmHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
E2B2RwAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BnIIBAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvVVQFAAPmHlJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAE2B2R6sPcR6wAAAA7gAAAD8A
GAAAAAAAAQAAAKSB8IIBAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJh
Y2stZGVsaXZlcnktc3RkZXJyLnR4dFVUBQAD5h5SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ABlgdkcAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQRmEAQBmYXN0L2Zvcm1zL1VUBQAD8h5SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABlgdkcU1ILPewEAAPg5AAAzABgAAAAAAAEAAACkgV6E
AQBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLXN0ZGVyci50eHRVVAUA
A/IeUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABRYHZHAAAAAAAAAAAAAAAADAAYAAAAAAAA
ABAA7UFGhgEAZmFzdC9mcmFtZXMvVVQFAANaH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
UWB2R6sPcR6wAAAA7gAAAC8AGAAAAAAAAQAAAKSBjIYBAGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtc3RvcmFnZS1zdGRlcnIudHh0VVQFAANaH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAIWB2RwAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BpYcBAGZhc3QvaGlzdG9yeS9VVAUAA/0e
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhYHZHqw9xHrAAAADuAAAAQAAYAAAAAAABAAAA
pIHshwEAZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2ViZGF0YWJhc2Utbm8tdHJhbnNhY3Rpb24t
ZGItc3RkZXJyLnR4dFVUBQAD/R5SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACFgdkdsP9p9
tgAAANwBAABCABgAAAAAAAEAAACkgRaJAQBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRh
YmFzZS1wZW5kaW5nLXRyYW5zYWN0aW9uLXN0ZGVyci50eHRVVAUAA/0eUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAkYHZHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFIigEAZmFzdC9pbWFn
ZXMvVVQFAAMDH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJGB2RyGPvTgyAAAAMwAAACwA
GAAAAAAAAQAAAKSBjooBAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIu
dHh0VVQFAAMDH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAOWB2RwAAAAAAAAAAAAAAAAkA
GAAAAAAAAAAQAO1BJosBAGZhc3QveHNsL1VUBQADLR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADhgdkdy/WXyhQAAAOkAAAAlABgAAAAAAAEAAACkgWmLAQBmYXN0L3hzbC90cmFuc2Zvcm0t
eGhyLWRvYy1zdGRlcnIudHh0VVQFAAMrH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOGB2
R84JKAKNAAAA8AAAACcAGAAAAAAAAQAAAKSBTYwBAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11
cmktc3RkZXJyLnR4dFVUBQADKx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADhgdkfPj2YO
UAAAAKAAAAAkABgAAAAAAAEAAACkgTuNAQBmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVy
ci50eHRVVAUAAysfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA5YHZHgUp3rUsAAACsAAAA
NAAYAAAAAAABAAAApIHpjQEAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jh
c2gtc3RkZXJyLnR4dFVUBQADLR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACRhdkf1bgP1
dQEAAJ0CAAARABgAAAAAAAEAAACkgaKOAQBmdWxsX3Jlc3VsdHMuanNvblVUBQAD4yBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAADpgdkcAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQWKQAQBo
dHRwL1VUBQADMB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFVgdkcAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQaGQAQBodHRwL3Rlc3RzL1VUBQADYh9SVnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAD1gdkcAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQeaQAQBodHRwL3Rlc3RzL2NhY2hl
L1VUBQADNh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD1gdkd/GDUk7gAAAIkEAAAwABgA
AAAAAAEAAACkgTGRAQBodHRwL3Rlc3RzL2NhY2hlL21lbW9yeS1jYWNoZS1wcnVuaW5nLXN0ZGVy
ci50eHRVVAUAAzYfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA9YHZHhhpYz4QAAADAAAAA
PQAYAAAAAAABAAAApIGJkgEAaHR0cC90ZXN0cy9jYWNoZS9uZXR3b3JrLWVycm9yLWR1cmluZy1y
ZXZhbGlkYXRpb24tc3RkZXJyLnR4dFVUBQADNh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ADpgdkcAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQYSTAQBodHRwL3Rlc3RzL2NhbnZhcy9VVAUA
AzAfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA6YHZHAAAAAAAAAAAAAAAAGAAYAAAAAAAA
ABAA7UHQkwEAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvVVQFAAMwH1JWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAOmB2Rwjm8AvMAAAAkQIAADsAGAAAAAAAAQAAAKSBIpQBAGh0dHAvdGVzdHMv
Y2FudmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25mb3JtYW5jZS1zdGRlcnIudHh0VVQFAAMwH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAOmB2RwAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1B
Y5UBAGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvVVQFAAMwH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAOmB2R6TdOkODAAAAGgEAADsAGAAAAAAAAQAAAKSBtJUBAGh0dHAvdGVzdHMvZXZlbnRz
b3VyY2UvZXZlbnRzb3VyY2UtYmFkLW1pbWUtdHlwZS1zdGRlcnIudHh0VVQFAAMwH1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAASmB2RwAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BrJYBAGh0
dHAvdGVzdHMvbWVkaWEvVVQFAANMH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQGB2RwAA
AAAAAAAAAAAAABoAGAAAAAAAAAAQAO1B95YBAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQF
AAM4H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQGB2R5JnCYtQAQAAfwMAADkAGAAAAAAA
AQAAAKSBS5cBAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgt
c3RkZXJyLnR4dFVUBQADOB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAENgdkcAAAAAAAAA
AAAAAAAVABgAAAAAAAAAEADtQQ6ZAQBodHRwL3Rlc3RzL21lZGlhL2hscy9VVAUAAz4fUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABBYHZHWm0Iu7oBAADQBAAAQAAYAAAAAAABAAAApIFdmQEA
aHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3Rk
ZXJyLnR4dFVUBQADOR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEJgdkf42wBp0QEAAEUF
AAA6ABgAAAAAAAEAAACkgZGbAQBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tz
LWhhcy1hdWRpby1zdGRlcnIudHh0VVQFAAM7H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
QmB2R4M7613LAQAAnwUAAEEAGAAAAAAAAQAAAKSB1p0BAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hs
cy1hdWRpby10cmFja3MtbG9jYWxlLXNlbGVjdGlvbi1zdGRlcnIudHh0VVQFAAM8H1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAQ2B2R79lke7GAQAARQUAADAAGAAAAAAAAQAAAKSBHKABAGh0
dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3Mtc3RkZXJyLnR4dFVUBQADPR9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAENgdkewsDL6IAEAAN4DAAAsABgAAAAAAAEAAACkgUyi
AQBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADPR9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAENgdkco5sKARAEAALAHAAA9ABgAAAAAAAEAAACkgdKj
AQBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRl
cnIudHh0VVQFAAM+H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQGB2R6vOEhvSAAAAkQIA
ADIAGAAAAAAAAQAAAKSBjaUBAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtcmVmZXJl
ci1zdGRlcnIudHh0VVQFAAM4H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQmB2R8U2gjcw
AQAAjwMAACoAGAAAAAAAAQAAAKSBy6YBAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQt
c3RkZXJyLnR4dFVUBQADOx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAENgdkceE9GY7AAA
AMYDAAA5ABgAAAAAAAEAAACkgV+oAQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFt
LWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAUAAz4fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABSYHZHAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UG+qQEAaHR0cC90ZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvVVQFAANbH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAR2B2R/pcfyxNAQAA
lwQAAEIAGAAAAAAAAQAAAKSBFqoBAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUBQADRh9SVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEhgdkexvotxOwEAAHoDAABQABgAAAAAAAEAAACkgd+rAQBodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUt
c3RkZXJyLnR4dFVUBQADSB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEpgdkdhQ6h/PAEA
AHoDAABSABgAAAAAAAEAAACkgaStAQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAANLH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATmB2R+yUUp+KAAAAmwAAADkAGAAAAAAAAQAAAKSB
bK8BAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJy
LnR4dFVUBQADUx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFBgdkdkSszxpgAAAAcDAAA7
ABgAAAAAAAEAAACkgWmwAQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQADVx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFJg
dkevwD7UogAAANEBAABGABgAAAAAAAEAAACkgYSxAQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1zb3VyY2VidWZmZXItbW9kZS1zdGRlcnIudHh0VVQFAANbH1JWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQ2B2RzCb1KXsAAAAXwEAAC0AGAAAAAAAAQAAAKSBprIB
AGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQADPh9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAERgdkel0ukHvQAAAOwBAAAvABgAAAAAAAEAAACkgfmz
AQBodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUBQADPx9S
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAERgdkdCX2uGSgEAACgDAAAvABgAAAAAAAEAAACk
gR+1AQBodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUBQAD
QB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEFgdkcAAAAAAAAAAAAAAAAXABgAAAAAAAAA
EADtQdK2AQBodHRwL3Rlc3RzL21lZGlhL3RyYWNrL1VUBQADOh9SVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEFgdkcuYLB0gwAAAMAAAAA9ABgAAAAAAAEAAACkgSO3AQBodHRwL3Rlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbG93LWxvYWRpbmctMi1zdGRlcnIudHh0VVQFAAM6H1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARmB2Rwyc9cGiAgAAzgkAADYAGAAAAAAAAQAAAKSB
HbgBAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtYWN0dWFsLnR4
dFVUBQADQx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEZgdkd7y6kbBgEAABYCAAA0ABgA
AAAAAAEAAACkgS+7AQBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRh
LWRpZmYudHh0VVQFAANDH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARmB2R09rTsOhAgAA
eAkAADgAGAAAAAAAAQAAAKSBo7wBAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMt
bWV0YWRhdGEtZXhwZWN0ZWQudHh0VVQFAANDH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
RmB2R591vj4JCAAABB0AADwAGAAAAAAAAQAAAKSBtr8BAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2st
aW4tYmFuZC1obHMtbWV0YWRhdGEtcHJldHR5LWRpZmYuaHRtbFVUBQADQx9SVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEZgdkceTXiNDQEAANIDAAA2ABgAAAAAAAEAAACkgTXIAQBodHRwL3Rl
c3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA0MfUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABGYHZHtZvNB08BAAAQBAAAJgAYAAAAAAABAAAApIGy
yQEAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAUAA0MfUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABHYHZHsBlxN+AAAACsAgAALQAYAAAAAAABAAAApIFhywEAaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1lcnJvci1hYm9ydC1zdGRlcnIudHh0VVQFAANFH1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAR2B2Rx2GHy0XAQAA8QIAADYAGAAAAAAAAQAAAKSBqMwBAGh0
dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQAD
Rh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEdgdkfmcqOqwwAAACQDAAAsABgAAAAAAAEA
AACkgS/OAQBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQAD
Rh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEhgdkfLdQfb5QAAAMYDAAAvABgAAAAAAAEA
AACkgVjPAQBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVU
BQADRx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAElgdkdylSq/gwAAAMAAAAA9ABgAAAAA
AAEAAACkgabQAQBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktc3RhbGwtYmVmb3JlLW1ldGEt
ZGF0YS1zdGRlcnIudHh0VVQFAANKH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASmB2R0Vo
9j68AAAAkgEAACsAGAAAAAAAAQAAAKSBoNEBAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnkt
dXJsLXN0ZGVyci50eHRVVAUAA0sfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKYHZH5gZa
YUEBAADBBQAAKgAYAAAAAAABAAAApIHB0gEAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVj
dC1zdGRlcnIudHh0VVQFAANMH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASmB2R1ufBIzc
AAAAUgIAACsAGAAAAAAAAQAAAKSBZtQBAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50
LXN0ZGVyci50eHRVVAUAA0wfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrYHZHAAAAAAAA
AAAAAAAAEAAYAAAAAAAAABAA7UGn1QEAaHR0cC90ZXN0cy9taXNjL1VUBQADih9SVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAEtgdkdtTlRg6gAAAGYBAAAtABgAAAAAAAEAAACkgfHVAQBodHRw
L3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRVVAUAA04fUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABMYHZHpAPE88IAAAD+AAAAPwAYAAAAAAABAAAApIFC1wEAaHR0
cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1zdGRlcnIu
dHh0VVQFAANPH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATGB2Ry/qyy/DAAAA/gAAAFsA
GAAAAAAAAQAAAKSBfdgBAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5
c3RhdGVjaGFuZ2Utd2l0aC1nYy1hZnRlci12aWRlby1yZW1vdmFsLXN0ZGVyci50eHRVVAUAA08f
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrYHZHFTU1knoAAAC8AAAAKgAYAAAAAAABAAAA
pIHV2QEAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAOKH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAXGB2RwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B
s9oBAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQFAANvH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAARGB2RwAAAAAAAAAAAAAAAB8AGAAAAAAAAAAQAO1BAdsBAGh0dHAvdGVzdHMvc2VjdXJpdHkv
NDAxLWxvZ291dC9VVAUAAz8fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEYHZHJ5ad3IkA
AACAAQAANAAYAAAAAAABAAAApIFa2wEAaHR0cC90ZXN0cy9zZWN1cml0eS80MDEtbG9nb3V0LzQw
MS1sb2dvdXQtc3RkZXJyLnR4dFVUBQADPx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFBg
dkcAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQVHcAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9VVAUAA1cfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABGYHZH
AAAAAAAAAAAAAAAAPQAYAAAAAAAAABAA7UG13AEAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL1VUBQADRB9SVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAEVgdkdNSpA/1gAAAPgBAABTABgAAAAAAAEAAACkgSzdAQBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ct
YXVkaW8tc3RkZXJyLnR4dFVUBQADQR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEZgdkfD
tuxqugAAAJIBAABTABgAAAAAAAEAAACkgY/eAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8tc3RkZXJyLnR4dFVU
BQADQx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEZgdkfXsHXZggAAAMAAAABrABgAAAAA
AAEAAACkgdbfAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2Vy
QWdlbnRTaGFkb3dET00vZGVmYXVsdC1zcmMtb2JqZWN0LWRhdGEtdXJsLWFsbG93ZWQtc3RkZXJy
LnR4dFVUBQADRB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFBgdkdjqqxsggAAAKgAAABA
ABgAAAAAAAEAAACkgf3gAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAANXH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAUGB2R2OqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSB+eEBAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVy
ci50eHRVVAUAA1cfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABLYHZHbD/afbYAAADcAQAA
OgAYAAAAAAABAAAApIEH4wEAaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td2Vic3Fs
LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADTh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE5g
dkcSGtoBygAAAN0BAAA9ABgAAAAAAAEAAACkgTHkAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2Fs
LXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQFAANTH1JWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgATmB2RxrvxlKDAAAAwAAAADoAGAAAAAAAAQAAAKSBcuUBAGh0dHAvdGVz
dHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3JjLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAUAA1Qf
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABHYHZHAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA
7UFp5gEAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvVVQFAANGH1JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAR2B2R8B11nj3AAAAiQQAAE4AGAAAAAAAAQAAAKSBxOYBAGh0dHAv
dGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4t
ZnJhbWUtc3RkZXJyLnR4dFVUBQADRh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEdgdkea
tVDxggAAAMAAAABCABgAAAAAAAEAAACkgUPoAQBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29u
dGVudC9pbnNlY3VyZS1jc3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAUAA0YfUlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABWYHZHwRZcn7QAAAAnAQAAPwAYAAAAAAABAAAApIFB6QEAaHR0cC90
ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXItY3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0
VVQFAANkH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXGB2R2BLZhCRAAAA+wEAAEUAGAAA
AAAAAQAAAKSBbuoBAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1lbnQt
c2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADbx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAEhgdkcAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQX7rAQBodHRwL3Rlc3RzL3N0b3JhZ2Uv
VVQFAANIH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASGB2R6sPcR6wAAAA7gAAAEUAGAAA
AAAAAQAAAKSBy+sBAGh0dHAvdGVzdHMvc3RvcmFnZS9jYWxsYmFja3MtYXJlLWNhbGxlZC1pbi1j
b3JyZWN0LWNvbnRleHQtc3RkZXJyLnR4dFVUBQADSB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAFVgdkcAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQfrsAQBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L1VUBQADYh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFVgdkd+f+0XsQAAAAEB
AABBABgAAAAAAAEAAACkgU7tAQBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1j
b250ZW50LXR5cGUtYXN5bmMtc3RkZXJyLnR4dFVUBQADYh9SVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFVgdkd+f+0XsQAAAAEBAABAABgAAAAAAAEAAACkgXruAQBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtc3luYy1zdGRlcnIudHh0VVQFAANiH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHGF2RzUTxpqZBQAAERAAAAoAGAAAAAAAAQAAAKSB
pe8BAGh0dHBkLmNvbmZVVAUAA9ggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABLYHZHAAAA
AAAAAAAAAAAADQAYAAAAAAAAABAA7UGC9QEAaWV0ZXN0Y2VudGVyL1VUBQADTR9SVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAEtgdkcAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQcn1AQBpZXRl
c3RjZW50ZXIvY3NzMy9VVAUAA00fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABLYHZHAAAA
AAAAAAAAAAAAGgAYAAAAAAAAABAA7UEV9gEAaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9VVAUA
A00fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABLYHZH1c7HvIMAAADAAAAAPwAYAAAAAAAB
AAAApIFp9gEAaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4Ym94LWFsaWduLWJhc2VsaW5l
LTAwMS1zdGRlcnIudHh0VVQFAANNH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZWB2RwAA
AAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BZfcBAGltcG9ydGVkL1VUBQADfR9SVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAGVgdkcAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQaj3AQBpbXBvcnRl
ZC93M2MvVVQFAAN9H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZWB2RwAAAAAAAAAAAAAA
ACAAGAAAAAAAAAAQAO1B7/cBAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQFAAN9
H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZWB2RwAAAAAAAAAAAAAAACUAGAAAAAAAAAAQ
AO1BSfgBAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9VVAUAA30fUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABlYHZHAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UGo+AEA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAUAA30fUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABmYHZHAAAAAAAAAAAAAAAAQAAYAAAAAAAAABAA7UER
+QEAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L1VUBQADgB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIBgdkcAAAAAAAAA
AAAAAABPABgAAAAAAAAAEADtQYv5AQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQFAAOwH1JWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZWB2R1IfYfXVAAAA1wQAAGcAGAAAAAAAAQAAAKSBFPoB
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAUAA30fUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmYHZHKrE/y/EAAABkBQAAcgAYAAAAAAABAAAApIGK
+wEAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQFAAN/H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZmB2R+sBrKryAAAADAYAAG4A
GAAAAAAAAQAAAKSBJ/0BAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3Vn
aC1zdGRlcnIudHh0VVQFAAOAH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZ2B2R80AKnbq
AAAApAQAAHkAGAAAAAAAAQAAAKSBwf4BAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA4IfUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABoYHZHom+vYukAAACkBAAAdQAYAAAAAAABAAAApIFeAAIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAODH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaWB2Ryny3SnrAAAApAQAAG4AGAAAAAAAAQAAAKSB
9gECAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0
VVQFAAOFH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaWB2R39xfanrAAAApAQAAHkAGAAA
AAAAAQAAAKSBiQMCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YV9u
b2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA4YfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABq
YHZHW4EUZesAAACkBAAAaQAYAAAAAAABAAAApIEnBQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X2xvYWRzdGFydC1zdGRlcnIudHh0VVQFAAOIH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAa2B2R2sDhu3uAAAApAQAAHQAGAAAAAAAAQAAAKSBtQYCAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOJH1JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAbGB2R88UXK7yAAAAZgYAAHwAGAAAAAAAAQAAAKSBUQgCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2NhbnBsYXl0aHJvdWdoLXN0ZGVy
ci50eHRVVAUAA4sfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABtYHZHMFTH1/EAAABmBgAA
dQAYAAAAAAABAAAApIH5CQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBs
YXlfcGxheWluZy1zdGRlcnIudHh0VVQFAAONH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
bmB2R2/mAXrxAAAAZgYAAH8AGAAAAAAAAQAAAKSBmQsCAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9vcmRlcl9sb2FkZWRtZXRhZGF0YV9sb2FkZWRkYXRhLXN0ZGVyci50eHRVVAUAA48fUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABuYHZHdroQdO0AAAAMBgAAeAAYAAAAAAABAAAApIFD
DQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRzdGFydF9wcm9ncmVzcy1z
dGRlcnIudHh0VVQFAAOQH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAb2B2R6mhLvz0AAAA
DAYAAGUAGAAAAAAAAQAAAKSB4g4CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVzZS1z
dGRlcnIudHh0VVQFAAOSH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcGB2R85b02noAAAA
pAQAAHAAGAAAAAAAAQAAAKSBdRACAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVzZV9u
b2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5QfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABx
YHZHq16auvUAAABmBgAAZAAYAAAAAAABAAAApIEHEgIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X3BsYXktc3RkZXJyLnR4dFVUBQADlR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHJg
dkeSmf3z6wAAAKQEAABvABgAAAAAAAEAAACkgZoTAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5cfUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAByYHZHGunuPO0AAAAMBgAAZwAYAAAAAAABAAAApIEuFQIAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADmB9SVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHNgdkftV/t98QAAAGYGAAByABgAAAAAAAEAAACkgbwWAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5ofUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAB0YHZH4VB6bfQAAAAMBgAAaAAYAAAAAAABAAAApIFZGAIA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA5wfUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1YHZHpFPjyeoAAACkBAAAcwAYAAAAAAABAAAApIHv
GQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzX25vYXV0b3BsYXktc3RkZXJy
LnR4dFVUBQADnR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHZgdkfW9eNz7AAAAAwGAABq
ABgAAAAAAAEAAACkgYYbAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZS1z
dGRlcnIudHh0VVQFAAOfH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAd2B2R7H2N67uAAAA
DAYAAHUAGAAAAAAAAQAAAKSBFh0CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF90aW1ldXBk
YXRlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADoR9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAHdgdkcsjd4UgwAAAMAAAABsABgAAAAAAAEAAACkgbMeAgBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAUAA6EfUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABlYHZHAAAAAAAAAAAAAAAAWgAYAAAAAAAAABAA7UHcHwIAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2ludGVyZmFjZXMvVVQFAAN9H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
ZWB2RwAAAAAAAAAAAAAAAGQAGAAAAAAAAAAQAO1BcCACAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9p
bnRlcmZhY2VzL1RleHRUcmFjay9VVAUAA30fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABl
YHZHZT5ii8oAAADdAQAAeQAYAAAAAAABAAAApIEOIQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2lu
dGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUBQADfR9SVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGVgdkczQqgfhAAAAMAAAAB1ABgAAAAAAAEAAACkgYsiAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWRkQ3VlLXN0ZGVyci50eHRV
VAUAA30fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB4YHZHVIqgS94AAADkAwAAdwAYAAAA
AAABAAAApIG+IwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9h
ZHN0YXJ0LXN0ZGVyci50eHRVVAUAA6MfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB4YHZH
Gg6Q4oMAAADAAAAAbgAYAAAAAAABAAAApIFNJQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdv
cmtTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUAA6QfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAB5YHZHR/pD3OcAAACmBQAAcgAYAAAAAAABAAAApIF4JgIAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3BhdXNlZF9mYWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQFAAOlH1JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAemB2R57LZPDrAAAApAQAAHIAGAAAAAAAAQAAAKSBCygCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVUBQAD
px9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGZgdkcAAAAAAAAAAAAAAABqABgAAAAAAAAA
EADtQaIpAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2Uv
VVQFAAN/H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZWB2R4Qa4NfKAAAANwIAAJEAGAAA
AAAAAQAAAKSBRioCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNv
dXJjZS9wYXVzZS1tb3ZlLXRvLW90aGVyLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA34fUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABmYHZHKrqvjygBAABvAwAAjwAYAAAAAAABAAAApIHbKwIA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1v
dmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA38fUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABmYHZHohoydCcBAAAVAwAAjwAYAAAAAAABAAAApIHMLQIAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92ZS1mcm9tLWRvY3Vt
ZW50LXN0ZGVyci50eHRVVAUAA38fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmYHZHliC9
GYMAAADAAAAAgQAYAAAAAAABAAAApIG8LwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmct
dGhlLW1lZGlhLXJlc291cmNlL3BsYXliYWNrUmF0ZS1zdGRlcnIudHh0VVQFAAN/H1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAemB2R9Y6c1mDAAAAwAAAAHgAGAAAAAAAAQAAAKSB+jACAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9wcmVsb2FkX3JlZmxlY3RzX25vbmVfYXV0b3BsYXktc3RkZXJy
LnR4dFVUBQADpx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHtgdkcGbS355gAAAEwFAABz
ABgAAAAAAAEAAACkgS8yAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdf
Y2FucGxheS1zdGRlcnIudHh0VVQFAAOpH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe2B2
R7KahL/zAAAAwAYAAHoAGAAAAAAAAQAAAKSBwjMCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFk
eVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAOqH1JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAfGB2R5B1o8jwAAAAZgYAAHYAGAAAAAAAAQAAAKSBaTUCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50eHRV
VAUAA6wfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9YHZHSY5Jzu4AAACkBAAAegAYAAAA
AAABAAAApIEJNwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRl
ZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA64fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACA
YHZHfc8jhPMAAABmBgAAcwAYAAAAAAABAAAApIGrOAIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3Jl
YWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUBQADrx9SVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAIBgdkc793f/ggAAAMAAAABsABgAAAAAAAEAAACkgUs6AgBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAUAA7AfUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACAYHZHqyYf69UAAADCAgAAhAAYAAAAAAABAAAApIFzOwIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3NyY19yZWZsZWN0c19hdHRyaWJ1dGVfbm90X3NvdXJjZV9lbGVt
ZW50cy1zdGRlcnIudHh0VVQFAAOwH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAZmB2RwAA
AAAAAAAAAAAAAFUAGAAAAAAAAAAQAO1BBj0CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay9V
VAUAA38fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABmYHZHAAAAAAAAAAAAAAAAYwAYAAAA
AAAAABAA7UGVPQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvVVQF
AAN/H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZmB2R3Om0FikAAAAOAEAAIIAGAAAAAAA
AQAAAKSBMj4CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNr
LWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50eHRVVAUAA38fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAABmYHZHAAAAAAAAAAAAAAAAUQAYAAAAAAAAABAA7UGSPwIAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hcmVhLWVs
ZW1lbnQvVVQFAAN/H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZmB2R5Dsz+GDAAAAwAAA
AGwAGAAAAAAAAQAAAKSBHUACAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXJlYS1lbGVtZW50L2FyZWEtc3RyaW5naWZp
ZXItc3RkZXJyLnR4dFVUBQADfx9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGZgdkcAAAAA
AAAAAAAAAABSABgAAAAAAAAAEADtQUZBAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQFAAOA
H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZmB2R8wGWSzeAAAA0AIAAG4AGAAAAAAAAQAA
AKSB0kECAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIu
dHh0VVQFAAOAH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAeWB2RwAAAAAAAAAAAAAAAAMA
GAAAAAAAAAAQAO1BWEMCAGpzL1VUBQADph9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALJg
dkcAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQZVDAgBqcy9kb20vVVQFAAMPIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAeWB2R6sPcR6wAAAA7gAAADUAGAAAAAAAAQAAAKSB1kMCAGpzL2Rv
bS9jYWxsYmFjay1mdW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC1zdGRlcnIudHh0VVQFAAOmH1JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmGB2R6sPcR6wAAAA7gAAADAAGAAAAAAAAQAAAKSB
9UQCAGpzL2RvbS9leGNlcHRpb25zLXRocm93bi1pbi1jYWxsYmFja3Mtc3RkZXJyLnR4dFVUBQAD
3x9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALJgdkccDghOxTEAAH5QAwAsABgAAAAAAAEA
AACkgQ9GAgBqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktYWN0dWFsLnR4dFVUBQAD
DyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALJgdkeGjrTbbwEAAAsEAAAqABgAAAAAAAEA
AACkgTp4AgBqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktZGlmZi50eHRVVAUAAw8g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACyYHZHdmV7U3MxAACgTwMALgAYAAAAAAABAAAA
pIENegIAanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWV4cGVjdGVkLnR4dFVUBQAD
DyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALJgdkd9v8ZktAgAAAEgAAAyABgAAAAAAAEA
AACkgeirAgBqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktcHJldHR5LWRpZmYuaHRt
bFVUBQADDyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOlgdkcAAAAAAAAAAAAAAAAGABgA
AAAAAAAAEADtQQi1AgBtZWRpYS9VVAUAA3UgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB6
YHZHRtQco+gAAACdAgAAHwAYAAAAAAABAAAApIFItQIAbWVkaWEvYXVkaW8tZGF0YS11cmwtc3Rk
ZXJyLnR4dFVUBQADqB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIZgdkcAAAAAAAAAAAAA
AAATABgAAAAAAAAAEADtQYm2AgBtZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAO8H1JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAhmB2R4F9A4WLAAAAmwAAAEgAGAAAAAAAAQAAAKSB1rYCAG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc3RhbGxlZC1ob2xkcy1zbGVlcC1hc3NlcnRpb24t
c3RkZXJyLnR4dFVUBQADvB9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJtgdkduHlg5xgAA
ACQDAAAoABgAAAAAAAEAAACkgeO3AgBtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRl
cnIudHh0VVQFAAPlH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm2B2R+mvZlOLAAAAgAEA
ADAAGAAAAAAAAQAAAKSBC7kCAG1lZGlhL3N2Zy1hcy1pbWFnZS13aXRoLW1lZGlhLWJsb2NrZWQt
c3RkZXJyLnR4dFVUBQAD5R9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALxgdkcAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQQC6AgBtZWRpYS90cmFjay9VVAUAAyMgUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAC7YHZHaZTRjfAAAAB3AQAAKgAYAAAAAAABAAAApIFGugIAbWVkaWEvdHJh
Y2svdHJhY2staW4tYmFuZC1zdHlsZS1hY3R1YWwudHh0VVQFAAMiIFJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAu2B2R3FDv0ibAQAA+gIAACgAGAAAAAAAAQAAAKSBmrsCAG1lZGlhL3RyYWNr
L3RyYWNrLWluLWJhbmQtc3R5bGUtZGlmZi50eHRVVAUAAyIgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAC7YHZHDPrk6jYBAAAzAgAALAAYAAAAAAABAAAApIGXvQIAbWVkaWEvdHJhY2svdHJh
Y2staW4tYmFuZC1zdHlsZS1leHBlY3RlZC50eHRVVAUAAyIgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAC8YHZH3n20aNAIAADVIgAAMAAYAAAAAAABAAAApIEzvwIAbWVkaWEvdHJhY2svdHJh
Y2staW4tYmFuZC1zdHlsZS1wcmV0dHktZGlmZi5odG1sVVQFAAMjIFJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAnGB2R/UOq3yRAAAAvQAAACEAGAAAAAAAAQAAAKSBbcgCAG1lZGlhL3Vuc3Vw
cG9ydGVkLXJ0c3Atc3RkZXJyLnR4dFVUBQAD5x9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ANFgdkfgbU6ZWwAAAG8AAAAmABgAAAAAAAEAAACkgVnJAgBtZWRpYS92aWRlby1wbGF5ZWQtcmFu
Z2VzLTEtc3RkZXJyLnR4dFVUBQADSiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOhgdkeo
cwGdvQAAAJIBAAAfABgAAAAAAAEAAACkgRTKAgBtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIu
dHh0VVQFAAN0IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6WB2R0dAIIaEAAAAwAAAACEA
GAAAAAAAAQAAAKSBKssCAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADdSBS
VnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIlgdkcAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADt
QQnMAgBwbHVnaW5zL1VUBQADwh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIlgdkf+Chmk
rwAAAPEAAAAvABgAAAAAAAEAAACkgUvMAgBwbHVnaW5zL21vdXNlLWNsaWNrLWlmcmFtZS10by1w
bHVnaW4tc3RkZXJyLnR4dFVUBQADwh9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGFgdkc2
BcaTXgIAAJUQAAArABgAAAAAAAEAAACkgWPNAgBweXdlYnNvY2tldC53cy5sb2ctMjJOb3YyMDE1
LTExNTkxMS1lcnIudHh0VVQFAAN2H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUGB2R5Rk
xy8DAQAAjwIAACsAGAAAAAAAAQAAAKSBJtACAHB5d2Vic29ja2V0LndzLmxvZy0yMk5vdjIwMTUt
MTE1OTExLW91dC50eHRVVAUAA1gfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkYXZH/UFT
hxEnAADKqAAADAAYAAAAAAABAAAApIGO0QIAcmVzdWx0cy5odG1sVVQFAAPjIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAImF2RwAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1B5fgCAHJldHJp
ZXMvVVQFAAPfIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAIWF2RwAAAAAAAAAAAAAAAA0A
GAAAAAAAAAAQAO1BJ/kCAHJldHJpZXMvaHR0cC9VVAUAA90gUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAAhYXZHAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UFu+QIAcmV0cmllcy9odHRwL3Rl
c3RzL1VUBQAD3SBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACFhdkcAAAAAAAAAAAAAAAAZ
ABgAAAAAAAAAEADtQbv5AgByZXRyaWVzL2h0dHAvdGVzdHMvbWVkaWEvVVQFAAPdIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAIWF2R/ctCTkdAQAAwwMAAD4AGAAAAAAAAQAAAKSBDvoCAHJl
dHJpZXMvaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1zdGRlcnIu
dHh0VVQFAAPdIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAImF2RwAAAAAAAAAAAAAAAAsA
GAAAAAAAAAAQAO1Bo/sCAHJldHJpZXMvanMvVVQFAAPfIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAImF2RwAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1B6PsCAHJldHJpZXMvanMvZG9tL1VU
BQAD3yBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACJhdkccDghOxTEAAH5QAwA0ABgAAAAA
AAEAAACkgTH8AgByZXRyaWVzL2pzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1hY3R1
YWwudHh0VVQFAAPfIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAImF2RyQs1f9zAQAAGwQA
ADIAGAAAAAAAAQAAAKSBZC4DAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnR5LWRpZmYudHh0VVQFAAPfIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAImF2R3Zle1Nz
MQAAoE8DADYAGAAAAAAAAQAAAKSBQzADAHJldHJpZXMvanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFz
LXByb3BlcnR5LWV4cGVjdGVkLnR4dFVUBQAD3yBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACJhdkfIKKnjuggAAAkgAAA6ABgAAAAAAAEAAACkgSZiAwByZXRyaWVzL2pzL2RvbS9yZXNlcnZl
ZC13b3Jkcy1hcy1wcm9wZXJ0eS1wcmV0dHktZGlmZi5odG1sVVQFAAPfIFJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAImF2R0uRlfKDAAAAwAAAADQAGAAAAAAAAQAAAKSBVGsDAHJldHJpZXMv
anMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LXN0ZGVyci50eHRVVAUAA98gUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAkYXZHgXqAejggCAArnysACgAYAAAAAAABAAAApIFFbAMA
c3RhdHMuanNvblVUBQAD4yBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK5gdkcAAAAAAAAA
AAAAAAAIABgAAAAAAAAAEADtQcGMCwBzdG9yYWdlL1VUBQADCCBSVnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAALNgdkcAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQQONCwBzdG9yYWdlL3dlYnNx
bC9VVAUAAxEgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACuYHZHqw9xHrAAAADuAAAALQAY
AAAAAAABAAAApIFMjQsAc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS1zdGRlcnIu
dHh0VVQFAAMIIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArmB2R6sPcR6wAAAA7gAAADUA
GAAAAAAAAQAAAKSBY44LAHN0b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVz
ZS1zdGRlcnIudHh0VVQFAAMIIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArmB2R6sPcR6w
AAAA7gAAAEYAGAAAAAAAAQAAAKSBgo8LAHN0b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLW5v
LWNyYXNoLW9uLXByZWZsaWdodC1mYWlsdXJlLXN0ZGVyci50eHRVVAUAAwggUlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACuYHZHbD/afbYAAADcAQAAKAAYAAAAAAABAAAApIGykAsAc3RvcmFn
ZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24tc3RkZXJyLnR4dFVUBQADCCBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAK9gdkerD3EesAAAAO4AAAAyABgAAAAAAAEAAACkgcqRCwBzdG9yYWdlL3dl
YnNxbC9jbG9zZS1kdXJpbmctc3RyZXNzLXRlc3Qtc3RkZXJyLnR4dFVUBQADCSBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAK9gdkerD3EesAAAAO4AAAA0ABgAAAAAAAEAAACkgeaSCwBzdG9y
YWdlL3dlYnNxbC9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC1zdGRlcnIudHh0VVQFAAMJIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAr2B2R6sPcR6wAAAA7gAAACkAGAAAAAAAAQAAAKSB
BJQLAHN0b3JhZ2Uvd2Vic3FsL2VtcHR5LXN0YXRlbWVudC1zdGRlcnIudHh0VVQFAAMJIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAr2B2R6sPcR6wAAAA7gAAACoAGAAAAAAAAQAAAKSBF5UL
AHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGUtc3FsLWFyZ3Mtc3RkZXJyLnR4dFVUBQADCSBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAK9gdkerD3EesAAAAO4AAAAyABgAAAAAAAEAAACkgSuWCwBz
dG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1yb3dzQWZmZWN0ZWQtc3RkZXJyLnR4dFVUBQADCiBS
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK9gdkerD3EesAAAAO4AAAA/ABgAAAAAAAEAAACk
gUeXCwBzdG9yYWdlL3dlYnNxbC9leGVjdXRlc3FsLWFjY2VwdHMtb25seS1vbmUtc3RhdGVtZW50
LXN0ZGVyci50eHRVVAUAAwogUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACwYHZHqw9xHrAA
AADuAAAALgAYAAAAAAABAAAApIFwmAsAc3RvcmFnZS93ZWJzcWwvaGFzaC1jaGFuZ2Utd2l0aC14
aHItc3RkZXJyLnR4dFVUBQADDCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALBgdkdsP9p9
tgAAANwBAAA/ABgAAAAAAAEAAACkgYiZCwBzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS1kYXRhYmFz
ZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLXN0ZGVyci50eHRVVAUAAwwgUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACwYHZHqw9xHrAAAADuAAAARAAYAAAAAAABAAAApIG3mgsAc3RvcmFnZS93ZWJz
cWwvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLW9uLWRpZmZlcmVudC1oYW5kbGVzLXN0ZGVyci50eHRV
VAUAAwwgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACwYHZHqw9xHrAAAADuAAAALwAYAAAA
AAABAAAApIHlmwsAc3RvcmFnZS93ZWJzcWwvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLXN0ZGVyci50
eHRVVAUAAwwgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACwYHZHqw9xHrAAAADuAAAAKAAY
AAAAAAABAAAApIH+nAsAc3RvcmFnZS93ZWJzcWwvbnVsbC1jYWxsYmFja3Mtc3RkZXJyLnR4dFVU
BQADDCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALBgdkdsP9p9tgAAANwBAABIABgAAAAA
AAEAAACkgRCeCwBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNr
LWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAAwwgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACwYHZHbD/afbYAAADcAQAAOQAYAAAAAAABAAAApIFInwsAc3RvcmFnZS93ZWJzcWwvb3Bl
bi1kYXRhYmFzZS1jcmVhdGlvbi1jYWxsYmFjay1zdGRlcnIudHh0VVQFAAMMIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAsWB2R6sPcR6wAAAA7gAAADUAGAAAAAAAAQAAAKSBcaALAHN0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZW1wdHktdmVyc2lvbi1zdGRlcnIudHh0VVQFAAMNIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsWB2R6sPcR6wAAAA7gAAADQAGAAAAAAAAQAAAKSB
kKELAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLXN0ZGVyci50eHRV
VAUAAw0gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACxYHZHqw9xHrAAAADuAAAAOQAYAAAA
AAABAAAApIGuogsAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1zZXQtZW1wdHktdmVyc2lv
bi1zdGRlcnIudHh0VVQFAAMNIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsWB2R5pSl5vF
AAAA4gEAAEUAGAAAAAAAAQAAAKSB0aMLAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utd2hp
bGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADDSBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIALFgdkerD3EesAAAAO4AAAA5ABgAAAAAAAEAAACkgRWlCwBzdG9yYWdl
L3dlYnNxbC9wcml2YXRlLWJyb3dzaW5nLW5vcmVhZC1ub3dyaXRlLXN0ZGVyci50eHRVVAUAAw0g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACxYHZHqw9xHrAAAADuAAAARwAYAAAAAAABAAAA
pIE4pgsAc3RvcmFnZS93ZWJzcWwvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVu
LXRvZ2V0aGVyLXN0ZGVyci50eHRVVAUAAw0gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACx
YHZHqw9xHrAAAADuAAAAQAAYAAAAAAABAAAApIFppwsAc3RvcmFnZS93ZWJzcWwvcmVhZC10cmFu
c2FjdGlvbnMtcnVubmluZy1jb25jdXJyZW50bHktc3RkZXJyLnR4dFVUBQADDiBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIALFgdkerD3EesAAAAO4AAAAoABgAAAAAAAEAAACkgZOoCwBzdG9y
YWdlL3dlYnNxbC9zcWwtZGF0YS10eXBlcy1zdGRlcnIudHh0VVQFAAMOIFJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAsWB2R2w/2n22AAAA3AEAAEEAGAAAAAAAAQAAAKSBpakLAHN0b3JhZ2Uv
d2Vic3FsL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0
VVQFAAMOIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsWB2R6sPcR6wAAAA7gAAADIAGAAA
AAAAAQAAAKSB1qoLAHN0b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1zdGRl
cnIudHh0VVQFAAMOIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsWB2R2w/2n22AAAA3AEA
AEMAGAAAAAAAAQAAAKSB8qsLAHN0b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1zdWNjZXNzLWNhbGxi
YWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAAw4gUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACyYHZHqw9xHrAAAADuAAAAKgAYAAAAAAABAAAApIElrQsAc3RvcmFnZS93ZWJzcWwv
c3VjY2Vzcy1jYWxsYmFjay1zdGRlcnIudHh0VVQFAAMPIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAsmB2R6sPcR6wAAAA7gAAAEMAGAAAAAAAAQAAAKSBOa4LAHN0b3JhZ2Uvd2Vic3FsL3N1
Y2Nlc3MtY2FsbGJhY2std2hlbi1wYWdlLWRlZmVycy1sb2FkaW5nLXN0ZGVyci50eHRVVAUAAw8g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACyYHZHqw9xHrAAAADuAAAAKQAYAAAAAAABAAAA
pIFmrwsAc3RvcmFnZS93ZWJzcWwvdGVzdC1hdXRob3JpemVyLXN0ZGVyci50eHRVVAUAAw8gUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACyYHZHqw9xHrAAAADuAAAAPgAYAAAAAAABAAAApIF5
sAsAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tY2FsbGJhY2stZXhjZXB0aW9uLWNyYXNoLXN0
ZGVyci50eHRVVAUAAxAgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACyYHZHbD/afbYAAADc
AQAAPQAYAAAAAAABAAAApIGhsQsAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tY2FsbGJhY2st
aXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQADECBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIALJgdkdsP9p9tgAAANwBAABDABgAAAAAAAEAAACkgc6yCwBzdG9yYWdlL3dlYnNxbC90cmFu
c2FjdGlvbi1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAAMQIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAs2B2R6sPcR6wAAAA7gAAADQAGAAAAAAAAQAAAKSB
AbQLAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNhbGxiYWNrLXN0ZGVyci50eHRV
VAUAAxEgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACzYHZHbD/afbYAAADcAQAARQAYAAAA
AAABAAAApIEftQsAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tc3VjY2Vzcy1jYWxsYmFjay1p
c29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAAMRIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAA72B2RwAAAAAAAAAAAAAAAAQAGAAAAAAAAAAQAO1BVLYLAHN2Zy9VVAUAA4IgUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADvYHZHAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGStgsAc3Zn
L2N1c3RvbS9VVAUAA4IgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADvYHZHEP3zZ38AAACN
AAAAJAAYAAAAAAABAAAApIHXtgsAc3ZnL2N1c3RvbS96ZXJvLWRhc2hhcnJheS1zdGRlcnIudHh0
VVQFAAOCIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAyGB2RwAAAAAAAAAAAAAAAAsAGAAA
AAAAAAAQAO1BtLcLAHN2Zy9zdHJva2UvVVQFAAM4IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAyGB2R2UDNHN/AAAAjQAAACUAGAAAAAAAAQAAAKSB+bcLAHN2Zy9zdHJva2UvemVyby13aWR0
aC1oYW5nLXN0ZGVyci50eHRVVAUAAzggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcYXZH
CVLVpjbDAADrmRMAGQAYAAAAAAABAAAApIHXuAsAd3B0d2tfcHJvY2Vzc19sb2cub3V0LnR4dFVU
BQAD1yBSVnV4CwABBPUBAAAEFAAAAFBLBQYAAAAAFAEUARiHAABgfAwAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>266065</attachid>
            <date>2015-11-22 12:48:43 -0800</date>
            <delta_ts>2015-11-22 12:48:43 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews105 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>982376</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
CwABBPUBAAAEFAAAAFBLAwQUAAIACACkYHZHgPHNoOQAAABSAwAALgAcAGNvbXBvc2l0aW5nL2dl
b21ldHJ5L291dGxpbmUtY2hhbmdlLXN0ZGVyci50eHRVVAkAA/MfUlbzH1JWdXgLAAEE9QEAAAQU
AAAA7ZE9T8MwEIZn+ituLFJjJw75qFfKUAECRCUG1MFxrumJ5Bw5Noh/T0BsMILEwPQur57TvY9K
syLJskQpyJROC51WoqpzsG4QZhx7FA/YXFIQt33siEWuxAafsXfjgBwey2qd5zor63pd7+HCe+eh
d6Yl7kBeUeONf5VbDugZA7wzki1P8i6SfdrRgPCJHT9Cnru5ymGS18be3H+paYB2voy8/Hn2ClRZ
nGpgB1OkYJoegQbTIRxc5FYAbKiFA3GrFye/8dpg7DFxK2higBfv5gGNt0cKaEP0uFDfijr7F/XX
RL0BUEsDBAoAAAAAAKZgdkcAAAAAAAAAAAAAAAAVABwAY29tcG9zaXRpbmcvb3ZlcmZsb3cvVVQJ
AAP4H1JWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACmYHZHTPs68mkAAABrAAAAPQAcAGNv
bXBvc2l0aW5nL292ZXJmbG93L3RoZW1lLWFmZmVjdHMtdmlzdWFsLW92ZXJmbG93LXN0ZGVyci50
eHRVVAkAA/gfUlb4H1JWdXgLAAEE9QEAAAQUAAAAMzIwNNU1NNQ1MlIwNLIyMLUyNNIzMDVXSM7P
1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tJm5pam5laGZpZmReayCX7BTaUlJfp5j
XmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAKRgdkcAAAAAAAAAAAAAAAAUABwAY29tcG9z
aXRpbmcvcmVnaW9ucy9VVAkAA/QfUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKRgdkdL
s6emwgAAAPIGAABFABwAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1s
YXllci1jb21wb3NpdGluZy1zdGRlcnIudHh0VVQJAAP0H1JW9B9SVnV4CwABBPUBAAAEFAAAAO3P
vQrCMBQF4N2nyKiDTRutRsFBi4KDKDiKlGt60Whsym0U8vb+DeoDOAjZzpnO+TaJGMbpMJaR6HW3
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
Y3RvcnMzL3htbC9VVAkAA/sfUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKhgdkdnuEpE
aQAAAGsAAAAtABwAY3NzMy9zZWxlY3RvcnMzL3htbC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIudHh0
VVQJAAP7H1JW+x9SVnV4CwABBPUBAAAEFAAAADMyMDTVNTTUNTJSMDSyMjC1MjTVMzI3VkjOz9VL
LCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSZuYWFkZWhmbmpqUGsgl+wU2lJSX6eY15m
bmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAACpYHZHAAAAAAAAAAAAAAAADAAcAGNzczMvc2hh
cGVzL1VUCQAD/h9SVrohUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqWB2RwAAAAAAAAAAAAAA
ABoAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL1VUCQAD/h9SVrohUlZ1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAAqWB2RwAAAAAAAAAAAAAAACsAHABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRl
L3N1cHBvcnRlZC1zaGFwZXMvVVQJAAP+H1JWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACp
YHZHAAAAAAAAAAAAAAAAMgAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVkLXNo
YXBlcy9jaXJjbGUvVVQJAAP+H1JWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACpYHZHZuP/
db4AAADyBgAAVQAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVkLXNoYXBlcy9j
aXJjbGUvc2hhcGUtb3V0c2lkZS1jaXJjbGUtMDEzLXN0ZGVyci50eHRVVAkAA/4fUlb+H1JWdXgL
AAEE9QEAAAQUAAAA7c+xCsIwFAXQ3a/IqINNk1JtCw5aFBxEwVGkPNOHRmNTXqOQv7fioD+gIHS7
d7r37ITMwjgT4yAN0z3TDq/Q+EoVW3QbsjWS86zRxwqMwZIh0WQo5DiJWf+y0McZNLg+nFG5OZGl
YlndwegSHJYD1tefDRzjW3sjhTmoE/LcEq6w1PBOQxGPZCCjhLfTzjpfY8M3BjwSb8deqZg+/wWK
GV0hkzKNersO0SF+gMht7f9CESZJp+gU31OI8G8VD1BLAwQKAAAAAAC0YHZHAAAAAAAAAAAAAAAA
BAAcAGRvbS9VVAkAAxQgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALRgdkcAAAAAAAAA
AAAAAAAKABwAZG9tL3hodG1sL1VUCQADFCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA
tGB2RwAAAAAAAAAAAAAAABEAHABkb20veGh0bWwvbGV2ZWwyL1VUCQADFCBSVrohUlZ1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAAtGB2RwAAAAAAAAAAAAAAABYAHABkb20veGh0bWwvbGV2ZWwyL2h0
bWwvVVQJAAMUIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAC0YHZH8tq4U2kAAABrAAAA
MwAcAGRvbS94aHRtbC9sZXZlbDIvaHRtbC9IVE1MSW5wdXRFbGVtZW50MjAtc3RkZXJyLnR4dFVU
CQADFCBSVhQgUlZ1eAsAAQT1AQAABBQAAAAzMjA01TU01DUyUjA0sjIwtTIx0DMzMFRIzs/VSywo
yEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0mbmFiYWVoZm5oaFRrIJfsFNpSUl+nmNeZm5i
SWZ+XrFrXmJSTmqKrZ8/FwBQSwMEFAACAAgAkGF2R+AONmKdHQAAsbQDAA0AHABlcnJvcl9sb2cu
dHh0VVQJAAOwIVJW5x9SVnV4CwABBPUBAAAEFAAAAOzdW2/cRpYH8Pf9FEReYgPbzbrXqQYWi6wz
Cw82mDEmnvFDYAyobkqi3U22SUq25tNvtZTYGjtdslt9ORX8kUBRbIls8sdTrDp1++Xnq7b4S3dd
KFVINRNmZu3UBaesKpSQ9nXxyzAsZ++rvo3frptF4TwJ97r44bmQQYRZ/C0/FfEfOTNGz0Qx1P11
3Rfzuh+b82ZejXWx6Oqh+MtfXxZNO19eLeqiaos//1i8v2zml8WqGueX8e/Hy/q3322rVf0fv3z5
ydw0ntPo1Cfzd5+MvJ4Vf26bcVb8XA9D07XFsyqepmiGou3GYt61583FVV8vil8um3bzYz//9OtP
3v7g663nJyEePv8J7oySKtjfPtlqvfrnuq/Pu/7tLF5vM6+/+IxCuniPflhvrrZUUzOVrnjy97b5
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
BQAcAGZhc3QvVVQJAANPIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACzYHZHAAAAAAAA
AAAAAAAACwAcAGZhc3QvYmxvY2svVVQJAAMRIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAA
AACzYHZHAAAAAAAAAAAAAAAAGwAcAGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlL1VUCQADESBS
VrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAs2B2RxHKc3FpAAAAawAAACkAHABmYXN0L2Js
b2NrL21hcmdpbi1jb2xsYXBzZS8xMDMtc3RkZXJyLnR4dFVUCQADESBSVhEgUlZ1eAsAAQT1AQAA
BBQAAAAzMjA01TU01DUyUjA0sjIwtTI21zMzt1BIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6p
Zak5+QW5QHa0mbmliaGVoZmlobFxrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwME
CgAAAAAAvWB2RwAAAAAAAAAAAAAAAAwAHABmYXN0L2NhbnZhcy9VVAkAAyYgUla6IVJWdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAL1gdkdvabWflwAAAEwBAAAmABwAZmFzdC9jYW52YXMvY2FudmFz
LWxpbmVEYXNoLXN0ZGVyci50eHRVVAkAAyYgUlYmIFJWdXgLAAEE9QEAAAQUAAAA1Y5NCsIwFIT3
nmIuYGgL0RLETVtcKN24cCEuXtsHBtK8ksb6c3pbb+FqZj6GYWqZkGVIM5Noo3Pwc0wTrZy05NBK
r2gYHKsLN0cbFynER/ZRlTyxk6Gf/XWzzXV+w64KQcLeoDj8Wq945niynksa7wbWT+Rsh25OoBDo
bUARjmmMEM9gx8sc+scMGoYXv/5wELWq/+LlF1BLAwQKAAAAAAC7YHZHAAAAAAAAAAAAAAAACQAc
AGZhc3QvY3NzL1VUCQADIiBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAu2B2R9sI00I7
AAAAPwAAACkAHABmYXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUtc3RkZXJyLnR4dFVUCQAD
IiBSViIgUlZ1eAsAAQT1AQAABBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2Tm
pCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAADFYHZHAAAAAAAAAAAAAAAACQAcAGZh
c3QvZG9tL1VUCQADMiBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAumB2R//0XQ9pAAAA
awAAADYAHABmYXN0L2RvbS9jbG9uZS1ub2RlLWZvcm0tZWxlbWVudHMtd2l0aC1hdHRyLXN0ZGVy
ci50eHRVVAkAAyAgUlYgIFJWdXgLAAEE9QEAAAQUAAAAMzIwNNU1NNQ1MlIwNLIyMLUyNdKzNDJR
SM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tJm5hYmplaGZuYG5UayCX7BTaUlJ
fp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAALtgdkcAAAAAAAAAAAAAAAAaABwAZmFz
dC9kb20vSFRNTElucHV0RWxlbWVudC9VVAkAAyIgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIALtgdkeFWrdMaQAAAGsAAAA4ABwAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1p
bnB1dC1jaGVja2VkLXN0ZGVyci50eHRVVAkAAyIgUlYiIFJWdXgLAAEE9QEAAAQUAAAAMzIwNNU1
NNQ1MlIwNLIyMLUyNdEzNDVQSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tJm5
pZmllaG5gZmxcayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBBQAAgAIAMVgdkca
AFXe4gAAAFIDAAAyABwAZmFzdC9kb20vb2JqZWN0LXBsdWdpbi1oaWRlcy1wcm9wZXJ0aWVzLXN0
ZGVyci50eHRVVAkAAzIgUlYyIFJWdXgLAAEE9QEAAAQUAAAA7ZExT8MwEIVn+ituLFJjx66SUq8t
QwUIEEgdEINjX9MTyTlybBD/noDYYASJgektT9/p3qdLVRVKFVqD0qasjSpFpStwoRd2GDoUe2wu
KImbLrfEYqnFFp+xC0OPnB7q1fqsMmql1sv6Ec5jDBG6YD1xC/KSmmjjq9xxwsiY4J1R7HiUt5nc
0z31CJ/Y4SPkJkxVTqO8su767kvNAPjpMvL859kL0HV1aoADjJmSbToE6m2LcAiZvQDYkocDsTez
k994rbfuWIQFNDnBSwzTgDa6IyV0KUec6W9F1f+i/pqoN1BLAwQKAAAAAAC9YHZHAAAAAAAAAAAA
AAAADQAcAGZhc3QvZHluYW1pYy9VVAkAAyUgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AL1gdkdFDExnaQAAAGsAAAAwABwAZmFzdC9keW5hbWljL2NoZWNrYm94LXNlbGVjdGlvbi1jcmFz
aC1zdGRlcnIudHh0VVQJAAMlIFJWJSBSVnV4CwABBPUBAAAEFAAAADMyMDTVNTTUNTJSMDSyMjC1
MjXXMzW0UEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSZuYWJgZWhmbmBgUWs
gl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAADLYHZHAAAAAAAAAAAAAAAA
DAAcAGZhc3QvZXZlbnRzL1VUCQADPSBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAxGB2
R1gqZ3U5AAAAQwAAADIAHABmYXN0L2V2ZW50cy9kaXNwbGF5LW5vbmUtb24tZm9jdXMtY3Jhc2gt
c3RkZXJyLnR4dFVUCQADLyBSVi8gUlZ1eAsAAQT1AQAABBQAAADLzS8tTvXNL0sNyVdIS8zMSU1R
KAGyMvNSFBIVShKL0lNLFMoyU8sVEksUDA0MDPQMwEDHFM7kAgBQSwMEFAACAAgAxGB2R03bBshp
AAAAawAAAEkAHABmYXN0L2V2ZW50cy9kb21hY3RpdmF0ZS1zZXRzLXVuZGVybHlpbmctY2xpY2st
ZXZlbnQtYXMtaGFuZGxlZC1zdGRlcnIudHh0VVQJAAMvIFJWLyBSVnV4CwABBPUBAAAEFAAAADMy
MDTVNTTUNTJSMDSyMjCzMjDXMzazUEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblA
drSZuYWFmZWhmbmphWmsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACADK
YHZHMLVt4zkAAABDAAAAKwAcAGZhc3QvZXZlbnRzL21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVy
ci50eHRVVAkAAzwgUlY8IFJWdXgLAAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLz
UhQSFUoSi9JTSxTKMlPLFRJLFMwNDPQMwEBH1xDO5gIAUEsDBBQAAgAIAMtgdkfnrr1fOwAAAEMA
AAAvABwAZmFzdC9ldmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRVVAkA
Az0gUlY9IFJWdXgLAAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JT
SxTKMlPLFRJLFEwMDAz0DMBAx9jCFMrkAgBQSwMECgAAAAAAxWB2RwAAAAAAAAAAAAAAAAsAHABm
YXN0L2Zvcm1zL1VUCQADMiBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAxWB2R8wbH9aq
AAAA6QAAADMAHABmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoLXN0ZGVy
ci50eHRVVAkAAzIgUlYyIFJWdXgLAAEE9QEAAAQUAAAAfY0xD4IwFIR3f8WbSWhoo0DYjDoYnRhk
IAwVHtAE+rB9aPz3omF2usvl7jsVyV0oZagUSJVFcSYjkUYKahqFnqYBRYH3i+GvHMgyWhZHfOJA
07j4Mk7SbZrJOJFSVRAEAYTl/rb3HjlHT7Or8Uq6MbbL8TGjZ2iNNb5fw8Jwf3KOXFbBS3vwCxOY
QFsw1rO2NQK18J/IvebfWg8OdfNeL7ARcO4suaUqNh9QSwMECgAAAAAAwGB2RwAAAAAAAAAAAAAA
ABEAHABmYXN0L2Zvcm1zL3JhZGlvL1VUCQADKCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAwGB2R8E3dYppAAAAawAAAEEAHABmYXN0L2Zvcm1zL3JhZGlvL2ludGVyYWN0aXZlLXZhbGlk
YXRpb24tcmVxdWlyZWQtcmFkaW8tc3RkZXJyLnR4dFVUCQADKCBSViggUlZ1eAsAAQT1AQAABBQA
AAAzMjA01TU01DUyUjA0sjIwszIw0DM1MFVIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5
+QW5QHa0mbmFsZmVoZmZpblhrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAA
AAAAxWB2RwAAAAAAAAAAAAAAAAwAHABmYXN0L2ZyYW1lcy9VVAkAAzEgUla6IVJWdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAMVgdkfbCNNCOwAAAD8AAAAvABwAZmFzdC9mcmFtZXMvZnJhbWUtZGlz
cGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAkAAzEgUlYxIFJWdXgLAAEE9QEAAAQUAAAAcywp
Sc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQ
SwMECgAAAAAAwWB2RwAAAAAAAAAAAAAAAA0AHABmYXN0L2hhcm5lc3MvVVQJAAMqIFJWuiFSVnV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACADBYHZHQdVce2kAAABrAAAAKwAcAGZhc3QvaGFybmVzcy9p
bWFnZS1kaWZmLXRlbXBsYXRlLXN0ZGVyci50eHRVVAkAAyogUlYqIFJWdXgLAAEE9QEAAAQUAAAA
MzIwNNU1NNQ1MlIwNLIyMLMyMNIzsbRQSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkF
uUB2tJm5hZmZlaGZubGpRayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAA
AMpgdkcAAAAAAAAAAAAAAAAMABwAZmFzdC9pbWFnZXMvVVQJAAM8IFJWuiFSVnV4CwABBPUBAAAE
FAAAAFBLAwQKAAIAAADKYHZHUaeCGDEAAAAxAAAALQAcAGZhc3QvaW1hZ2VzL2xhcmdlLXNpemUt
aW1hZ2UtY3Jhc2gtc3RkZXJyLnR4dFVUCQADOyBSVjsgUlZ1eAsAAQT1AQAABBQAAABpbml0SW1h
Z2VBcHBsZUpQRUc6MTQxNjogZmFsbGluZyBiYWNrIHRvIGxpYkpQRUcKUEsDBBQAAgAIAMpgdkch
j704MgAAADMAAAAsABwAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50
eHRVVAkAAzwgUlY8IFJWdXgLAAEE9QEAAAQUAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYK
mXnJ+UVFqcklCimJJYkKyRmpydl6XABQSwMECgAAAAAAymB2RwAAAAAAAAAAAAAAAAwAHABmYXN0
L2xvYWRlci9VVAkAAzsgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAMRgdkfbCNNCOwAA
AD8AAABSABwAZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQADLyBSVi8gUlZ1eAsAAQT1AQAA
BBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNT
i4tTU/S4AFBLAwQUAAIACADFYHZH2wjTQjsAAAA/AAAAUwAcAGZhc3QvbG9hZGVyL2ltYWdlcy1l
bmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRl
cnIudHh0VVQJAAMxIFJWMSBSVnV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjP
L8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIAMpgdkfbCNNCOwAA
AD8AAAAtABwAZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQJ
AAM7IFJWOyBSVnV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRn
ZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAMdgdkcAAAAAAAAAAAAAAAAMABwA
ZmFzdC9wYXJzZXIvVVQJAAM1IFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADHYHZHd679
imkAAABrAAAAJAAcAGZhc3QvcGFyc2VyL2JhZC14bWwtc2xhc2gtc3RkZXJyLnR4dFVUCQADNSBS
VjUgUlZ1eAsAAQT1AQAABBQAAAAzMjA01TU01DUyUjA0sjIwszI01jM3t1RIzs/VSywoyEnVC09N
8s4sAVHO+XklqXklei6pZak5+QW5QHa0mbmlpYGVobmRoaFBrIJfsFNpSUl+nmNeZm5iSWZ+XrFr
XmJSTmqKrZ8/FwBQSwMECgAAAAAAz2B2RwAAAAAAAAAAAAAAAA0AHABmYXN0L3JlZ2lvbnMvVVQJ
AANFIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADPYHZHAAAAAAAAAAAAAAAAFwAcAGZh
c3QvcmVnaW9ucy9zY3JvbGxpbmcvVVQJAANGIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CADPYHZHOQHL3UAAAAB6AAAANQAcAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xs
LWFic3Bvcy1zdGRlcnIudHh0VVQJAANFIFJWRSBSVnV4CwABBPUBAAAEFAAAAHMtS80rCU7NS0kt
CijKr6i0skrOzyvJzCvNLy32BeLU4OSi/Jwcp0qFzGKFvPwShczcgpzUXKCm1BQuV0o0AwBQSwME
FAACAAgAz2B2RzkBy91AAAAAegAAAC4AHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNj
cm9sbC1zdGRlcnIudHh0VVQJAANFIFJWRSBSVnV4CwABBPUBAAAEFAAAAHMtS80rCU7NS0ktCijK
r6i0skrOzyvJzCvNLy32BeLU4OSi/Jwcp0qFzGKFvPwShczcgpzUXKCm1BQuV0o0AwBQSwMEFAAC
AAgAz2B2R+SKx0M8AAAAPQAAAEAAHABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9s
bGFibGUtc2luZ2xlLXJlZ2lvbi1zdGRlcnIudHh0VVQJAANGIFJWRiBSVnV4CwABBPUBAAAEFAAA
AHMtS80rCU7NS0ktCijKr6i0skrOzyvJzCvNLy32BeLU4OSi/Jwcp0qFzGKFvPwShczcgpzUXKCm
1BQuAFBLAwQKAAAAAADQYHZHAAAAAAAAAAAAAAAADgAcAGZhc3QvcmVwbGFjZWQvVVQJAANHIFJW
uiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADPYHZH+jRe7eIAAABSAwAAQQAcAGZhc3QvcmVw
bGFjZWQvcGVyY2VudC1oZWlnaHQtaW4tYW5vbnltb3VzLWJsb2NrLXdpZGdldC1zdGRlcnIudHh0
VVQJAANGIFJWRiBSVnV4CwABBPUBAAAEFAAAAO2RMU/DMBCFZ/orbgSpsR1HSYtXylABAgRSB8Tg
2Nf0RHKOHBvEvycgNhhBYmB6y9N3uvdpVdZFWRZaQ6mNakylRHVagwuDsOPYo9hhe0FJ3PS5IxaV
Fht8xj6MA3J6aNZKVaZc6VW9foTzGEOEPlhP3IG8pDba+Cq3nDAyJnhnFFue5G0m93RPA8IndvwI
eRbmKqdJXll3ffelZgD8fBn5+OfZS9BNfWKAA0yZkm17BBpsh7APmb0A2JCHPbE3i6PfeG2w7lCE
JbQ5wUsM84A2ugMldClHXOhvRTX/ov6aqDdQSwMEFAACAAgAz2B2R7WMgh3uAAAApAYAAEQAHABm
YXN0L3JlcGxhY2VkL3JlcGxhY2VkLWNoaWxkLW9mLWFic29sdXRlLXdpdGgtYXV0by1oZWlnaHQt
c3RkZXJyLnR4dFVUCQADRiBSVkYgUlZ1eAsAAQT1AQAABBQAAADt0T1LxEAQBuDa+xVTKlz2K+TD
bT2LQ0VFwUIsNpu53GIyGza7iv/eKHZaKniQapqXd5h5lJBFJmWmFEilRalzwYrqFKwfmBnHHtkD
Nhcusps+dY5YrtgGX7D344AUH8taiFzLSlVF/QTnIfgAvTetow74pWuCCW98SxEDYYSPjmxLE79N
zj7fuwHhq3b8HPzMz1GKE78y9vruW0wDtPNmpOPf716DKosTDeRhSi6apkdwg+kQdj5RywA2roWd
o1avjv7itMHYfebX0KQIr8HPDzTB7l1EG1PAlfoJqhYL1GFAyQXqMKDUAvXfoN4BUEsDBBQAAgAI
ANBgdkfYGgFd7AAAAKQGAAAsABwAZmFzdC9yZXBsYWNlZC90YWJsZS1wZXJjZW50LXdpZHRoLXN0
ZGVyci50eHRVVAkAA0cgUlZHIFJWdXgLAAEE9QEAAAQUAAAA7dGxTsMwEAbgmT7FjSA1duyQtPJK
GSpAgEDqgBgc55qeSM6RY4N4ewJigwnBgJTpll//6e7TuSozpTKtQWmTV6ZQQqkCnO+FHYYOxQ7r
C4ripkstsSi02OAzdn7okeNDtc7zwqiVXpXrRzgPwQfovG2IW5CXVAcbXuWWIwbGCO8d2ZZHeZvI
Pd1Tj/BZO3wMeeanKMdRXll3ffclZgCaaTPy8e93L0FX5YkB9jAmirbuEKi3LcLeJ24EwIYa2BM3
ZnH0F6f11h0yv4Q6RXgJfnqgDe5AEV1MARf6W6jTGep/QJUz1Aw1Q/0I6g1QSwMECgAAAAAA1WB2
RwAAAAAAAAAAAAAAAAkAHABmYXN0L3hzbC9VVAkAA1EgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIANRgdkdy/WXyhQAAAOkAAAAlABwAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3Rk
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
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANdgdke3UJSSwQAAABcBAAA7ABwAaHR0cC90ZXN0cy9j
YW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAkAA1UgUlZV
IFJWdXgLAAEE9QEAAAQUAAAAnY7BTsMwEETvfMV8AFh2aAJYqBItFy6oag4gRT2kySaxsHaRvQHE
12MO/ABzHGnmvc5V3jZ+Uxvn6hPuS7A/PuxabEswxTUvB+Ix8HykSH2mltSjs183EzXDeO3I3tkT
dlGGN1gsfQYLX31TEiSaMMjKCnfxLB+oKvzhQJ/Z2dqUWR+RdEj0LkkLpmturdsUlSeeZOsRZZ5L
jax90myM+cfVI53XuXwFDvoSdGkp5yD8S/B4PeyLsoJYg0YaL4vtD1BLAwQKAAAAAADbYHZHAAAA
AAAAAAAAAAAAHQAcAGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvVVQJAANdIFJWuiFSVnV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACADbYHZHSYEVhnwAAACuAAAAOgAcAGh0dHAvdGVzdHMvY29u
dGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1ibG9ja2VkLXN0ZGVyci50eHRVVAkAA10gUlZdIFJW
dXgLAAEE9QEAAAQUAAAAlc2xCsIwEIDhvU9xDyChiaTFIC66uJSCg4I41HqmB+GuJKe+vvURXP/h
+zt5g3NgXaib4NeAn2Jrb5KMQ4KsY8ZZshLHa9NufHuD7ZGfsguQJMYlQ9EhazHGVN3f1AHvr7hY
xKRn0umEpZDw7xDg0u+BRQFZSRM+VmCrL1BLAwQKAAAAAADkYHZHAAAAAAAAAAAAAAAAEQAcAGh0
dHAvdGVzdHMvbWVkaWEvVVQJAANrIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADZYHZH
AAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQJAANaIFJWuiFSVnV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACADZYHZHS4ED5wkBAABQAgAAOQAcAGh0dHAvdGVzdHMvbWVk
aWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUCQADWiBSVlogUlZ1
eAsAAQT1AQAABBQAAAC1kMFqwzAMhu99Cj3AME6yJIs3Ct06xg4tgTBWCDtksZKaJXaw5fb15zQM
eh70KP3S//1SHcWCZ+K+YEWSfcFT9fpWfuzKNWyIcJxoj3Q29mdntCJjKyQ/CdCGwCGR0j34CfQy
A+My9AiNlBadA+VgMG0zrOorSn4zyt6cII5hYaUc8OwinrKLCJZai5Oxs12d5Q8FDznedWfWIqz3
/Uxx1FhyjLF/WG3x2/fBS4V0n4qOVYimjJ4JAg7ly+Uc1KRoQHkH0d9PUs7i7OafD5SEx9cUh33p
x2mLgzqh3bStH/3QEMpn33VoBXABchFBqrnloLNmBIuNBA6GjkFpjdbYUqjzIs2SePULUEsDBAoA
AAAAANtgdkcAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQJAANdIFJWuiFS
VnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADZYHZH42JtCGsBAABHAwAAQAAcAGh0dHAvdGVzdHMv
bWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAkA
A1ogUlZaIFJWdXgLAAEE9QEAAAQUAAAAvZFfS8MwFMXf/RT3A0hpZ1u3KoNZ/yA4GQxRGCKxuW3D
0qQmtxt+e282BIdvA81jcnJ/55y7SkZFnBfpJBqn569wuby5WzzNF1OYEWHX0yPS1rr13BpF1i2R
hr4AYwk8EinTwNCD2Wug24suQEjp0HtQHrSthD5Z/Qvl0W5gNII9K4sBtz6Js2j3CI4qh711Ydwq
P5+kCfu4N7WdFvy9aQLFk3Dkoyg6YtQ1vg8Nz1Ls7llRu2RryppAKOBlUe7ioCFFGuUpJN+dZHE0
ikMnfOBWNUtyKLqFFp/oYMoH6r72bzNN6IwgfFCeylaYBmUBVWutD84DVbE18S3jG9AsPcCM/3rB
gZKlPylzlErcKo2l0NWg2dnV88zIssVqXQpGzVH4waGEd2HkVklqw9SGS+AkQJw0rIVYwIk2wilh
KATnBoI7hx+DOvxeO9tBfpamWQJkIU8n40n2y+ExdZeDc7zCHy33XAPfnHwBUEsDBBQAAgAIANpg
dkeG+A9TWgEAAPwCAAA6ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1o
YXMtYXVkaW8tc3RkZXJyLnR4dFVUCQADXCBSVlwgUlZ1eAsAAQT1AQAABBQAAAC1Ud1qwjAUvt9T
nAcYYv2p2g3BdXMMphTKcCBjxObYBmPSJafK3n4nug1ldwNzFU6+fH9nGXWSdpz0261ht/0Gt/nD
Y/Yyy8YwIcJtTXOkvXWbmTWKrMuRmjoBYwk8EilTQlODOWJgewTdgJDSofegPGhbCH21PFGJLqYy
tzvodOBbKwLc+6jdbx0ewVHhsLYu0C3jwagXfNzjqinHCSimXCiqcuZT1jyZtU3gNUsPHtCQIo3y
GqLfIFErGsZMwAemqszJodhmWnyigzEfWNdr/z7RhM4IwmflKa2EKVEmUFTW+hAqqCq2Jn5gPAHN
0DOZwcW3ElRGpyozlEpMlcZU6KLR7OxuMTEyrbDYpIKlZih841DCShi5V5KqwFpyCZwEiJOCJ77L
kGgnnBKGQnBuILhz+NGo8+9rZ7cQd3s93htZiHuj4aj/x+F/6k4b53iFJy3XXANPrr4AUEsDBBQA
AgAIANpgdketxRb0bgEAAPwDAABBABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRy
YWNrcy1sb2NhbGUtc2VsZWN0aW9uLXN0ZGVyci50eHRVVAkAA1wgUlZcIFJWdXgLAAEE9QEAAAQU
AAAAxZJtS8MwFIW/+yvuDxCxb6urMpj1BcGNwZAJQyQ2d20wS2pyu+G/92Yy6PCb+JJPJb055zwn
WUZxcToosvgkzvMnuJhf384eJrMRjIlw3dIUaWvd68QaRdbNkbq2AGMJPBIpU0PXgvmcgfXn0DkI
KR16D8qDtpXQR8uey9mvuUztBuIY9l6AWx+dZie7n+CocthaF+SWg3yYRpzjCl+6elSAYsmFombO
esqaO7OyBTzOyl0GNKRIozyGqAeSJEGAF9yoek4OxXqmxTs6GPGCVbvyz2NN6IwgvFeeykaYGmUB
VWOtD1DBVXE0sR/jHdA8emAT/8GtJEnWd5mgVOJGaSyFrjrNyS4XYyPLBqvXUrDVBIXvHEp4EUZu
laQmqNZcApMAMSl44m8ZiDbCKWEogHMDIZ3Dt04dHl85u4ZBkqZZBGRhkA7PhtmXhN+pu+yc4yvs
tdxyDbzTVz98lf/Gv6MO/HmeZVn6JeHP8n8AUEsDBBQAAgAIANtgdkfnuvERVwEAAPwCAAAwABwA
aHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1zdGRlcnIudHh0VVQJAANdIFJW
XSBSVnV4CwABBPUBAAAEFAAAAL1R3WrCMBS+31OcBxhiu7ZqNwTXzTFYRZDhQMaIzbENpkmXnCp7
+50qgrK7wZarcPLl+zurIEz7SRqHvThI3uFu8fg0f83nY5gQYd3QDGlv3Ta3RpF1C6S2ScFYAo9E
ypTQNmCOGKiPoFsQUjr0HpQHbQuhr1ZnKoM/U5nZHYQhnLQA9z7ox73DIzgqHDbWdXSrZDCKAvbx
gOu2HKegmHKpqFown7Lm2WxsCm/z7OABDSnSKK8hOAuSDDsCPjBV5YIcinquxRc6GPOBTbPxHxNN
6IwgfFGeskqYEmUKRWWt70J1qoqtiROMJ6AZeiET/sNWkmF0rpKjVGKqNGZCF61mZ/fLiZFZhcU2
EyyVo/CtQwlrYeReSao61pJL4CRAnBQ88V12iXbCKWGoC84NdO4cfrbq8vvG2RqSmyiKAyALSTQa
juIfDn9Td9Y6xys8a7nhGnhy9Q1QSwMEFAACAAgA22B2R9gJvnqxAAAAlQEAACwAHABodHRwL3Rl
c3RzL21lZGlhL2hscy9obHMtcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADXSBSVl0gUlZ1eAsAAQT1
AQAABBQAAAC1j9EKgkAURN/7ivmAELUy2iKIiuihECQKpIfKmy3pXtm91u9nRtAP9DzDOTNpECo/
UoOeFw79IybJchXvNvEUMxEqK9mSPNneN2y0sE1I6krBsMCRiDY56grm00H5KY1xyjJLzkE7FHw5
FZ30xxL8zbLlB8IQXxfo6QJ/4LUhrFwsVWzfuDQajvrvHQs61/lUQTfIvZZb0vA0m7W5ssIhnrcb
yIiWgrIugp8jPf9/R15QSwMEFAACAAgA22B2R66DoPG5AAAAKgMAAD0AHABodHRwL3Rlc3RzL21l
ZGlhL2hscy92aWRlby1jb250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRlcnIudHh0VVQJAANdIFJW
XSBSVnV4CwABBPUBAAAEFAAAAN2PwQ7BQBRF977ifoBIW1rpEIkgYkGaNELSWKBPTdS8ZuaV31fE
wgfYWN+be+7J/EB5kQq7nSiOdxims3myXiYjjEXoWsmK5M72smSjhW1KUlcKhgWORLQpUFcw7w6u
79IA+zy35By0Q8nHfdnK/pLS97yfUVZ8QxDgwwLdne+FnVcIK0dLFdvnXBb1457f/JjSoS5GCrqZ
3Gg5p82eZrMwJ1bYJpPXBzKipaS8Df9LJP4TkSj4mcgDUEsDBBQAAgAIANlgdkf+h8/9fAAAAK4A
AAAyABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1yZWZlcmVyLXN0ZGVyci50eHRV
VAkAA1ogUlZaIFJWdXgLAAEE9QEAAAQUAAAAlc2xCsIwEIDhvU9xDyAhCbaWIC66uBShg4I41Hqm
B+FOkrO+vvURXP/h+zuZwXtwPtgm1BbwU5ytTZJxSJB1zPiSrMTx2mzadXuD7ZGfsguQJMYlQ9Eh
azHGVN3f1AHv77hYxKRn0qnHUkj4dwhwOe2BRQFZSRM+VuCqL1BLAwQUAAIACADaYHZH3cIHOroA
AADsAAAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD
XCBSVlwgUlZ1eAsAAQT1AQAABBQAAABVjc1Kw0AUhfd9ivMAJSRjk6bDGIoVoVBUmkULpYv83MSh
ydyQuSq+vUNXehZn8fEdjjHG4MX2Tz9CpcxUjShC/qNSKvEH7t8cHalqNf7YoVpwhxx1gB5bxBDm
G+IoX6vkYQNPTRQQGh6ngYSWSO4rj+IxWOldWLzyF5RConSc6VSBvn0Sp9HATTVglmamiWexrr9k
63yVX2Geqf7sCw3rrJysfJTkvWW3dx1rnN93cCwgJ1YGasPp4hdQSwMECgACAAAA22B2R16O+YVj
AAAAYwAAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5
LXN0ZGVyci50eHRVVAkAA14gUlZeIFJWdXgLAAEE9QEAAAQUAAAATm92IDIyIDEyOjA2OjUzIGV3
czEwNS5sb2NhbCBydGNyZXBvcnRpbmdbNjc4NDhdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbklu
Zm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsDBAoAAAAAAO5gdkcAAAAAAAAAAAAAAAAeABwAaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQJAAN/IFJWuiFSVnV4CwABBPUBAAAEFAAAAFBL
AwQUAAIACADiYHZHLAFCEcYAAAD1AAAAQgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUCQADZyBSVmcgUlZ1eAsAAQT1
AQAABBQAAABFj0FrwkAQhe/9FXNTD2Y30aYi9KJtaA8BQXoqIsPuRBc3MzK7KfXfNx7a3j4ej8f3
PstqbZ/W1hbLanWATvHUIodOoj/uhnTe3DIlSOHEGCN5INXneVnbZQ3TSxP+yq+qoscPpu8ruUz+
nUN+wYwzmO7JCXuYdPl2nQBm6YHYycCZlPxsTMDsZVBHW3RnMltRaskH/Kd5+VhXRbVYmZ1KlnGI
kmlEe8xvyD6SJtPKVyBzV7pDMx7pifOvX+EgBiYo64V9+AFQSwMEFAACAAgA4mB2Rw/TUIvMAAAA
OAQAADsAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jbG9zZWQt
c3RkZXJyLnR4dFVUCQADaCBSVmggUlZ1eAsAAQT1AQAABBQAAADVkr1uwjAUhfc+xX0BotgmtskG
ZanaDUSHqsNNcgFLjh3ZBpQ+fc3eJUujTPdHOjqfjg4vWbVibMU5MF6Xqi5FofLR+r7AYbBUfFLz
btJzvHqXyKViT3eyfujz/iWV3vCaSS01/4a3i/PBuEuWuxS8PZqeGowEkRI0I7TWZBE01OItf7en
A/bZY3c7nynsTRwsjh84UoAHRsCuow6SB4Q4uvYavDM/FF74n8xyKrPiQup5mfXymMXkbii5rtS8
zNUCc57eDbGR6/9i/gVQSwMEFAACAAgA42B2R5/fskTTAAAA3wIAAFAAHABodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUt
c3RkZXJyLnR4dFVUCQADaiBSVmogUlZ1eAsAAQT1AQAABBQAAADlj81qAkEQhO95ir6pB3f2L6MI
uWiyJIcFQXKSIM1Mrw7OTkvPbIhvn/WQ+BDeiqIovm9flKt8scrrrNb6CzrBY4vBdeztYTvE0/qa
KEJ0x4DekwUSeZkXOq81TM+N+x+/ibAcPgP9XMgksh/BpVdMOIPpjgwHC5MuXS8TwMQ9UDA8hERC
djY2oHY8iKENmhOpDQu1ZB3e07x41mVWVku1FU48HlFUDUuP6R2D9SRRtfztSN2QbqEZRXoK6Y8v
M+BdICh0lT/t79KL+gGll9WjSP8CUEsDBBQAAgAIAORgdkcdyCEoTQEAAJMDAABSABwAaHR0cC90
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1m
cmFtZXJhdGUtc3RkZXJyLnR4dFVUCQADbCBSVmwgUlZ1eAsAAQT1AQAABBQAAADlkM9OIzEMxu88
hW/AofOPNtOpxGFptwKxlZC6wAEh5CaeNtpMPHIyLMPTb3pY4B04+ZPlz/5+ropyNinLSVVBWS2K
elGobNo0oLnLsO8dZY+0u7XxWJbsI/mYreiVHPdd0k+qnjfVoqzVdFY/w83es1i/T3Yfhd1v29EO
A0GgCLsRtLPJBDvSOKTuj4ctdunG1dC2JCsbeofjLxxJ4C8GQGPIQGRACKPXB2Fv30lOnj6Sqrp5
hlZwv0FvW3bm5W4Ih6sxUoBg9x6dSxtI5HJSqmKq4OzP2n4M/xRhebn39NaTjmRuvI0rjHgOZ1tK
BAZO2zj2p4CROyCveUgPEDLnqQP5lgfRtER9oHzJQhsyFj/VpJypKqsu5vmdcOS0iEK+ZukwXqM3
jiTkG361lB8jHcU6gRyf+j9fpsFZT1Cqi+Ir9Lz+htCN+i7Q/wBQSwMEFAACAAgA5mB2R0rBzOye
AAAAtAAAAE0AHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1lbmRv
ZnN0cmVhbS1pbnZhbGlkZXJyb3Itc3RkZXJyLnR4dFVUCQADcCBSVnAgUlZ1eAsAAQT1AQAABBQA
AAAVjb0OwiAURnef4r6ApGDt36Z2MbppdDAOt+1tJaFAgGrw6cXpOznJyScyvl1zvhYCuGiysskq
VvIcejMztFYRu1N3kuE/B6MD6cBaepMydk78KMqqFg0vN3WRP+E4aeOknlKugzPqKmfq0BN4CtBF
6JVMEXTU45Ls7nbBOX3sl3Ek10pvFcYzRnLwQQ84DDRAMIDgo+5fzmj5Jbf6AVBLAwQUAAIACADq
YHZHdkOt7J0AAAC0AAAAOwAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXJlbW92ZS1zdGRlcnIudHh0VVQJAAN4IFJWeCBSVnV4CwABBPUBAAAEFAAAABWNsQ7CIBRF
d7/i/UBJwUhrN7WL0U2jg3F40NdKQqEBqqlfL0735CQnV5R8U3BeCAFcNGXVcMmkFKD9yHCaLLE7
qZNJ/zl4l8gl1tKbrJ/GzA9Z1VvR8EqsZf2E4+B8MG7IuUvB26sZSWEkiJRALaCtyREo0jhnu7td
cMwf+7nvKbQmThaXMy4U4IMRsOuog+QBIS5Ov4J35kth9QNQSwMEFAACAAgA7GB2R67o6GW6AAAA
hAMAAEYAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2Vi
dWZmZXItbW9kZS1zdGRlcnIudHh0VVQJAAN8IFJWfCBSVnV4CwABBPUBAAAEFAAAANWQvQ7CMBCD
d57iXoCquQIN3fhZEGwgGBDDtb1CpDSpkgAqT0/YWZiAyZYly5+MqRgPhRgigsAizQtMkxQzqGyb
UNdpTg5crlV4ycKawCYkS76xtl0b/XGSyykWIsdsIk+wOhvrlDnHugnO6p1quSTP4DlA2UOlVSxB
yRVdYzrbb6mNG/Nr07BbKt9p6jfUs4M7eaC65hqCBQLfm+rirFEPdgN8yyz/jznDj5llJsffZR79
4c/5T//8BFBLAwQUAAIACADuYHZHXeaQYrUAAAAcAgAARQAcAGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlcmxpc3Qtc3RkZXJyLnR4dFVUCQADfyBS
Vn8gUlZ1eAsAAQT1AQAABBQAAADFzjsOwjAQBNCeU+wFsGLnSzogDYIOBAWi2CQLWHLsyHZA4fSY
ngYKqHa00mieiHg65XwqBHBRRnkpEhZFKTSmY9j3itiB6rX0r7M02pP2rKIbKdN3IR+zvJiJkudF
XGQnWF20sVJfQl17a9ROdlSjI3DkoR6hUTKUoKYGh/Cd77fYhY3FcD6TraTrFY4bHMnCHR1g21IL
3gCCG3VztUbLB9mJeGvOvzEnfzXz+GNzPMt+Zn4CUEsDBBQAAgAIANtgdkfvgkUv7QAAAF8BAAAt
ABwAaHR0cC90ZXN0cy9tZWRpYS9wZGYtc2VydmVkLWFzLXBkZi1zdGRlcnIudHh0VVQJAANeIFJW
XiBSVnV4CwABBPUBAAAEFAAAAIWPT2vDMAzF7/0UOvWWOAlZ2xjCKN3GDjuM0J3KDm6sJgb/my0P
+u3nsLXXSZf3+D0J6VQ3vNrwh7bs2s0nvB6P7wN+JYwEFzUt9ikZ/6Ks0B/D297KAY0j3EsZMEYO
4ldA3WzLKnedx3IWUtAwE3nO2B3xXVVVzKBUgn0ria6gOTgijbLQTshynNSjFQb7vNKlMGJklC8p
vbysb9G+W2pNV4+98F6rUZByluXM6vTvM3/2EFAQPofgwsEZg5Y4oB1dsoQBJQgLuEAO5yshBGEn
BI12ohmMikbQOEMBcXZJSzjfWQMq3vS227WrH1BLAwQKAAIAAADcYHZHWEX9vGMAAABjAAAALwAc
AGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy1zdGRlcnIudHh0VVQJAANfIFJW
XyBSVnV4CwABBPUBAAAEFAAAAE5vdiAyMiAxMjowNjo1NSBld3MxMDUubG9jYWwgcnRjcmVwb3J0
aW5nWzY3ODQ4XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVk
LCAxClBLAwQUAAIACADcYHZHxwNdlusAAABaAQAALwAcAGh0dHAvdGVzdHMvbWVkaWEvdGV4dC1z
ZXJ2ZWQtYXMtdGV4dC1zdGRlcnIudHh0VVQJAANgIFJWYCBSVnV4CwABBPUBAAAEFAAAAIWPT2/C
MAzF73wKn7i1SQtjI1I1Idi0ww5TxU6IQ2i8JlL+lMSZ4Nuv1QbX2Zf39Hu27ENVC74SD6uSrxdH
eNvvP1o8Z0wEX6af7C674dV4aT/b941XLbpAuFEqYkoC5K+Aqn4s+djVODZmIUcLmmgQjN2ReOKc
M4fKSPZtFIaCdAxEFlVhg1Rl15tnLx0248qQY4eJ0XhJSRea36LNeqo5XQdsCC/EBiuNnx3+/ePP
biNKwpcYQ9wG59CTAPRdyJ4wogLpASco4HQlhCh9j2DR96TBmeQkdRoKSDpkq+B0ZzWYdNPLJV/M
fgBQSwMEFAACAAgA3WB2R/7BDfqyAAAAlQEAADYAHABodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWlu
LWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA2EgUlZhIFJWdXgLAAEE9QEAAAQUAAAA
tY/RCoJAFETf+4r5gIg0U9kiiIrooRAkCqQHy5st2V7ZvdbvZ0XQD/Q8wzkzmeerfqiGYc+LBgeM
08Uy2a6TCaYidKtlQ/Jge12z0cI2JWlqBcMCRyLalGhqmE8Ht09phLwoLDkH7VDxKa862Y8l+Jtl
w3f4Pr4u0MN5/WHvHcLKyVLN9oXLwigO4nbHnI5NOVHQLXKn5ZK2PM1mZc6ssE9m7w1kREtFRRfe
75E4+tuRJ1BLAwQUAAIACADhYHZHDdu4XfYAAAD5AQAAJgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tYXV0aC1zdGRlcnIudHh0VVQJAANlIFJWZSBSVnV4CwABBPUBAAAEFAAAAN2PUUvDMBSF3/sr
7qMDmyatTWcQQToEEcZwDxNkD228rtE0N6RpJ/56K5P5H3w658C53PPlXJSpEGmeg8gVl6q8ZoUs
QFPPGu8tsh22jyb+SE0uootshRNa8v3sX2S1vFoqURW8kns4Jajv1xiPFD7AzBfBNRYwBApwwT81
F43KtjQGjXWjO8zO7T+XVjlnJauyTaB31PFpdNH0mG0xmMaar6a1eBd0ZyZk2ntVSr5I8n+BImSx
SNY0wS9GpbgAPA6Cl8ySnv+HqAN6CtG4w2n0Hm5W2I6HWzWvNHFnYrfFYTDkHtwbKXje1OAowkxp
osXXSxDJN1BLAwQKAAIAAADhYHZHRI7IWGMAAABjAAAALQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tZXJyb3ItYWJvcnQtc3RkZXJyLnR4dFVUCQADZiBSVmYgUlZ1eAsAAQT1AQAABBQAAABOb3Yg
MjIgMTI6MDc6MDEgZXdzMTA1LmxvY2FsIHJ0Y3JlcG9ydGluZ1s2Nzg0OF0gPERlYnVnPjogaW5p
dFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMEFAACAAgA4WB2R46hIL6z
AAAAIwEAADYAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LXN0
ZGVyci50eHRVVAkAA2YgUlZmIFJWdXgLAAEE9QEAAAQUAAAAlY4xD4IwEIV3f8WNOgBt1YDdiMQ4
OBiCE3FAemojUGyL8ed7BuNoYm55L++93FdyIVksmQiXgh9hWxT7HO8DOg9nfdl6339splWONeoH
5uh60zlcV01zquqbBDsGCq7UJzfmsGALmKK1xkLAxWqezOBM+l2SUcRFHDI6LhPGWKQMuqAzPsCn
dj5se7xMyt9wZLOh7Te6q5pDvks7ImyNx1QpYnASqlHA9xXNqAuDbf6geAFQSwMEFAACAAgA4WB2
R2gLW5VoAAAAxgAAACwAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJy
LnR4dFVUCQADZiBSVmYgUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MjBSSC0vNjQw1cvJ
T07MUSgqSS5KLcgvKsnMS482M7cwsYhVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhw
VsjLL1FIzSvJLMlJTdFRMOTyo70VAFBLAwQKAAIAAADiYHZHx+tKRGMAAABjAAAALwAcAGh0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wcm9ncmVzcy1zdGRlcnIudHh0VVQJAANnIFJWZyBSVnV4
CwABBPUBAAAEFAAAAE5vdiAyMiAxMjowNzowMiBld3MxMDUubG9jYWwgcnRjcmVwb3J0aW5nWzY3
ODQ4XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBL
AwQUAAIACADjYHZHna0ybLQAAAAvAQAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJl
Y3Qtc3RkZXJyLnR4dFVUCQADaiBSVmogUlZ1eAsAAQT1AQAABBQAAAC1j01uwjAUhPc9xRygICcE
klgIiZ8NG4TIopWiLkJ4JhbWM7JfoOrp8YYjdPbzfTMH/0CeI8u1KrVagJ4xU/Op833nEKQPdPdB
LF/bRVkV1Q+WOzqP15WGZStfVoaGYrSe92y8xvdxC/YCYrHi6PKJ7KN9w6d1oRIgBdvTetNglQLj
xjgciS9JciJHXaSGRKNVv6WpqM9NUc/qVNykUTcoDF1MDp78UfAIZND7kSWJDv//5QVQSwMECgAC
AAAA5GB2R0JFzGFjAAAAYwAAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1z
dGRlcnIudHh0VVQJAANrIFJWayBSVnV4CwABBPUBAAAEFAAAAE5vdiAyMiAxMjowNzowNyBld3Mx
MDUubG9jYWwgcnRjcmVwb3J0aW5nWzY3ODQ4XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZv
OiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAAAAAD6YHZHAAAAAAAAAAAAAAAAEAAcAGh0dHAv
dGVzdHMvbWlzYy9VVAkAA5ggUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOJgdkdwJQTf
1QAAABcBAAA/ABwAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0
ZWNoYW5nZS1zdGRlcnIudHh0VVQJAANnIFJWZyBSVnV4CwABBPUBAAAEFAAAAE2OQUvDQBSE7/0V
c1SwYTe1TV3ES2IvBimIeCilrMlrfbjZDZvXiP56N6DQgWHeg4H5cqWXc63neQ6dG1UYtcjWxRJN
6DLb946yN3p/YpmiDF7IS1bRSC70Xbp3q7XSt0YXC1Xc7bGNoaco33A8CNiP1nGLY4iTOysGWilc
9Ze1AY31Pkia9GLZ4/m1rq9nuwuc1R73SdhU5fZQc8dCLR6SsOHT31/x8Fna5oMSw8gtxcMLyT+P
wWOMieIrsrA/IZzT3FTGkR3dQOLZN1YIEvBDMcx+AVBLAwQUAAIACADiYHZHDFyxotUAAAAXAQAA
WwAcAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Ut
d2l0aC1nYy1hZnRlci12aWRlby1yZW1vdmFsLXN0ZGVyci50eHRVVAkAA2cgUlZnIFJWdXgLAAEE
9QEAAAQUAAAATY5BS8NAEIXv/RVztGDDbqpuXYqXxF4MUhDxUEpZk2kd3Owsm2lEf70bUOiDYd7A
Y95XKn270HpRlqBLq4xVy8KYFbTcFy5Gj8Ubvj+RTKviIBikqHFEz7HPfne3UvrGarNU5n4P28QR
k3yDp0GAwug8dXDkNE3vxIJWCq7iZWyA1oXAkiuDOArw/No089nuAid/XmfBpq62h4Z6EuzgIQs2
dPq7axo+K9d+YGYYqcN0eEH557HwmFKm+EokFE7A51w3heFIHq9B0jm0ThCE4QcTz34BUEsDBBQA
AgAIAPpgdkcVNTWSegAAALwAAAAqABwAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1z
dGRlcnIudHh0VVQJAAOYIFJWmCBSVnV4CwABBPUBAAAEFAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHE
VSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5P
h6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/UEsDBAoAAAAAAN1g
dkcAAAAAAAAAAAAAAAAWABwAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL1VUCQADYSBSVrohUlZ1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgA22B2R4fQv8hpAAAAawAAAC4AHABodHRwL3Rlc3RzL25hdmln
YXRpb24vYW5jaG9yLWdvYmFjay1zdGRlcnIudHh0VVQJAANdIFJWXSBSVnV4CwABBPUBAAAEFAAA
ADMyMDTVNTTUNTJSMDSyMjCzMjXWMzO2UEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5
BblAdrSZuYWlgZWhmbmZsUmsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIA
CADdYHZH2wjTQjsAAAA/AAAANwAcAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mYWxsYmFjay1hbmNo
b3ItcmVsb2FkLXN0ZGVyci50eHRVVAkAA2EgUlZhIFJWdXgLAAEE9QEAAAQUAAAAcywpSc0tKFEo
yVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAA
AAAA52B2RwAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQADciBSVrohUlZ1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAA5mB2RwAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkAA28gUla6IVJWdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAANxgdkcAAAAAAAAAAAAAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL1VUCQADYCBSVrohUlZ1eAsAAQT1AQAA
BBQAAABQSwMEFAACAAgA3GB2R0whWdZ8AAAArgAAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJy
LnR4dFVUCQADXyBSVl8gUlZ1eAsAAQT1AQAABBQAAACVzbEKwjAQgOG9T3EPIKEJJEoQF11citCh
gjjUeqYH4U6SU1/f+giu//D9nbzBObAutiF6D/iptvUmyzRmKDoVfEpR4nQJ600IV9ge+SG7CFlS
WjJUHYtWY0zT/U0d8PZKi0VMOpDOPdZKwr9DhPNpDywKyEqa8b4C23wBUEsDBAoAAgAAANxgdkf6
WrE+YwAAAGMAAABTABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
dXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRVVAkAA2AgUlZgIFJWdXgL
AAEE9QEAAAQUAAAATm92IDIyIDEyOjA2OjU2IGV3czEwNS5sb2NhbCBydGNyZXBvcnRpbmdbNjc4
NjZdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEKUEsD
BBQAAgAIAOZgdkdjqqxsggAAAKgAAABAABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kveHNsLWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADbyBSVm8gUlZ1eAsAAQT1AQAA
BBQAAAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh
3lIIy22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21c
J5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAIAOZgdkdjqqxsggAAAKgAAABSABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5
bGUtc3JjLTItc3RkZXJyLnR4dFVUCQADbyBSVm8gUlZ1eAsAAQT1AQAABBQAAAAtjUEKwzAMBO95
hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS7jHGYMiX
Fu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7NrzFEm4Ls
ak3U8Zq+UEsDBAoAAgAAAOBgdkce37VPYwAAAGMAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9s
b2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUCQADZCBSVmQgUlZ1eAsA
AQT1AQAABBQAAABOb3YgMjIgMTI6MDc6MDAgZXdzMTA1LmxvY2FsIHJ0Y3JlcG9ydGluZ1s2Nzk0
MV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwME
CgAAAAAA3WB2RwAAAAAAAAAAAAAAACEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9VVAkAA2EgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAN1gdke669lwfgAAABEBAABO
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8t
aW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQJAANhIFJWYSBSVnV4CwABBPUBAAAEFAAAAL3NMQoC
MRBA0d5TzAEkbAIb2SA22tgsgoWCWKzrGAfCjGRGvb7rEWxsf/F+Ly8IAXxITUxtBHyrb1pXZBwK
VBsrPqQacT7FRee7Myy3fJNVgiI5TxnUhmrqnJv1P1MbvDzzZBGTHcjue1Ql4e8hwXG3BhYDZCMr
eJ2D/8fiA1BLAwQUAAIACADnYHZHYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQADciBS
VnIgUlZ1eAsAAQT1AQAABBQAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2r
v76v90LeSqRJY06AzJk9LJEQVtXire36S+vOdf7qnLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHx
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
bXBvc2l0aW5nL2FuY2VzdG9yLXBhaW50ZWQtbGF5ZXItc2hvdWxkLWFwcGVhci1zdGRlcnIudHh0
VVQJAANrIFJWayBSVnV4CwABBPUBAAAEFAAAAO3PsQrCMBAG4N2nyKiDTRuttoKDFgUHUXAUKWd6
aDQ25RqFvL1VB/UBHITADf9N//9tIzEKh80F/TTeMWXxArUrZb5BuyZTIVnHanUoQWssGBKNu5EY
JjFrn+fqMIUaV/sTSjsjMpQvyhtoVYDFosPa6vMDy/jGXEliBvKIPDOESywUvFM3igciEL2EN9XW
WFdhzdcaHBJvyl4pnzz2BZJpVSITIu21th7hEb9AxGH4ichM5f5CESbJlyLyCq/wiqfiDlBLAwQK
AAAAAADoYHZHAAAAAAAAAAAAAAAAFAAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvVVQJAANzIFJWuiFS
VnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADoYHZHAAAAAAAAAAAAAAAAGgAcAGltcG9ydGVkL2Js
aW5rL2Zhc3QvZm9ybXMvVVQJAAN0IFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADoYHZH
AAAAAAAAAAAAAAAAIQAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvYnV0dG9uL1VUCQADcyBS
VrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA6GB2R8ch79s3AAAAQAAAAEcAHABpbXBvcnRl
ZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRvbi9idXR0b24tcmVzZXQtZm9jdXMtYnktbW91c2Utc3Rk
ZXJyLnR4dFVUCQADcyBSVnMgUlZ1eAsAAQT1AQAABBQAAADLzS8tTvXNL0sNyVdIS8zMSU1RKAGy
MvNSFBIVShKL0lNLFMoyU8sVEksULAwM9AzAQAfG4AIAUEsDBAoAAAAAAOhgdkcAAAAAAAAAAAAA
AAAgABwAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9yYW5nZS9VVAkAA3QgUla6IVJWdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAOhgdkfHIe/bNwAAAEAAAAA/ABwAaW1wb3J0ZWQvYmxpbmsvZmFz
dC9mb3Jtcy9yYW5nZS9yYW5nZS1mb2N1cy1ieS1tb3VzZS1zdGRlcnIudHh0VVQJAAN0IFJWdCBS
VnV4CwABBPUBAAAEFAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUS
SxQsDAz0DMBAB8bgAgBQSwMECgAAAAAA6GB2RwAAAAAAAAAAAAAAACEAHABpbXBvcnRlZC9ibGlu
ay9mYXN0L2Zvcm1zL3N1Ym1pdC9VVAkAA3QgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AOhgdkfHIe/bNwAAAEAAAABBABwAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9zdWJtaXQvc3Vi
bWl0LWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAkAA3QgUlZ0IFJWdXgLAAEE9QEAAAQUAAAA
y80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFCwMDPQMwEAHxuACAFBL
AwQKAAAAAADyYHZHAAAAAAAAAAAAAAAADQAcAGltcG9ydGVkL3czYy9VVAkAA4ggUla6IVJWdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAAAAAPJgdkcAAAAAAAAAAAAAAAAgABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9VVAkAA4ggUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAPJg
dkcAAAAAAAAAAAAAAAAlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL1VU
CQADiCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA9mB2RwAAAAAAAAAAAAAAAC8AHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL1VUCQADjyBSVroh
UlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA8mB2RwAAAAAAAAAAAAAAAEEAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Rpc2FibGVkLWVsZW1lbnRzL1VU
CQADiCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA8mB2Rz//nrRpAAAAawAAAFsAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Rpc2FibGVkLWVs
ZW1lbnRzL2Rpc2FibGVkRWxlbWVudC1zdGRlcnIudHh0VVQJAAOIIFJWiCBSVnV4CwABBPUBAAAE
FAAAADMyMDTVNTTUNTJSMDSyMjC3MjbTMzMzUEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6Lqll
qTn5BblAdrSZuYWlkZWhmbm5oUGsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQK
AAAAAAD0YHZHAAAAAAAAAAAAAAAAQAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9VVAkAA4wgUla6IVJWdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAAPtgdkcAAAAAAAAAAAAAAABPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL1VU
CQADmiBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA9GB2RwqpzJRoAAAAxgAAAGcAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0VVQJAAOLIFJWiyBS
VnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcytlBILS82NDDVy8lPTsxRKCpJLkotyC8qycxL
jzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw
5PKjvRUAUEsDBBQAAgAIAPRgdkcO+alqaAAAAMYAAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAOLIFJWiyBSVnV4CwABBPUB
AAAEFAAAAPPLL1MwMlIwNLIyMLcytlRILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1Ww
cUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsD
BBQAAgAIAPRgdkcO+alqaAAAAMYAAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2Nh
bnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA4wgUlaMIFJWdXgLAAEE9QEAAAQUAAAA88svUzAy
UjA0sjIwtzK2VEgtLzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJ
zyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA9WB2R9FW
2BxoAAAAxgAAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hf
bm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAONIFJWjSBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIw
NLIyMLcyMVBILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8s
yQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPVgdkfVBr3i
aAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGFfbm9hdXRv
cGxheS1zdGRlcnIudHh0VVQJAAONIFJWjSBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcy
MVRILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7O
zM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPVgdkfVBr3iaAAAAMYA
AABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50
eHRVVAkAA40gUlaNIFJWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0sjIwtzIxVEgtLzY0MNXLyU9O
zFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbI
yy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA9WB2R5jwYztoAAAAxgAAAHkAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQJAAOOIFJWjiBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyMVJILS82NDDVy8lPTsxR
KCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsv
UUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPZgdkecoAbFaAAAAMYAAABpABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydC1zdGRlcnIudHh0VVQJAAOPIFJWjyBSVnV4CwAB
BPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyMVZILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAz
i1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUA
UEsDBBQAAgAIAPZgdkecoAbFaAAAAMYAAAB0ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA48gUlaPIFJWdXgLAAEE9QEAAAQU
AAAA88svUzAyUjA0sjIwtzIxVkgtLzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0q
TbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAAC
AAgA9mB2R5ygBsVoAAAAxgAAAHwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJf
Y2FucGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAOQIFJWkCBSVnV4CwABBPUBAAAE
FAAAAPPLL1MwMlIwNLIyMLcyMVZILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlN
Kk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQA
AgAIAPZgdkdDGq9TaAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVy
X2NhbnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQJAAOQIFJWkCBSVnV4CwABBPUBAAAEFAAAAPPL
L1MwMlIwNLIyMLcyMVFILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LI
zMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPZg
dkdDGq9TaAAAAMYAAAB/ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRl
ZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUCQADkCBSVpAgUlZ1eAsAAQT1AQAABBQA
AADzyy9TMDJSMDSyMjC3MjFRSC0vNjQw1cvJT07MUSgqSS5KLcgvKsnMS482M7cwM4tVsHFJTSpN
t7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyo70VAFBLAwQUAAIA
CAD3YHZHR0rKrWgAAADGAAAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9s
b2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADkSBSVpEgUlZ1eAsAAQT1AQAABBQAAADz
yy9TMDJSMDSyMjC3MjFVSC0vNjQw1cvJT07MUSgqSS5KLcgvKsnMS482M7cwM4tVsHFJTSpNt7NS
yMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyo70VAFBLAwQUAAIACAD3
YHZHR0rKrWgAAADGAAAAZQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wYXVzZS1zdGRl
cnIudHh0VVQJAAORIFJWkSBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyMVVILS82NDDV
y8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KI
CHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPdgdkcKvBR0aAAAAMYAAABwABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD
kiBSVpIgUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MjFTSC0vNjQw1cvJT07MUSgqSS5K
LcgvKsnMS482M7cwM4tVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJ
LMlJTdFRMOTyo70VAFBLAwQUAAIACAD3YHZHCrwUdGgAAADGAAAAZAAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wbGF5LXN0ZGVyci50eHRVVAkAA5IgUlaSIFJWdXgLAAEE9QEAAAQUAAAA
88svUzAyUjA0sjIwtzIxU0gtLzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbez
UsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA
+GB2Rw7scYpoAAAAxgAAAG8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1
dG9wbGF5LXN0ZGVyci50eHRVVAkAA5MgUlaTIFJWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0sjIw
tzIxV0gtLzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJzyzJCE4t
Ls7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA+GB2Rw7scYpoAAAA
xgAAAGcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQJ
AAOTIFJWkyBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyMVdILS82NDDVy8lPTsxRKCpJ
LkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjN
K8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPhgdkcO7HGKaAAAAMYAAAByABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAOUIFJWlCBS
VnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyMVdILS82NDDVy8lPTsxRKCpJLkotyC8qycxL
jzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw
5PKjvRUAUEsDBBQAAgAIAPhgdkf1zzaCaAAAAMYAAABoABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3Byb2dyZXNzLXN0ZGVyci50eHRVVAkAA5QgUlaUIFJWdXgLAAEE9QEAAAQUAAAA88sv
UzAyUjA0sjIwtzKxUEgtLzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjM
yywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA+GB2
R/XPNoJoAAAAxgAAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Nfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQJAAOUIFJWlCBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIy
MLcysVBILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhO
LS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPlgdkfxn1N8aAAA
AMYAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGUtc3RkZXJyLnR4
dFVUCQADlSBSVpUgUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MrFUSC0vNjQw1cvJT07M
USgqSS5KLcgvKsnMS482M7cwM4tVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjL
L1FIzSvJLMlJTdFRMOTyo70VAFBLAwQUAAIACAD5YHZH8Z9TfGgAAADGAAAAdQAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF90aW1ldXBkYXRlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD
liBSVpYgUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MrFUSC0vNjQw1cvJT07MUSgqSS5K
LcgvKsnMS482M7cwM4tVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJ
LMlJTdFRMOTyo70VAFBLAwQKAAAAAAD0YHZHAAAAAAAAAAAAAAAAWgAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9pbnRlcmZhY2VzL1VUCQADiyBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA
9GB2RwAAAAAAAAAAAAAAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0
VHJhY2svVVQJAAOLIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAD0YHZHlgdZPnwAAACu
AAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hY3RpdmVD
dWVzLXN0ZGVyci50eHRVVAkAA4sgUlaLIFJWdXgLAAEE9QEAAAQUAAAAlc0xCsJAEEDRPqeYA8iS
XdHERWy0sQmChYJYxDhZB5YZ2Rn1+sYj2P7i/U7eEAL4EOsmzleAH/X1wmUZ+gzFhoJPKUacLsum
De0V1nseZRMhS0pTBrW+mDrnqu5vaoe3V5osYrIT2eOIqiT8O0Q4H7bAYoBsZBnvM/DVF1BLAwQU
AAIACAD5YHZHmPdLG2gAAADGAAAAdwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9uZXR3b3JrU3Rh
dGVfZHVyaW5nX2xvYWRzdGFydC1zdGRlcnIudHh0VVQJAAOWIFJWliBSVnV4CwABBPUBAAAEFAAA
APPLL1MwMlIwNLIyMLcyNVBILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23
s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAI
APpgdkecpy7laAAAAMYAAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF9mYWxzZV9k
dXJpbmdfcGxheS1zdGRlcnIudHh0VVQJAAOXIFJWlyBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIw
NLIyMLcyNVRILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8s
yQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBBQAAgAIAPpgdkecpy7l
aAAAAMYAAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmluZ19wYXVz
ZS1zdGRlcnIudHh0VVQJAAOXIFJWlyBSVnV4CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIyMLcyNVRI
LS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzYztzAzi1WwcUlNKk23s1LIzMssCc8syQhOLS7OzM/z
zEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKjvRUAUEsDBAoAAAAAAPRgdkcAAAAAAAAAAAAAAABq
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL1VUCQAD
jCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA9GB2RwXPsYN7AAAArgAAAJEAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10
by1vdGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAOMIFJWjCBSVnV4CwABBPUBAAAEFAAAAJXN
PQoCMRCG4X5P8R1AQrL4RxAbbWwWwUJBLNZ1jANhRpJRr+96BNu3eN5O32hbhDb6RZx60KcGP3NZ
hz6j2FDoqcVY0nm+9D5csNrJXdcRWVMaM6r1xapzrun+prZ0faXRYmE7sj0OVCur/A4Rp/0GogYS
Y8t0myA0X1BLAwQKAAIAAAD0YHZH4XJMG2MAAABjAAAAjwAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1kb2N1bWVudC1z
dGRlcnIudHh0VVQJAAOMIFJWjCBSVnV4CwABBPUBAAAEFAAAAE5vdiAyMiAxMjowNzo0MCBld3Mx
MDUubG9jYWwgcnRjcmVwb3J0aW5nWzY4MDAxXSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZv
OiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAIAAAD0YHZH4XJMG2MAAABjAAAAjwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1yZW1vdmUt
ZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAOMIFJWjCBSVnV4CwABBPUBAAAEFAAAAE5vdiAy
MiAxMjowNzo0MCBld3MxMDUubG9jYWwgcnRjcmVwb3J0aW5nWzY4MDAxXSA8RGVidWc+OiBpbml0
V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQUAAIACAD6YHZH0VHwPGgA
AADGAAAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5
LXN0ZGVyci50eHRVVAkAA5ggUlaYIFJWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0sjIwtzI1Ukgt
LzY0MNXLyU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PM
S8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA+mB2R9FR8DxoAAAAxgAAAHoA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gt
c3RkZXJyLnR4dFVUCQADmCBSVpggUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MjVSSC0v
NjQw1cvJT07MUSgqSS5KLcgvKsnMS482M7cwM4tVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xL
y7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyo70VAFBLAwQUAAIACAD7YHZH0VHwPGgAAADGAAAAdgAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVy
ci50eHRVVAkAA5kgUlaZIFJWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0sjIwtzI1UkgtLzY0MNXL
yU9OzFEoKkkuSi3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogI
cFbIyy9RSM0rySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA+2B2R9UBlcJoAAAAxgAAAHoAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJy
LnR4dFVUCQADmSBSVpkgUlZ1eAsAAQT1AQAABBQAAADzyy9TMDJSMDSyMjC3MjVWSC0vNjQw1cvJ
T07MUSgqSS5KLcgvKsnMS482M7cwM4tVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhw
VsjLL1FIzSvJLMlJTdFRMOTyo70VAFBLAwQUAAIACAD7YHZH1QGVwmgAAADGAAAAcwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAkA
A5kgUlaZIFJWdXgLAAEE9QEAAAQUAAAA88svUzAyUjA0sjIwtzI1VkgtLzY0MNXLyU9OzFEoKkku
Si3ILyrJzEuPNjO3MDOLVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0r
ySzJSU3RUTDk8qO9FQBQSwMEFAACAAgA+2B2R+O8QsXVAAAAwgIAAIQAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVy
ci50eHRVVAkAA5ogUlaaIFJWdXgLAAEE9QEAAAQUAAAA1ZA/T8MwEMV3PsWNdEhtp0FJvVWtUIcO
VVSmisG1L8TCf4Lt9PNzKMxsSKBb3k/vnfTurqKWvJVPzboR9SscL5dzjx8z5gKDfTuWMn3jwZoe
Ndo79pinGDLulXM3pd8lpMUwMFKeaPGh4Q08YkoxQSXq7aZbwUD6KyQZc1ErN8ZcZNdxzsbiHcvo
VShWZ4b+hsagqXQMBUNhHo1VFTr0RJkNMT5cf+5OeJj99GyDci/9aRfoAB8L7oyhilmCWgSIul1z
GkFrlIU5ud8p2f7jB7d/9cGfUEsDBAoAAAAAAPRgdkcAAAAAAAAAAAAAAABVABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQADjCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA
9GB2RwAAAAAAAAAAAAAAAGMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxl
bWVudC9VVAkAA4wgUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPRgdkeeJ+d+fAAAAK4A
AACCABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBp
LXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUCQADjCBSVowgUlZ1eAsAAQT1AQAABBQAAACVzU0KwjAQ
QOF9TzEHkJAE+0MQN7pxUwQXCuKi1jEdCDMlGfX61iO4fYvv9fIG78H5YNuwtoCf4mxtkoxDgqxj
xlmyEsdr03Zdc4PNgZ+yDZAkxiVD0SFrMcZU/d/UHu+vuFjEpGfS6YSlkPDvEOBy3AGLArKSJnys
wFVfUEsDBAoAAAAAAPRgdkcAAAAAAAAAAAAAAABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50
L1VUCQADjCBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA9GB2Rw8eyYTdAAAA0AIAAG4A
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvYXVkaW9fY29uc3RydWN0b3Itc3RkZXJyLnR4dFVU
CQADjCBSVowgUlZ1eAsAAQT1AQAABBQAAADVkDFPAzEMhXd+hUcYrkmOk3pkq6hQBwZ0KlPFkCZu
L8JJjsTH7yflmGFCAnl5z36WPvugWi3XupOrXskX2O33TwO+zVgYTv68Y56+7Na7AS36dxywTCkW
vDdER2NfNeRl4GCs+eqWOXSyg2vMOWVoVHt329/AqepLSAtByRoaU2Hd91KKkQOJgsFE9rYIDEd0
Dl1jU2SMLHjExszOpwYJw6VTsr06fI9f7XYO04OPhp6Hx02sN4TEuHGuUhYNZhGg2vVK1lJ1rWZh
zvRrnO3/enOciX7i/xN//gT9AFBLAwQKAAAAAAD2YHZHAAAAAAAAAAAAAAAANQAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvVVQJAAOPIFJWuiFS
VnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAD2YHZHAAAAAAAAAAAAAAAARwAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1l
bnQvVVQJAAOPIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAD2YHZHnheqBmkAAABrAAAA
WAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMv
dGhlLWlucHV0LWVsZW1lbnQvYnV0dG9uLXN0ZGVyci50eHRVVAkAA48gUlaPIFJWdXgLAAEE9QEA
AAQUAAAAMzIwNNU1NNQ1MlIwNLIyMLcyMdYzsrBUSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXou
qWWpOfkFuUB2tJm5pZmplaG5gYmZZayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsD
BAoAAAAAAAZhdkcAAAAAAAAAAAAAAAADABwAanMvVVQJAAOrIFJWuiFSVnV4CwABBPUBAAAEFAAA
AFBLAwQKAAAAAAAGYXZHAAAAAAAAAAAAAAAABwAcAGpzL2RvbS9VVAkAA6sgUla6IVJWdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAAZhdkccDghOxTEAAH5QAwAsABwAanMvZG9tL3Jlc2VydmVkLXdv
cmRzLWFzLXByb3BlcnR5LWFjdHVhbC50eHRVVAkAA6sgUlarIFJWdXgLAAEE9QEAAAQUAAAAzX3R
juNIju17f4VRL2MDizJwsU+7mIfFoBe4wCxmgO77AVlZri5jslMFp7Orcxv979eSIqSQFWQcMshQ
PszAyiZ5GJREnhN2ST+fXq4vu2u3Oz2/vF5Ou+vXh+vu+2n3+PC8e3057X78aXc5vZwuv50+7753
l88vu4eX3bdL9+10ub7tnh9+Pb18/OGHfzzvXl4fH08vL/+2e+ted9/PT0+7l9Np93D7/8v59LLr
vuw+/PO/fvrpw+7m8fLwy+lm+aV7euq+3wJ/ett9+PnHn37e/e0f//PPv//4848fbjF/6M13vz1c
dtfL6+k/h/+/pXc5fd+dfn88fbueu+fdT2/P14fff7xcust/7P728PzcXYe0r19Pu3+d3vqMd3/p
Pf/S5/3Qhzs/fHo6DZl//Dhi7L+8Pj/24faHP5Z4fx48cSPW7q+7f/8/Aeivf+0P2q1zje275pjC
7pd9b3r4Y7f7s9W5pbF913zsDY4fr7dbbZ/L4eC/9GIKvhW4Xt7++PPx4fr4NUBanfMhZnn5FL7Z
qpk8pnL35nvLC36KXLzg76HN1p1P4Y/dh97mw3/0rezPj0lzOezOLwPyOlnOa8p36f3HcCBFIXxI
jF9O11jAP//tNs/C0e/D4beHy8vp8z/+9fAWQs5/gJKpDZ7P+kN/zl6ul/Pj9cN/th6hDLhvl8kC
bzFcwUQaVmPd8xf/ud0M1mTVsE78nLzL7tC4XLLkGlZt6/EOJdNi1uev7jh9fW65IgtQJOXLDxaQ
OrIAhwDmo4ZGgAEwdD+CYY2UX08/4b48PL1UMYwhgES9Joh1l2sReUILIzx8riATusVm4J1XnkyZ
wbZavYgWzqA7r/s4WKxH7ZzGocH6gSyc65DM0gBqdvblyn2Zgd3KEe0+2O9NL39cva/A7dZO6vfB
KA7UtOMUFDztR+rrwUqMRHqxOj6WMky/8dBOydeFB7V821HLwTt3nzz0NkMYzqVlTTIzwVBj6OuD
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
asGX5XJJccJdPf3FjslZgIC8Cm0jBUchmrTBCAPJGFxy7xoRuFJEhL9BvUbL3lTBZdxN0OLgEJLz
mnYxk9NaDAjyNn3DFIfCMlK3UmEgnK/5NlkvxPz6vp+fP3ffP76dT0/534S8vD4+nl5evrw+Pb39
cwg6/fcffv7xp593f/vH//zz7z/+/OMPP/x/UEsDBBQAAgAIAAZhdkfl17C7bwEAAA8EAAAqABwA
anMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnR5LWRpZmYudHh0VVQJAAOrIFJWqyBSVnV4
CwABBPUBAAAEFAAAAMVTX0/CMBB/91NceGHL6BoNJgZCMlRMjCYaUXku2wGTsS7tFbYQvrvbAFGY
GF/06XrX+/1p7soYA/4qIzNDza8FCd4b9PkAh3chbcKlCaOAP2GEQiOPRCYNMUJNTKE2EWn+pnkg
ZzxPUc0xYAupAs2EZomSCSrKGKYJ+oSBSymdOI7zF5rCJyOiUtHzgJ02m+eNC3A20fNO4LHb74M1
MrFPoYwte1kzGkGTCn2qta0ljJEgMcMo9PPLVQP0Lk/LQiKUxuBhKrIWNM9g5e4K0Ol08pq9sttA
yiCEuowb2blQkIUYBZW3n03tdR7wsa98UKi2t+fSw15rJXkF7EDJuene3h9X0hNp8myIJcKF54nC
BWDqY1IoQj+LSaQ9paRqwUu83QuYYlZMEOolW92FKxHHkqAYyFogb82HrQuSfBlAjvLpxKgESeVu
nP36Yf/kdj3jrVkYWyXGXgKsftyGI6hvNo2Xfdwtvo9VCbc/EO9QSwMEFAACAAgABmF2R3Zle1Nz
MQAAoE8DAC4AHABqcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktZXhwZWN0ZWQudHh0
VVQJAAOrIFJWqyBSVnV4CwABBPUBAAAEFAAAAM1dwa7rRo7d5yuMbMYGBjEwmNUMejFoZNeDbiD5
Aec+v8Tom6vA1y+vPUH+fSypSipZRfKwiizdRTesG5KHRUnkOWU/6cfz++19d+t257f3L9fz7vbL
6bb7et69nN52X97Pu+9/2F3P7+fr7+dPu6/d9dP77vS+++3a/Xa+3u67t9Ov5/fvvvnm72+79y8v
L+f393/f3bsvu6+X19fd+/m8Oz3+/3o5v++6z7tv//E/P/zw7e7h8X76+fyw/Ny9vnZfH4F/uu++
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
Ttpqpy0GYPshyNgJqrvZw3VPPXT7019/MW87gKGmiJgV0BUQu0LbQ7V8qME4eUFkOSe5/hPC4wqU
W95zrqj7XxlZ5uaK+ERWiorQhyOo4/UJuuWjW5xlTCKVlc3BsATYS5dEwG6IRZCdwVhYMu5b+d+E
xx9t5PH/ZOS3g/H/wPDvmmB/XC0x6u/l2Y5paypyLkSLE22x0+8Ivb4vi44G+4k+eAOLblHjvWuY
0fl+6pzvUKenBe/5qvQ9adXn9EcUBY2Hrt6haNZ/+/8vUEsDBAoAAAAAACNhdkcAAAAAAAAAAAAA
AAAGABwAbWVkaWEvVVQJAAPhIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAD9YHZHVkUy
13wAAACuAAAAHwAcAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAkAA54gUlaeIFJW
dXgLAAEE9QEAAAQUAAAAlc0xCsJAEEDRPqeYA8iS3RCNi9hoYxMECwWxiHFcB5YZ2Rn1+sYj2P7i
/V7eEAL4EOtFbDvAj/q6dVnGIUOxseBTihGn87xbNs0FVju+yzpClpSmDGpDMXXOVf3f1BavrzRZ
xGRHsscBVUn4d4hw2m+AxQDZyDLeZuCrL1BLAwQKAAAAAAAEYXZHAAAAAAAAAAAAAAAAEwAcAG1l
ZGlhL21lZGlhLXNvdXJjZS9VVAkAA6ggUla6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAARh
dkf1uSdZngAAALQAAAA1ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zdHBwLWNy
YXNoLXN0ZGVyci50eHRVVAkAA6ggUlaoIFJWdXgLAAEE9QEAAAQUAAAAFY3LCsIwFET3fsX9gYYm
9qHdqd2I7hRdiIub9rYG0qQkqRK/3ggDMxw4jMh5mXGeCQFcNPkmhRWVgM5ODOdZE7uTPKnwr4M1
gUxgLb1J23lK+1HV27JueF2sy/IJx9FYp8yYdBOc1Vc1kURP4CmAjNBplSSQ1OGS6O52wSl97Jdh
INcqP2uMZ4zk4IMesO+ph2ABwUfTvZw16ktu9QNQSwMEFAACAAgAC2F2R97rw3NoAAAAxgAAACgA
HABtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQJAAO1IFJWtSBSVnV4
CwABBPUBAAAEFAAAAPPLL1MwMlIwNLIysLAyMlBILS82NDDVy8lPTsxRKCpJLkotyC8qycxLjzaz
sDQ2jlWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKj
vRUAUEsDBAoAAAAAACNhdkcAAAAAAAAAAAAAAAAMABwAbWVkaWEvdHJhY2svVVQJAAPhIFJWuiFS
VnV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAjYXZH/ic44DUAAAA1AAAAKgAcAG1lZGlhL3RyYWNr
L3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4dFVUCQAD4SBSVuEgUlZ1eAsAAQT1AQAABBQA
AABGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQKClBL
AwQUAAIACAAjYXZH/WrzNsUBAABuAwAAKAAcAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtZGlmZi50eHRVVAkAA+EgUlbhIFJWdXgLAAEE9QEAAAQUAAAAtVJNb5tAEL3zK+ZmCF4IkXJo
JUtuDZGqVE4V06RS1cMCE1h52UXs0Nj/vgN2LCepequEdqWdN+9jBiEExA9WDy26OJUk4+xxEz9i
cavoeH0elK7ie9QoHcZa7u1AgtCR6NENmlzcYqVkTL0st4dTKCMKaSrhaK9R4K7DkrCKaEdeGIb/
X1GWNEg96S2XIJJ58gHCZH4Fy6UX3nz68vUj5IpJgJnhWSpSpoYn24OxpJ72qTUIZKFAKKXWWHng
iZwNADWSYNIY61yDckAHyoHsOq2YsbR9z2n1PvJE9pCtc7+UpuMQ1PR2qJvAE564uIBVg+UWlGFt
qeFoH6YwLCA5rifuv699ZcZCPr4nsIDfqkIbEe5oenI/L38xY/bjW7bKsxT8t/VIo6mpgcUCZsks
gLvbc/Q5eaSlqQdZ44RF82/wVrHbEVjKjpQ17gh/azlqbcWMMHONfeYpz4LTWBrWw+DQcrA9jskP
TgiHuMXqZWDT/MuBp2vGm1djte3ducMaaWXbbuB/bTPuyGdYqtxIm2lsuTGIpq7JeV8X/tX19Rxe
juBd5L8RrjlQEBUcruaFmmr1ivByDuN3olqncHcDebbJOcYfUEsDBBQAAgAIACNhdkcM+uTqNgEA
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
Gg0mBkICKiZGE42oPJftgMlYl/YKWwjf3W6AKCDGF3263vV+f5q7MsaAv8rYTFHza0GCd/s93sfB
XUTrcGmiOORPGKPQyGORS0OMUBNTqE1MmiskFVn8m+ahnNpUo5phyOZShZoJzVIlU1SUM8xSDAhD
nzI68TzvL7VFQEbEpXK7Dey0Xj+vXYC3ju32CTx2ej1whiYJKJKJ4y4qRiNoKxBQpeksYIQEqRnE
UWAvlzXQ2zwrC6lQGsOHicgbUD+Dpb8tQKvVsjV36TaBlEGIdBnXsjOhII8wDg/efja107nHx77y
QaHa3JxLDzutB8kPwPaUvJvO7f1xJT2WxmYDLBE+PI8VzgGzANNCEXp5QiLrKiVVA16SzX7ABPNi
glAt2ao+XIkkkQTFQFYCttUOWxckdilADu10ElSCpPLXzn79sH9yu5rxxiyMnBLjLgCWP27DEdQ3
m8bLPu4X38g5CHc/EO9QSwMEFAACAAgAk2F2R3Zle1NzMQAAoE8DADYAHAByZXRyaWVzL2pzL2Rv
bS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1leHBlY3RlZC50eHRVVAkAA7UhUla1IVJWdXgL
AAEE9QEAAAQUAAAAzV3BrutGjt3nK4xsxgYGMTCY1Qx6MWhk14NuIPkB5z6/xOibq8DXL689Qf59
LKlKKllF8rCKLN1FN6wbkodFSeQ5ZT/px/P77X1363bnt/cv1/Pu9svptvt63r2c3nZf3s+773/Y
Xc/v5+vv50+7r9310/vu9L777dr9dr7e7ru306/n9++++ebvb7v3Ly8v5/f3f9/duy+7r5fX1937
+bw7Pf7/ejm/77rPu2//8T8//PDt7uHxfvr5/LD83L2+dl8fgX+677798fsfftz99e//+4+/ff/j
998+Yn7Tm+9+P113t+uX838P//9I73r+ujv/6+X82+3Sve1+uL/dTv/6/nrtrv+1++vp7a27DWnf
fjnv/nm+9xnv/q33/Lc+71Mf7nL66fU8ZP7ddyPG/vOXt5c+3P7wxxLvz4MnbsTa/WX3n/8RgP7y
l/6g3TrX2L5rjinsft73poc/drs/W51bGtt3zcfe4Pjd7XGr7XM5HPyXLqbgW4Hb9f7Hny+n28sv
AdLqnA8x5eVT+GarZvKYyt2b7y0v+CmyeME/Q5utO5/CH7tve5tv/6tvZX9+lzSXw+7yPiCvk+W8
pnyX3n8MB1oUwofE+Pl8iwX8898f8ywc/Ws4/O10fT9/+vs/T/cQcv4DlExt8HzW3/bn7P12vbzc
vv3v1iOUAfftMlngLYYrmEjDaqx7/uI/t5vBJVk1rBM/J5+yOzQuly65hlXberxDybSY9fmrO05f
n1tOZAEFSfnygwVkGVmAQwDzsYRGgAEwdD+CYY2UX08/4T6fXt+rGMYQQKNeE8S6y1VEntDCCA+f
K8hE2WIz8M4rT6bMYFutXlQLZ9Cd130cLNajdk7j0GD9QBbOdUhmaQA1O/t65b7MwG7liHYf7Pem
lz+u3lfgdmsn9ftgFAdq2nEEBU/7kfp6sFIjkV6sjo+lDNNvPLRT8nXhQS3fdtRy8M7dJw+9zRCG
c2lZk8xMMNQY5fVB82pZK2mY2mj78ppp82tZu+1pAJZOE06Qv9KnGe10AxaqfD4tZx6xEuklpEIR
BFPbBXQDDoHrfS8iYo9Fa/63L6+vNRdQ768RwTNe3YUr4UasMN3HjxVEo2Sda2zfNScTpzetVjqa
NdPYvms+9gbriTvlcPBfupiCbwWSSTpCWp1zvbpf4JutGtH2vfne8oLHlf0ztNm6SV3f28ThmTQX
QdVTXqTW7o20KIQPq+dDAcNkG47s1HxNcFDLtxyhDLhvl8kCbzFcwUQaVmPd8w31Q3FpwKwa1omf
kzbavbhcuuQaVm3r8Q4l02LW56/uOH19brlCxc4m5csPVlJbTxbgEJhSVtMIMACu030IhjUSrdF/
up5P/6y5aIYAGvWaINZdriLyhBZGePhcQSbKFpuBd155MmUG22r1olo4g+687uNgsR61cxqHBusH
snCuQzJLA6jZ2dcr92UGditHtPtgvze9/HH1vgK3Wzup3wejOFDTjiMoeNqP1NeDlRqJ9GJ1fCxl
mH7joZ2SrwsPavm2o5aDd+4+eehthjCcS8uaZGaCocYorw+aV8taScPURtuX10ybX8vabU8DsHSa
cIL8lT7NaKcbsFDl82k584iVSC8hFYogmNouoBtwCFzvexEReyxa87+c6n4f2PtrRPCMV3fhSrgR
K0z38WMF0ShZ5xrbd83JxOlNq5WOZs00tu+aj73BeuJOORz8ly6m4FuBZJKOkFbnXK/uF/hmq0a0
fW++t7zgcWX/DG22blLX9zZxeCbNRVD1lBeptXsjLQrhw+r5UMAw2YYjOzVfExzU8i1HKAPu22Wy
wFsMVzCRhtVY93xD/VBcGjCrhnXi56SNdi8uly65hlXberxDybSY9fmrO05fn1uuULGzSfnyg5XU
1pMFOASmlNU0AgyA63QfgmGNxGn0x01Rd9E8AujU64RYe7kKyBPaNMKHz1VkomSxGXjnlS+mzMPW
QL0oFs6gO6/7OFjkRm1M49Bg/UAWznVYzNIB1Ozslyj3NAO7lWPavc/A9PLXqPcncLu1M/r9YTQP
1LnjiAqe8mM0/MNKjUR6CTp+LOU0/fpDSyVfEx7W8i1HLQfv3H3y0NsMYTiXljXJzARTjVFaHzSv
lrWShqmVti+tmTa/lrXbngZg6TThBJScDjPa6QYsVvlcWs48IiPS9aRCEQTV+mq6AYfQ6H0fImKP
xWj+7u12eat7EG+MoRLDC9zKixjATzHjxJ8OawhIxdrzefjXIp1MwbxeFSnrwOfgX4NjNMpM6zSf
Q5tywOn4VyadzBO05bVRsGvwnIdpFaC9g+Cyt75RFDsImRRM60DvIwS7aWAvG5a0myB403sKwbAE
VfDl9xfmQsdpG/9iuMtgAILuNWww4oUk/LsYmcCWw1+ZVOMq5WeOpRaqKZciu8Z1w2a30d5ETQnL
Em1czY9CP+CkWnERYnMgYQV+t2rpzoWUnD9/WW89FJMZdShwL6OU5igDKfY1XAmQFyK9x/Hp/NOX
n38+X2uutRhDo/OXuHXXOoKfYgZGMR9W0Jyatefz8K9FMtuiebV009aBz8G/BsdotJ73i3wObcoB
p+NfmWSez9CW14Z+j2OVh2kVkD2O6LK3vlHwPY5cCqZ1IPc4ol2c5U8NS9jjkLzJ/YZoWIIq+LJ7
HEmhw8Cd/mK3x2EBAu5xbDHihST8uxiZwJbDX5lU4yrlZ46hcKoqlyK7xnXDZrfNHkdVCcsSbVzN
j0I/4KRacZH83ZCyAr9btXCPQ0zOn7+sNibKyYw6FLarUExzlIHwPQ5fAuSFyO1xfD59eb3VXWpD
CJ3KT1BrL3QRPUGcyEQ4qiI4pcvOJuFehcVEG6wN9JqqBGwG7us/BpvcgJ+TOTSpBJiLe00WszsA
G14RJbsZyywsK4DtZQwee+NbQ7OTsUrAsgbMPsZgNo/rtDeJuxicL7OHMdgVILKewv5FLO80S8c/
WO5e1ELAexetRzefgnu3ouC3G+qqjNrWJztTTFVQeaXw3NrWDBnLVnsV5dUrybJtHT8GrUBTasQx
qG2Aad673ZzFOxR8au68JLOpUEZSlIHQvYki+qIKo9mX8CM2PnjcnsTr+Xauu7j6CDppPmPWXtgS
9ow38YTxoIq4lK04l4H3+hcTqzc2UFua1XP43ms/jia52T1lcmhRBCgR72ospvIIa3cdlOw+LHIw
XD2299A77G1vBs3OwzO84fqZfYfeah7ESRsSdx1oT2bPoTfTozF+wn5DKOo0JYdjy92GOgB4r6Ht
SGYT8O5KBPhWw1qRTtPK5GaGqYYpLhKcWdN6yRPXam+huHD6FJtW8CPQBTChNtyBEu5xknvdjsU7
Cmxi3nwjsw1QQj5UYdC9hAJaogii2UfwIiweaMweQld1LXUqJd2ZXL+duGfQxZnf1dEP5eqeUT3X
mc6crl4KdSV7Ap2dBur4vYAuM2m7qj2ADtf/DLjnqtOZ2dUO8K5c63dWs7rTaPxub3dRK7R9t7e/
pmlN302zsAO1fMaD1vCdLnrGntfsXTKQOkutXhgY1eiNRh4J7Nk1MqCthyGQQrMKPPdsS6LfVWvu
zonhdwqtTU03I43dFeprNK1mldpyHAOJ+M9mQqp2e6fbqlQ7d3vnuwrUzKrhDrmDGrmrwIU5QFal
mhMCSxRaA59f61781PtrlOKMV3dFSrgRK0zf8WMFBShZ5xrbd83JvOhNq0WEZs00tu+aj73Bel5O
ORz8ly6m4FuBZCaOkFbnXK+XF/hmq0Y0c2++t7zgcd38DG22blI79zZxQibNRdDPlBepc3sjLQrh
w2rpUMAw1oYjOz1dExzU1C1HKAPu22WywFsMVzCRhtVY93xDSVBcGjCrhnXi56SN5i4uly65hlXb
erxDybSY9fmrO05fn1uuUIezSfnyg5WY1pMFOASmjtU0AgyAa3MfgmGNRGv0z5e30+vrveayCSE0
CnaBWnfRAugJYhjm01EFsShfdjYJ9yokkydYV2saZQnYDNzXfww260GcJnNoUgkwF/eaJDN3Aja8
IvQq/zkLywogWj947I1vDVzxZxKwrAGp+4NZHMXL3iSof96X1OfBrgCR9WT3A+byhjka/2C3K1AP
Ae4NtB/dfAru3YqC326oqzJqW5/sTDFUMjWVwnNrWzNkLNvsJdRUryTLtnX8GLQCTakRx8jfAcm8
d7s5C3capNTceclqs6CUpCgDYeq/kL6owuD7EJ7ExgeP2ZPoqp6H/HBXifLO5MHHAmpAisSgq3u4
sX6JK2DX1aYzqat/gYFiuSSy63qPj/+eGcdd1XsKFKsW8F3Xnk7WrvZ5wDNWwd5BZ/XgXyiLeU52
Bq8emCEVewWd4QsHpAT6qdlNj9Od+4i0N5D1ofcEuqsSIevB7wF0ybNs+wND7V8cGtX8zUYjDe3a
TXKw7YcmlEW7Oqx6uqVU6Kqf+c/k1K5G3Ag00uyFldJk1q5e245tJJUGM5wQvp31I/sV012fkuvc
X0tnJQkAA4CaW0cPIHeFxnYgDrY4jKYOkFWXSoihkp4L3MpLFcBPMePEng5ryEPF2vN5+NcinTbh
Y71OUdaBz8G/BsdolJnAaT6HNuWA0/GvTDp1J2jLa6NAwT/nYVoFSMvPedneKApVn0nBtA60vg//
YRrPy4YlKX3Bm9b8wbAEVfDl9wHmSHHWxr8Y7ggYgKB7AxuMeCEJ/y5GJrDl8Fcm1bhK+ZljqXZq
yqXIrnHdsNlttNdQU8KyRBtX86PQDzipVlyE2ABIWIHfrVq6OyEl589f1tsMxWRGHQrcuyilOcpA
iv0MVwLkhUjvcVw+11xll88abR+x6q5sHnPECZyh/1BBYbSre0b1XGcyny6fq4UXvlIK13Otx8vn
9VQO6AfvBbPgnqtO5moPZ3N+9fsLCbbRapE9hcvnvd1Fje8jLGGN1kvuHVw+x+k4tQxhvyDnQer1
y2dd9Iw9uxcwFCuMpMdnO/1fGhjU/K1GHgns2TUyoK2HIZBCswo892xDGVBYECijZvWhp5uNJi8s
Ep5Ws0ptOY6BRPxnc/4qHiemx21VqKuZhDzn+UoA64Y75I6pVNXYB5xxbWxPCCxRGA1ctf1/UX2/
fTHZ5b+I3+df4r75pW4bX7u6Z1TPdaazof5b+kvJ9/MXu2/mefzjJbMzfan6Hh5fMAvuuep01tVu
dV/Kv2O/WO1oXzTfq18MvlG/6L9Lvxh+i34Rvz+/TDvEF/A785wHrYHfdNEz9rwGTrZlL5bfgZcG
RjVwo5FHAnt2jQxo62EIpNCsAs8925KsV39ffXH6plpRH3q6GWngwm+k4bSaVWrLcQwk4j+bCclp
/Q3zpfK75YvXt8oX3ffJuuEOuYMa+K0CF+YAWXVqTggsUTgN/H47vb2cu7rN8SmKTjUusWuvUSSH
Je40m+c/VNGEuipQ2bSoy2LWRAcDGaKtiJRHi1ocZ7PcJF5kdWhVGFVSLaq0mMUzvO31UqLZV7kY
VwPT8NFpb38TaTR9Lg3jejAaP1rO8/yptYmaX47A7AFE0zJ0wF/YI0iKPw3t6W+WewY2QPAewjaU
QUykRddjktiaTBSk1rxi1MwyFVFVhVNl2Lx+OAuw2sOoKmZ5us0r+5HojCKxdtyG2nJIGYbnbVy8
JyIm2IIPZTY5ashRUTh0D6WCNhUE0+yxeBMqT1R6D+bt/LXmAny4a/YbJrS6y15ADUiBeAyfKsiQ
fokrYNfVJlPtYVmt+BTLJZFd13t8/Pf1QI8JHNxXLeC7rj2ZxwOg0ZnW73Sk6FYrRvY2HtZ7w0sc
3814ArZaM7l/8TCJw3TuI8KORd6H3Cd42CgRsh7sPsRYtjC5+gO7nYfy0OBeQ7vRSEO7dpMcbPuh
CWXRrg6rnm6oK0qrguXUrkbcCLTR/qWV0mTWrl7bjm0klQYzPH9Fh7nqcpMVqnYuJde5vxLWWhIA
BsBUr5IeQO643vYgDrY4tKa+nm9frlU/dhwjaGRnill3kcrYM16Y0/GggjCUrjiXgff6k8kyGlcr
Et3qOXzvtR9Hk/WMTTI5tCgClIh3NZJpGmHtrgO9Kn/KwXD1iDYfHfa2NwOu0NfwhusndfpoFYfs
og0Jap3zJDX1aKZHY/xY/T4VNUzIcGyn4msBQC3feiSzCXh3JQJ8q2GtSKdpZXIzw1CHVBQJzqxp
veSJa6P9KwqnT7FpBT8CXQATasMd8lf9PMm9bsfCnQEhMW++sZL3ZeRDFQZT7EW0RBEE3zfwIywe
aPQewvvXy+OuqbmexggaRZ1i1l3LMvaMF3hAPKigJaUrzmXgvf5kNo3G1bJJt3oO33vtx9FkPaWT
TA4tigAl4l2NZAZHWLvrQL+H8JSD4eqRPYTRYW97M+B7CGt4w/WTewijVZy/izYk7CFwnqSuH830
aIwfu4cwFTUMyXBst4dQCwDuIbQeyWwC3l2JAN9qWCvSaVqZ3MwwFC0VRYIza1oveeLa7CFUFE6f
YtMKfgS6ACbUhjvkr/p5knvdjoV7CEJi3nxjJf7LyIcqDKbei2iJIgi+h+BHWDzQ6D2E2y+X95qr
qffXqOkZr+4qlnAjVpj+48cKKlKyzjW275qTOdSbVgskzZppbN81H3uD9Ryecjj4L11MwbcCyWwd
Ia3OuX5fYIFvtmpkT6A331te8Ph+wDO02brJvYDeJk7RpLkI+wCUF6nLeyMtCuHDav9QwDDahiM7
3V8THNT8LUcoA+7bZbLAWwxXMJGG1Vj3fEM5UVwaMKuGdeLnpI2mLy6XLrmGVdt6vEPJtJj1+as7
Tl+fW65Qv7NJ+fKDlejWkwU4BKaW1TQCDIBrdR+CYY3EafRr97XuonkE0KnXCbH2chWQJ7RphA+f
q8hEyWIz8M4rX0yZh62BelEsnEF3XvdxsMiN2pjGocH6gSyc67CYpQOo2dkvUe5pBnYrx7T7w35v
evlr1PsTuN3aGf3+MJoH6txxRAVP+TEa/mGlRiK9BB0/lnKafv2hpZKvCQ9r+ZajloN37j556G2G
MJxLy5pkZoKpxiitD5pXy1pJw9RK25fWTJtfy9ptTwOwdJpwAkpOhxntdAMWq3wuLWcekRHpelKh
CIJqfTXdgENo9L4PEbHHYjT/9V51/VzvKgkc0SqvWh41IMXBfr3XUQz1ElfArqtN58z1Xi9v8OWS
yK7rPT7+e2bEhgQO7qsW8F3Xnk7NHtDoTBfo+ATdasWQhr/e94aXuEK/L4Gt1kxr9+t9mo/XO6jb
sz60Zr/elQhZD16rD2WLQ+txYKjTi0OjGr3ZaKShXbtJDrb90ISyaFeHVU+3FAOFVcFyalcjbgQa
afDCSmkya1evbcc2kkqDGU6I23GuutxkpXqbScl17q9lspIEgAFAja2jB5C7Qls7EAdbHEZT33+r
fCnQGEElOxPMyotUxJ7x4pwOBzWEoXDFuQy8159OlsG4XpGoVs/he6/9OJpkZuycyaFFEaBEvKuR
TtMAa3cdFKjyZQ6Gq4e0+eCwt70ZFAp9BW+4flqnD1bTkE3bkKTWGU9asw9mejTGj9fvsahxQo7H
hiq+EgDV8o1HMpuAd1ciwLca1op0mlYmNzMsdUh5keDMmtZLnrhG2r+8cPoUm1bwI9AFMKE23IEQ
4NMk97odS3cG+MS8+cZa3heRD1UYcK+ghJYogij2DdwIiwcavYfw+F/NxfRw12jpCa3uEhZQA1IY
/MOnChKiX+IK2HW1yfR5/PdqVaRYLonsut7j46/rwRsTOLivWsB3XXsyRwdAozOt3wFI0a1WjGj/
x3/dG17iuOp/ArZaM6n3HyZxUM59RFD6eR9Sdz9slAhZD1bXj2ULU6s/sFP05aFBLd9uNNLQrt0k
B9t+aEJZtKvDqqcbaoPSqmA5tasRNwJttHlppTSZtavXtmMbSaXBDM9f0WGuutxkheqbS8l17q8E
s5YEgAEwlaukB5A7rq89iIMtDqOpu8unqsvk4a+SnBNe5eUp4EasOJ2HjzUkoWCda2zfNadT5GFa
rz0Ua6axfdd87A0yUzTmcPBfupiCbwXSKTlAWp3zAqWd4putGtLaD/O95QWvUNtP0GbrpvX2w2Ya
lXNzkRQ34UVr7oeRFoXw4XX3WMA41/ojQ+VdERzV3g1HKAPu22WywFsMVzCRhtVY93xLhVBaGjCr
hnXi56SRFi8tly65hlXberxDybSY9YQADtPX55YrVeVcUr78YC2r1WQBDgFqcy2NAAMo9LkLwbBG
ojX6118ur+eai2YIoFGvCWLd5SoiT2hhhIfPFWSibLEZeOeVJ1NmsK1WL6qFM+jO6z4OFutRO6dx
aLB+IAvnOiSzNICanX29cl9mYLdyRLsP9nvTyx9X7ytwu7WT+n0wigM17TiCgqf9SH09WKmRSC9W
x8dShuk3Htop+brwoJZvO2o5eOfuk4feZgjDubSsSWYmGGqM8vqgebWslTRMbbR9ec20+bWs3fY0
AEunCSfIX+nTjHa6AQtVPp+WM49YifQSUqEIgqntAroBh8D1vhcRscdiNP/lVvUq295fJYInvMoL
V8CNWHG6Dx9riEbBOtfYvmtOJ87DtF7pKNZMY/uu+dgbZCZuzOHgv3QxBd8KpJN0gLQ65wXqPsU3
WzWk7R/me8sLXqHsn6DN1k3r+ofNNDzn5iKpesKL1vQPIy0K4cPr+bGAcbL1R4ZqviI4quUbjlAG
3LfLZIG3GK5gIg2rse75lvqhtDRgVg3rxM9JI+1eWi5dcg2rtvV4h5JpMesJcRymr88tV6rYuaR8
+cFaaqvJAhwC1OpaGgEGUOh0F4JhjURr9JfX03vV22eHABr1miDWXa4i8oQWRnj4XEEmyhabgXde
eTJlBttq9aJaOIPuvO7jYLEetXMahwbrB7JwrkMySwOo2dnXK/dlBnYrR7T7YL83vfxx9b4Ct1s7
qd8HozhQ044jKHjaj9TXg5UaifRidXwsZZh+46Gdkq8LD2r5tqOWg3fuPnnobYYwnEvLmmRmgqHG
KK8PmlfLWknD1Ebbl9dMm1/L2m1PA7B0mnCC/JU+zWinG7BQ5fNpOfOIlUgvIRWKIJjaLqAbcAhc
73sREXssRvN3b++3qiuoD6CSwTNi5bUrIU9occSPn2voRtFiM/DOK09nT29bL3o0C2fQndd9HCwy
A3hK49Bg/UAWznVIp+sIanb2CzT/IgO7lUOav7ffm17+Cs3/DG63dlrz90bTZE06jqT5ST9a8/dW
aiTSi9f8oZRx/A2Hhpq/Kjyq+ZuOWg7eufvkobcZwnAuLWuSmQmWkqO4PmheLWslDVMjzV9cM21+
LWu3PQ3A0mnCCQhxHWe00w1YqvnZtJx5xFquF5AKRRBQ8+vpBhxCofmdiIg9Fq35z29ffi24gK7n
9/P19/On3XgZ9VE0UnhGLbp8legRMUz68aOedBiseZ1Bi/Unk6g3LVVAFeunM2ix/mNvsJ7KUyaH
VmUQE2lRjWTyjsC214J+T2CRhXEFkH2B3nxvf1PgewPPCRjXgNwf6G3iEE5akrA7QHmRmr030qIQ
Puy+QChjmJDDkd2uQE1wcE+g/ShmUmjRibLw2w1pMJ3mlVlPinp9YlUmMLfmNeMnbdU+gVXpdCk2
r+DHoAlQSu04Q/7aj/Pb87Ys3DtgU2vBM1bSX0864BCYclfTETAAvm/gQ1SskZg9g3/91l2rvr0Y
I6jUc4JZt+UlY894cfqHg4ovKkpXnMvAe/3pNBqMq78z1a2ew/de+3E0yczlOZNDiyJAiXhXI524
AdbuOijYKVjmYLh6aJ9gcNjb3gyKXYIVvOH66T2CwWqatmkbkvYJGE96r2Aw06MxfvyeQSxqHJHj
seG+QSUAunfQeCSzCXh3JQJ8q2GtSKdpZXIzw/CbzYoiwZk1rZc8cW1+X1BROH2KTSv4EegCmFAb
7kCI8mmSe92OpbsFfGLefGMt9IvIhyoMuGdQQksUQRR7B26ExQON20O4nd8+vdddUEMInaZOUGsv
ZxE9QZzIQDiqIiely84m4V6FxZQarA0UlKoEbAbu6z8Gm9zQnpM5NKkEmIt7TRZzOQAbXhElOwvL
LCwrgO0tDB5741tDs7uwSsCyBsz+wmA2D+e0N4k7DJwvs8cw2BUgsp7CPkMs7zRJxz9Y7jTUQsB7
Da1HN5+Ce7ei4Lcb6qqM2tYnO1NMdU55pfDc2tYMGctWew/l1SvJsm0dPwatQFNqxDEoqT/Ne7eb
s3gXgk/NnZdkNhDKSIoyELoXUURfVGE0+xF+xMYHj96TuPxa+yXKGEEjzVPMugtbxp7xAk+IBxXE
pXTFuQy8159MrNG4Wm3pVs/he6/9OJqsZ3eSyaFFEaBEvKuRTOUIa3cd6HcfnnIwXD2y9zA67G1v
BnznYQ1vuH5y32G0ioN40YaEXQfOk9wDGM30aIwfu98wFTVMyXBst9tQCwDuNbQeyWwC3l2JAN9q
WCvSaVqZ3Mww1DAVRYIza1oveeLa7C1UFE6fYtMKfgS6ACbUhjvkr/p5knvdjoU7CkJi3nxjtQ1Q
Rj5UYTAFX0RLFEHwfQQ/wuKBRu8hvH/57XytuZyGABo9nSDWXcgi8oQWKED4XEFIyhabgXdeeTKR
BttqraRaOIPuvO7jYLEey3MahwbrB7JwrkMybwOo2dnX7xYsM7BbObJXMNjvTS9/fKdgBW63dnKf
YDCKIzbtOMIuAe1H6vbBSo1EerH7A7GUYf6Nh3a7A3Xhwb2BtqOWg3fuPnnobYYwnEvLmmRmgqEC
Ka8PmlfLWknD1GYvoLxm2vxa1m57GoCl04QT5K/0aUY73YCFOwB8Ws48YiXcS0iFIgimugvoBhwC
1/1eRMQei/3dwOv51/Pb7T3LuNbffy+skbjznvv0h3Hgg0iUfx57uf8aPFLOT6JKnnm842yb3QFO
4zCnXBUmn8lyX3VyENfN+wlVnj32uiLnHUne/+1sn+wZLi8I+btPMQL3HWgwLUMH/KXvROdyzRt/
8W+m342aAOHfkS7bT8XjfOZYOVK0u7wF5N2v3Sf4S8N8u2udJZMZ2V4/aCXFdr5pbamua/54LNsS
q9L+GJXGJ57lE+9sy16+ho9xDgTKYJlbRoxpqw0SlW2yJr+8TViOfxNZSLjiJgJk7VJtJPvcF8kV
xLAoHPz9dDllLAim+r7amUx6otKa8/V8Q0TsZMZGCjxl+ATo1ZyHqFAfplppunQhNOnDaD2Poien
QnlHUXcOlhrBmToI1XqYKiXmkwetLR+G8WafT56gJvM+JMbDRomQ9WA14rjecGf1B3aqsDw0qAPn
W7doG/PhXvwl0LodeKSQg123mC0WT7ct9zqsmozhxntpVbCc2tWI68k233eVVkqTWbt6UeOoErjy
O67soPNLKX9Fh4HocpMVfrfFpWRVJ+x7LS0JAANgrFxJDyB3XA94EAdbHJqp/3a9/H66nRHevzAV
I4axOB0BGoDzFLVAMNfqgbUboQmC4bphpxE4bYAFEDXCZK3RCc9OQjWDuVIvZLxozRCM4x2/PNmC
duB9ScxgV4DIerKaYq5JuG3jH+y0RT0EqDGWraJi4yoEsvpuJN+XmuZH5ZRvgh+udHzH3a6S2SZp
vgtsWFM84Q9QXWQiWX53ZFjnktQ/QMW5MW6Wle03RSRz2CDf/K2W0A7n1mDz7ZCUr32Fi74XKiVo
ykCYyiqkbqowuN7zJHU+eIxa+/LT6+UFkn+JpRQvEopwgGg/0k9WfoO1Wvg9e1G6b7DLDJrZn1V9
gLus+YKxSvItfSTFN1hrBd/KidF7g+3UBNITLKk9xpPWeoOZHo3x43VeLEW8Q8djQ5VXCYBqvLQd
1AygIY6ZTMm1npbZERll29wHqxrbUjerYa4T2rM3s3LC6W5fWXnimGo6sxLr896+1syItsrJWM0R
pKB9toQ2mhiFbzMwUnJ8tubVLdNxRcRLFQbUcCWUTBFEod/cyJoHGq217pfz6ydEuiWGQrTAFsJn
QLdRXqJqG4y1ou3ZidBsg9l6kszenGKTnUW9Fmw1cm3pIlRvMFaKtZUPrdUG03irpydVUGq0H4k1
WKmRSC9Wo8UKhPtwPLRTaHXhQX2W3vJFP+sYAhT/3C3XSHzSyEPn2tNWZeCaXoOaZFqT4Q+TyuuD
5tWyVlJPt/kdYHnNtPm1rB091qrBK38TSIxMz7TyV/o0Wp1uwMLfBvJp2dUL+31gCalQBMHYfwHd
gEPg+sOLiNhjMc+neLudr59PL9AvB5+MgajxXznPx8gzLwRv+YkX0UH9wIuMI/W8i2ia+Reviyjs
0y7gIPKzLmZ71aMuVm7Sky6ig/ZBFzk/5jkX0Xz654dPF4H0lAvRn37GRbQsQha9+edbJFWK/zZw
+pPh0y1MYNBnWzy1mJp/KhtDmT2PgehojXOk86Ia6IcsotSvt6wq0Vrt/y26ZXU1SX+IKqMTzfRZ
FpYVL13Ah6g+TwcMMzN+igXNQTbJmXgaREpg3NuG0RMsxJw9Kl32/IoKwlcQDHx2RTkVVIdSPLfC
mST6YTK/Nzy9/PP0M/bv11JTMWL83Uw8Qn7DyHjKv2IczdU/Y1y5Ub9jHA0zv69IIrC/ZIQCyL9l
jNaqHzM+OUm/ZhzNtT9nXHsxv2ccjacvxBcnW/pFI+tL/6ZxtCtAZD353zVONYnfXoc/GP6ysRoC
/W3jolXU/ChjDGT2O71sX2qaH5VTvgl+uNLxHXe7SmabpP0vm+xqiif8AaqLTCTT3zra1bkk9Q9Q
cW6Mm2Vl/ItHijlskC/xK8KZdji3BqNfPQr52le47HePhQRNGQj87WMZdVOFUfz+0ZHU+eBxTxvp
bueX2/kT9gSThTEQdfqX8dMx9BwT3ht4lklw0D/NZO1IPs8kmOb+DXUahX+mCRoEeK7JZK97ssmz
m/hsk+CgfrpJxo97vkkwn//d6/IiEJ9xIvkzzzkJlkXIorfwvJO5StM/Vo1/snzmiQUM/NyTZYup
+nfZIZTdAzzyHa1xjnReVAP9kEWU+vWWVSVaq8MjDwyrq0n6Q1QZnWi2z0UxrHjpAj5E9Xk6YJiZ
9TNSSA6ySc7Uc0cSAuPeNqyelSLl7FHpwuellBO+gmDoc1OKqaA6lOb5Kb4k0Q+Teff77XTDnqOS
Wkrx4rtVwwGgPWk/UXWO1lrJufIi9OZol3m35+zPKU3EXdSY0VgjMJ98hCqO1kppuXaideVoO736
MT3B0lupGU/6vdSDmR6N8ePfTR1LEd/TOB4bvp26EgB9P3XaDipG0xjHSuhkW0/L7IiMsm3ug1WN
bamb1TDXCc25nV054XS3r6w8cSw1oF2J9XlvX2tmRFvlZKv4KFLQPlvildcTo/BtBjYqT8jWvLpF
+q6MeKnCgO/uLqFkiiCK93e7kTUPNFprnX56QJ1eoJefLW3lmIE2zIeAhuN9RR0X7bVKLuNHaLlo
uR4yixicnkNDiJpuNteoupWXUNVor1R2OTda20Xr2B2eTryg7yRvEjcalqAKvqzWS4oTbunpL3Z6
zwIE1HxoGxEclWjaBqMMBGSTv3fzxANLSxERyA/rNSs2j6VaFhzIuqzFwSE05zXtYianVQyIcZCK
hqkOhWVU3EqVgXCO5ttkvRBpXvVT172eT28IVVuYihFD+5uOAJ7GeYosLZhrSdrajeBowXDdltII
HEPDAoj8bLLW0LNnJ6GawVxJzjJeNDcLxrE9LE+2wMx4XxIz2BUgsp4sJ5trEu7d+Ac7RlYPATIk
sFXwfjosZRNRhdExsfkmNSJiQkCEhwEdpZSFFYTWcTC8jaERNOczaVUmp1OKB/Kv0qaoDIRlU9gu
VWFw3uXZSH3wGIZ0x14QOtvxsWJ7u4PvBc37yAzrrn8d6JMPxa3uuVePTb4sqxJcZT511778c+Eh
Mam7+rWfzy4Mh7rPr4FKTqTEnggvmjfdp1c8wSiED8+V7uk7mYYjQ5ZUERzlLMBtzTgpUDQ3PBhA
yYbuzKsj9VToDrzXkeNBXA8oZkCaoErug7UcyF3Feu7ca/20lOeOvHNP4DvqBgaHADmOtrWBARS8
xqXpWSPR/OPll9MV4TKzHR8rdKbxI8Bl8j4il+lttVzmyYfgMr3Vum9MvhyXkVxFLjOaarjMwkOo
Wm+r5DLPLjSX6S3jfZycSIHLUF4kTm+kRSF8WC4TFh5utuHIjsvUBAdZBnJbM04KFM0NDwbQcZlw
fxlxGS4awmXYHlDKZVRBdVwGbDmQu+a8xc5ictrYYCCX0TcwOASWgbq1gQFwLuPT9KyRaP7xqfvy
0yu0M5NaSvFCf4oHAKeh/UReM1prmc3Ki+A2o926kyT+HL9B3EWOE401LOfJR6jiaK1kOmsnmuuM
tvFOX5xgge9wniTeaKZHY/xY7jOVItye4diO/9QCgOwEawesmwpJ1ygUQXR8aLobjRgRHw/hRGLf
KOVF6sA6bgS3KjCA5jzO/cjkNArhQI5U1vhUYbBMilqiIgjOmfyapQcazXU+X95Orwh1SgyFaKGV
hc8Ab6K8RNY0GGtJ07MTwZkGs3WLmb05xiQ7i3wp2Gro0tJFqN5grCRLKx+aKw2m8VZPT6rAlGg/
EmuwUiORXixHihUI9+F4aMeQ6sKDrAW65TkvDY6qGcAhdMwo3nZGxIgNh/AioTuUsiJlWB0nQtsR
5q85f1PTMTl9fDSQD5U0N0UQLIuCtgeHwHmQV0O0x2JYy2t3gv7RW2IoRIs9a/yMcCDCS+ZAvbGa
Az05URyoN8t0lMmb5UCis8yBRlsVB1q4SByoN9ZyoGcfhgP1ptMdnpxUiQORfjQH6q3USKQXz4FC
BeJtOBwacqCq8Cg3QW55zkuDo2oGcAglBwq3nRUH4sJBHIjvDsUcSBdWyYHAdoT5qzhQbDo2HIiN
hnKgguamCAJyIH3bg0MoOJBTQ7THolnLz92tQyjQbMfHCg1r/Ajwn7yPyH56Wy35efIhuE9vtW4k
ky/HfCRXkfeMphras/CQqvawVZKeZxea8/SW8YZOTqTAeCgvmoc8jLQohA/LdcLCw902HNkxnZrg
IP9AbmvGSYGiueHBADqGE+4vI4LDRUP4DdsDStmNKqiO24AtB3JXnbfQWWxOGxcM5DX6BgaHABmF
trWBAXA+49P0rJFo/nF5g3ZzJjM20vxObojH5DxEFvMw1ZKYpQvBYR5G2bcwiwyGdxT5y2CpoS+p
g1Cth6mSvDx50NzlYZi87xZjLnkfEuNho0TIerCcZVzv/JJZQ8ZSHhpkEsCtS/vgGIqbGnLXMZXx
RjIiKkwwhKcwd3opS1GE1HEUrK0g3przFdqHyeniYoH8RNukwADw+7xrsBW9jHiHtnljs8WhmcRr
9/YzQkpmOz5WaEHjR4CX5H1EZtLbaqnJkw/BTXqrdZuYfDl2IrmK/GQ01RCUhYdQtd5WSVGeXWiO
0lvG2zc5kQJLobxInN5Ii0L4sFwlLDzca8ORHVupCQ5yCeS2ZpwUKJobHgygYy3h/jKiLVw0hLew
PaCUuaiC6rgL2HIgd815i53F5LSxwUD+om9gcAgsA3VrAwPgPMan6Vkj0fzj7XS7/A79e6vUUooX
+lM8ADgN7SfymtFay2xWXgS3Ge3WnSTx5/gN4i5ynGisYTlPPkIVR2sl01k70VxntI13+uIEC3yH
8yTxRjM9GuPHcp+pFOH2DMd2/KcWAGQnWDtg3VRIukahCKLjQ9PdaMSI+HgIJxL7RikvUgfWcSO4
VYEBNOdx7kcmp1EIB3KkssanCoNlUtQSFUFwzuTXLD3QmPcZ/tJdoW+nEkMhWnwj1/gZeTci4SW/
GbE3Vr8Y8cmJei9ib5Z5W9Pkzb4VUXSW34k42qpeibhwkd6I2BtrX4j47MO8D7E3nV6nk5xU6W2I
pB/9LsTeSo1EevHvQQwViO+6GQ4N34JYFR59ByJyy3NeGhxVM4BD6JhRvO2MiBEbDuFFQncoZUXK
sDpOhLYjzF9z/qamY3L6+GggHyppboog4PvG9G0PDqF415hTQ7THYljL/e3ll2v3dvm/8yeICq3s
sdixkS3+hPAjKIbMlhIfNWnK+1LcKbHONKTnWCyTUoaSedXCRUWvcp4Sy0p8tGSLcGU4V+IxNZb1
hSIxMDAKzccS49IswBg8V1sWMHaN9K+GzM0QDOVXirYFOBegljS0woBKxrfsC1bED4gK8T9NTytm
gzUgSm6oa6mqMCqm+NQxbQgjEhTljdUNujgkyClrW3dhQAXfbNLUvZFpvnh7BPv6jrDQ1FKKF/pq
PAA4J+0n8szRWsswV14Etxzt1h0t8ef4JOIucshorGGPTz5CFUdrJWNcO9FccbSNHWNxggV+yHmS
eKOZHo3xY7nfVIpwm4ZjO75XCwCyLawdsG4qJF2jUATR8bfpbjRibnw8hLOJfaOUp6kD67gZ3KrA
AJrzOPcjk9MohAM5WFnjU4XBMilqiYogOKfya5YeaAzXuZ7e3i9n7F/bPRkDUWNbm48RHiV4y2wq
OqgJVcaR4lTRNNOGFlFYZgUHkfnVbK+iWCs3iWVFBy3RyvkxXCuaT+3i6SKQGJfoT/OuaFmELHrz
HCypUrzXpz8ZMjETGJQloS1G8tTiqZuPOpSSoSW3tBVJk0JCPA3rQsVsrSy8krMp2h8eQ8Xc0gZn
Q97EiCh/q2imBcFALlfeZtWhFLzOuQH7YdJs7Pfu9XS7YG9XWdrKMUNjnA8Bfsf7iuwu2mvJXcaP
4HbRct2wFjE4ZoeGEHndbK6hdSsvoarRXknqcm40p4vWsXE8nXiB0UneJG40LEEVfFkulxQn3NXT
X+yYnAUIyKvQNiI4KtG0DUYZSMfgknvXiMBJERH+BvWaUvZWFFzH3RQtDg6hOa9pFzM5rWJAkLeV
N0x1KCyj4laqDITzNd8m64WYX9/Xy9un7ut398v5Nf+bkPcvLy/n9/fPX15f7/8Ygk7//Zsfv//h
x91f//6///jb9z9+/803/w9QSwMEFAACAAgAk2F2R3L8+Sm8CAAACyAAADoAHAByZXRyaWVzL2pz
L2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1wcmV0dHktZGlmZi5odG1sVVQJAAO1IVJW
tSFSVnV4CwABBPUBAAAEFAAAANVaW3PbuBV+96/A2NPY3jEpyZYcS7LVSXyZdnbbZupt97EDkqCE
mCS4AGhLyfq/9+BGkRQpyZ34ockkBHE9l++c74D29UKmyezgekFwBI+USIzCBeaCyJvjQsbe1TF0
C7lKyOxgktDs6QxNnqmgkkTo+wGCP5IspReRkHEsKcsmKGMZmeqhgPGIcC9gUrJ0ggb5EkXQJtH0
4PXAbGc3CVnC+AQd9S/Gesx/oAm5o3FsxwMcPs05K7LIc1PjK/W3epA5QbCERugoiiIzFrNMejFO
abKaoJRlTOQ4tAKmmM8piDwgKeqbrpyBcloPThLQ6JlogRaDhqQXFxct+wucCU8QTuPKoKDfiD6j
eqiXkFhOUN8fuf6IijzBsAnNwDJWwhcayQUs7vf/ZOXDUUSzebnSyGZdo1p171hxabYAoWQ5fcGe
CW9oNBqNpl3GJsSYwVc++QXOEnZxnDAManA6X8i659SsW1Afgy7uKAampxJU7DdUljhIiBeSJKlp
6el9a1Z6WYB2nvahgtoLx/laskcSKt91gkYvrkOmCReLWWd3AFQ/X5oT7pc5uBf2B9XIGfLVo6lh
p3iCRiRYqf+RFvVzwsKnL5hLH1SdxJQL6YULmkSdhlXHPcL6s22bcZKCa892nGfPcOY3gPMCNaUG
u5FDHaBF0hAnHk7oHGJDsha1OFFI/wvOooQ4c9h9lAnV+4IYh67xHBZcKNcosZsRiAPwTuE8BmeW
wDHBo8XbJkUN55twmHOymjaA6Y92+cuYGPmS7TSzH3OWNoxt86M6Q1n970UaEA5oIlV0mV4n+GYa
tagdj2sJ0IVLWxp0kTwcDlvTTdX7ZY5RG41MCJgwKBO+xYGFZxtEjLg1OF3YhFVRXKvYmnAMSXSa
ZUuSyrmKTiWmNaDLJhY1TpFarMIiz0SrHgJ76lfQgxP85KkOIxBN8ZzUPDNB56XBgwQrK6qJIaQG
kAFEsS3U1HvtlavhuDP3xiReJwAFK9ixpMdKNLcsjeKovhScLbqnj8l4uo3Ty51slqnKYaOim66j
aGMDFJGkewUZ75Sm9xN6LPKccQlMyy2SwahpSjIp0E89OA8XcsGMvQ0bq2IGUC8Bp6HzlF6g53Tw
fzlHCYMBEnqyS2eXDtgq3eAkuXUStM4+N1yW4qXXoPcU6gLbdd4vead5NNh96zllZJchXTumTU6f
5cTQpvdCgicqPclV2BlLGMGRfy6mFTWGVukjIbEsxOciAA4v+dBX0dMqjloiGUsCzOvj7ug4ITpC
1wMp+1b2lsnpwsSxraNU01ULqt1dEnZljq2l3BoWMV0Ss4/Nx/26Sj7WNYgJs00Wf6GQC3gDauWe
3zyaRWQJSWqLamsirIjQppdNRjV6u7JZLFNi2oBtpSY4L2DLnYJergUdGBA7EjJvWljbLhnMvpYC
l5VZ7Wgac5waCRtxUi8jKjFy25FpN22zglqTvViuJwkUjlAz70FMl+OHNbwsJ3cMakPUx8oyMtos
j+vFsd3DmG8Tw50lQeTyrDnmk0sK7qrTr47+6jiycSe5/OgS2qaYW4KkctsRKTa1fDXnZoxD97Qj
y1j9VQkm2g43eri47rdNSXBAkgmOIcLONpabfr2JJuQMVD1Ef6DD6UFJxBX6bq5OMFToLPbkKiet
Wx12SmQnNq64C5LoBFkWo1gVox0cdZQSIVzh0WnnNrdUouNRJ+p9qBAoBgqiZ8oKcVv2QDH7jWS3
FbJs43lXcjQppkouKpcDajUSXG637xaJNolcOA7cSxoLDahxiFQxUaMLW/Z1FH1Vng0KiKqsmncc
v0f0eRKz0NqQFVLli2r4BUmhmcQOAV5ikAUYbOAUqZKl3gVqmF8XxJzUs0w7B/mVDpIhCWOBmW2h
JtAzxSony79ZTICwAWcv4HCoBBYY1tqiiEpfFUGlHsORreLLUsS+u+ygCln1r18nUfdJp1njpzSC
W5ZRTDlIuMt3C6NAHcYEfgbbgwVIg1eqN70NqvMG/oUpmdYfPxz7t/jg6O7urhLSR1cPdw+jh9b8
BMVlO4rv7+/bpJ6QNIcMVXO+LdMaM31ogqS1yL8fX/WvbN4KE4L5f3R54K4CqkdfmxZqynXPfnW7
FiGnOfiUhzeHCylzMen18Fe89OeMzWFRToWCru7rJTQQva+/F4SvegN/6J/bFx9KS/+rOJzBvnq/
GarvHLKIeMqH5AXm/Rk8rZx5M7yqLAGh7IfCgEUreEA8gNxYiJtjdxNQ3wsXg1nv3+BPyFm9Oyxx
7/63x95vJPiZSvv4XNAk6v0TeBcL0gOkgDk9SSDDwvW9SKTocSI5hfVfRS8C5aCb8GcS6YuY8LDw
cg41K5crDwqZAie+XEoQb1CXqvJR6HhzRF/Wu/rVJR6JBVTVUWOKusGg2scf/ZEUCNXN0Nf+dS1x
PBsMhyMwI0yZ1SZCgO81DXj6ePbl0+MjOomLTOtzcvr9w+8Fk9NCECTAWKE079OT7zqB5EUAaR2m
vZ7pZGLfl7ojV994o388qRgdnqNXf92Bbm5uoO/09XSKJC8IokI/rWAAArDFj7DI5X4WudxhkWco
uleUJNE7i/txP3E/vsGBDdF3WVw/qopUssjxzA5vqrsf1M2VfCfUK/N2GexqD4N9yAKRT7tNdh2R
ZPYFlIKHboMJzdva70jBderaGrxIz6WVdcKuejM03qDw+H0VbkVOi/IljN5khA1w1eEBzLsbG3bS
VjttMQDbD0HGTlDlzR6ue+qh25/++ot52wEMNUUsWAFdAbErtD1Uy4dajJMXRJYhyfWPEh5XoNzy
nnNF4f/KyDI3V8UnslJUhD4cQT2vT9AtH93iLGMSqaxsDoYlwF66NAKWQyyG7AzGwpJx38r/Jjz+
aCOP/ycjvx2M/weGf9cE++NqiVF/L892TFtTkXMhmp9oi51+R+j1fVl0NNhP9MEbWHSLGu9dw4zO
91PnfIc6PS14z1cl8EmrPqc/oihoPHQVD0Wz/h2A/wJQSwMECgAAAAAAB2F2RwAAAAAAAAAAAAAA
AAsAHABzY3JvbGxiYXJzL1VUCQADriBSVrohUlZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAB2F2
R269I2E5AAAAQgAAADsAHABzY3JvbGxiYXJzL3Njcm9sbGV2ZW50LWlmcmFtZS1uby1zY3JvbGxp
bmctd2hlZWwtc3RkZXJyLnR4dFVUCQADriBSVq4gUlZ1eAsAAQT1AQAABBQAAADLzS8tTg1OLsrP
yXGqVEhLzMxJTVEoyVdIy8wD0hmpCiWJRempJQplmanlCoklCgZ6BmCgA2NwAQBQSwMEFAACAAgA
lGF2Ry9nXMMkAggATfwqAAoAHABzdGF0cy5qc29uVVQJAAO4IVJWuCFSVnV4CwABBPUBAAAEFAAA
AKT9a5MrOZIlCP6Vlv66zRDD22y/ded0T/dIP2qranZ3ZKXlCp00v84MOulJ0u8jR/q/LwB7QAGD
HtCrJCVvRkSGgXgo9HH0qOL//rc/x5f95/F0/bf/z3/zf//bj/3lMt52498+9+eP60//l/fHeBuv
f7w93s/x37iN98/z4+7/+v+n/92/kVKqf/dvrOtV/+/+jer+3b/p7f/8X//u3/zbl5Mf4bg7X3/e
38bzK/u56Pv1c+P/gRPx8zihl8/X1/F2v37eDuPuMn7fP04/xt3Hef/7ZX/487Z/jLvTxc/u43r2
fx1+7PrB/1AYfZmn9X/ZxR96P/06Xb7zqxMym15Ppnd4C3t1fh9v39vbJKzKft4NZKCrX8Wvhx/C
L4MfwXXrCKJz/g9FJvOxv+3fd/fx8f/enz/Hf//459M7Giptug0LtJuBPt/f/b789fNyeJyuF3B8
XXb6eprS9X44nf2hXP2+7H8+rtfHG9jiIZvMMNQlAGytWAdwxu+LGSr78s97f0yP5sa4tJx+XY6/
Ibs42u50j/IHRUalzZV+OOPohfgY93+ir8WQNlT7f6D7ci3n02Xc3/5x//7xz9fnDtumNfmt1tPu
HEe/jsv1OO7e9792x/F17z/axX8KJpe2R4dRJV3a5fo4vAFJScesRVhc/Ha6NvL9ernujtefl13r
Qqq0P0HzSM3oi/l23vkJ6TQh2YGRxstxPAK9Qg4sbI/YXmz/yeN2atwkm8QmSrSwZhK+/Y/x/rb/
8Drm+sNPyh/8edzJX2CLTNJZ/r89c6GCvrk9wITyq20UPeyX/eX4sb+D7e1Vti/zNaivRqPVJPE1
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
LWRhdGEtdXJpLWltYWdlcy1kaXNhYmxlZC1zdGRlcnIudHh0VVQJAAPPIFJWzyBSVnV4CwABBPUB
AAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCory
k1OLi1NT9LgAUEsDBAoAAAAAADNhdkcAAAAAAAAAAAAAAAALABwAc3ZnL2N1c3RvbS9VVAkAAwIh
Ula6IVJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIADFhdkch9PbwOgAAAEIAAAAwABwAc3ZnL2N1
c3RvbS91c2UtaW52YWxpZGF0ZS1jbGljay1jcmFzaC1zdGRlcnIudHh0VVQJAAP+IFJW/iBSVnV4
CwABBPUBAAAEFAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sUyjJTyxUSSxR0
Dc30DMBAx8zACMrkAgBQSwMEFAACAAgAM2F2R50gzJCRAAAApgAAACQAHABzdmcvY3VzdG9tL3pl
cm8tZGFzaGFycmF5LXN0ZGVyci50eHRVVAkAAwIhUlYCIVJWdXgLAAEE9QEAAAQUAAAAHYy9DoJA
EIR7n2JewAtgRLwYGzAWGhsLC2Ox4CZecuyS48SfpxesZr7JlznpgCxDmtlkbRcF+NWnydJ4bcij
0dZQ13k2F64PLk5RqkSWaCoe2GvXjv2ar4o8v2GzC0HD1qLc/613PHM8OuGK+oeFk4G8u+M+EigE
+lhQhGfqI1QY7Hm6Q/sch5ohKvMvBzWzH1BLAwQKAAAAAAAaYXZHAAAAAAAAAAAAAAAACwAcAHN2
Zy9zdHJva2UvVVQJAAPTIFJWuiFSVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAaYXZHuvCzmJEA
AACmAAAAJQAcAHN2Zy9zdHJva2UvemVyby13aWR0aC1oYW5nLXN0ZGVyci50eHRVVAkAA9MgUlbT
IFJWdXgLAAEE9QEAAAQUAAAAHYy9DoJAEIR7n2JewAsQUXIxNmAsNDYWFsZigU285Lglx4o/Ty9Y
zXyTL3OWEVmGNLNJYfMU/BrSJDdeGvJopDPU957Nleuj0zlKCcpBTcUje+m7qd/Wm2JV3LHdxyhx
Z1Ee/tZbL6wnF7ii4WHhwkjetWgnAsVIHwtSeKZBIYHBnuc7dM9pqBlBwvLLUcziB1BLAwQKAAAA
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
A9axFT4BACfcCwAOABgAAAAAAAEAAACkgcI0AABhY2Nlc3NfbG9nLnR4dFVUBQAD1iBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAKFgdkcAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQR9zAQBh
Y2Nlc3NpYmlsaXR5L1VUBQAD7h9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKBgdke7zBX6
aQAAAGsAAAAuABgAAAAAAAEAAACkgWdzAQBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hl
Y2tlZC1zdGRlcnIudHh0VVQFAAPrH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAoWB2RwAA
AAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BOHQBAGFjY2Vzc2liaWxpdHkvbWFjL1VUBQAD7h9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKFgdkfHaQEZaQAAAGsAAABhABgAAAAAAAEAAACkgYR0
AQBhY2Nlc3NpYmlsaXR5L21hYy9jaGVja2JveC1wb3N0cy12YWx1ZS1jaGFuZ2Utbm90aWZpY2F0
aW9uLWFmdGVyLWFjdGl2YXRpb24td2l0aC1zcGFjZS1zdGRlcnIudHh0VVQFAAPuH1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAqGB2RwAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BiHUBAGNv
bXBvc2l0aW5nL1VUBQAD+x9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKRgdkcAAAAAAAAA
AAAAAAAVABgAAAAAAAAAEADtQc51AQBjb21wb3NpdGluZy9nZW9tZXRyeS9VVAUAA/MfUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACkYHZHgPHNoOQAAABSAwAALgAYAAAAAAABAAAApIEddgEA
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvb3V0bGluZS1jaGFuZ2Utc3RkZXJyLnR4dFVUBQAD8x9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKZgdkcAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQWl3
AQBjb21wb3NpdGluZy9vdmVyZmxvdy9VVAUAA/gfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACmYHZHTPs68mkAAABrAAAAPQAYAAAAAAABAAAApIG4dwEAY29tcG9zaXRpbmcvb3ZlcmZsb3cv
dGhlbWUtYWZmZWN0cy12aXN1YWwtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUBQAD+B9SVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAKRgdkcAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQZh4AQBjb21w
b3NpdGluZy9yZWdpb25zL1VUBQAD9B9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKRgdkdL
s6emwgAAAPIGAABFABgAAAAAAAEAAACkgeZ4AQBjb21wb3NpdGluZy9yZWdpb25zL3dlYmtpdC1m
bG93LXJlbmRlcmVyLWxheWVyLWNvbXBvc2l0aW5nLXN0ZGVyci50eHRVVAUAA/QfUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACoYHZH0izSAr4AAADyBgAAPAAYAAAAAAABAAAApIEnegEAY29t
cG9zaXRpbmcvc2hvdy1jb21wb3NpdGVkLWlmcmFtZS1vbi1iYWNrLWJ1dHRvbi1zdGRlcnIudHh0
VVQFAAP7H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAo2B2RwAAAAAAAAAAAAAAABIAGAAA
AAAAAAAQAO1BW3sBAGNvbXBvc2l0aW5nL3ZpZGVvL1VUBQAD8h9SVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAKJgdkd2CpexTiEBANhBAQAjABgAAAAAAAAAAACkgad7AQBjb21wb3NpdGluZy92
aWRlby9wb3N0ZXItYWN0dWFsLnBuZ1VUBQAD8B9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AKJgdketLUwGeQAAAIcIAAAhABgAAAAAAAAAAACkgVKdAgBjb21wb3NpdGluZy92aWRlby9wb3N0
ZXItZGlmZi5wbmdVVAUAA/AfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACiYHZHZ8QkCIkF
AAAOEgAAIwAYAAAAAAABAAAApIEmngIAY29tcG9zaXRpbmcvdmlkZW8vcG9zdGVyLWRpZmZzLmh0
bWxVVAUAA/AfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACiYHZHrMJPXAwBAAD9AQAAJgAY
AAAAAAABAAAApIEMpAIAY29tcG9zaXRpbmcvdmlkZW8vcG9zdGVyLWV4cGVjdGVkLmh0bWxVVAUA
A/AfUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACiYHZHrh6tLU4hAQDuQQEAJQAYAAAAAAAA
AAAApIF4pQIAY29tcG9zaXRpbmcvdmlkZW8vcG9zdGVyLWV4cGVjdGVkLnBuZ1VUBQAD8B9SVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKNgdkck1ESuvwAAAPIGAAAyABgAAAAAAAEAAACkgSXH
AwBjb21wb3NpdGluZy92aWRlby92aWRlby1jbGlwLWNoYW5nZS1zcmMtc3RkZXJyLnR4dFVUBQAD
8h9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKlgdkcAAAAAAAAAAAAAAAAFABgAAAAAAAAA
EADtQVDIAwBjc3MzL1VUBQAD/h9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKhgdkcAAAAA
AAAAAAAAAAAQABgAAAAAAAAAEADtQY/IAwBjc3MzL3NlbGVjdG9yczMvVVQFAAP7H1JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAqGB2RwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B2cgDAGNz
czMvc2VsZWN0b3JzMy94bWwvVVQFAAP7H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqGB2
R2e4SkRpAAAAawAAAC0AGAAAAAAAAQAAAKSBJ8kDAGNzczMvc2VsZWN0b3JzMy94bWwvY3NzMy1t
b2RzZWwtMjUtc3RkZXJyLnR4dFVUBQAD+x9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKlg
dkcAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQffJAwBjc3MzL3NoYXBlcy9VVAUAA/4fUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAACpYHZHAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UE9ygMA
Y3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9VVAUAA/4fUlZ1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAACpYHZHAAAAAAAAAAAAAAAAKwAYAAAAAAAAABAA7UGRygMAY3NzMy9zaGFwZXMvc2hhcGUt
b3V0c2lkZS9zdXBwb3J0ZWQtc2hhcGVzL1VUBQAD/h9SVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAKlgdkcAAAAAAAAAAAAAAAAyABgAAAAAAAAAEADtQfbKAwBjc3MzL3NoYXBlcy9zaGFwZS1v
dXRzaWRlL3N1cHBvcnRlZC1zaGFwZXMvY2lyY2xlL1VUBQAD/h9SVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAKlgdkdm4/91vgAAAPIGAABVABgAAAAAAAEAAACkgWLLAwBjc3MzL3NoYXBlcy9z
aGFwZS1vdXRzaWRlL3N1cHBvcnRlZC1zaGFwZXMvY2lyY2xlL3NoYXBlLW91dHNpZGUtY2lyY2xl
LTAxMy1zdGRlcnIudHh0VVQFAAP+H1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAtGB2RwAA
AAAAAAAAAAAAAAQAGAAAAAAAAAAQAO1Br8wDAGRvbS9VVAUAAxQgUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAC0YHZHAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UHtzAMAZG9tL3hodG1sL1VU
BQADFCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALRgdkcAAAAAAAAAAAAAAAARABgAAAAA
AAAAEADtQTHNAwBkb20veGh0bWwvbGV2ZWwyL1VUBQADFCBSVnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAALRgdkcAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQXzNAwBkb20veGh0bWwvbGV2ZWwy
L2h0bWwvVVQFAAMUIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtGB2R/LauFNpAAAAawAA
ADMAGAAAAAAAAQAAAKSBzM0DAGRvbS94aHRtbC9sZXZlbDIvaHRtbC9IVE1MSW5wdXRFbGVtZW50
MjAtc3RkZXJyLnR4dFVUBQADFCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJBhdkfgDjZi
nR0AALG0AwANABgAAAAAAAEAAACkgaLOAwBlcnJvcl9sb2cudHh0VVQFAAOwIVJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA1GB2RwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BhuwDAGZhc3Qv
VVQFAANPIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAs2B2RwAAAAAAAAAAAAAAAAsAGAAA
AAAAAAAQAO1BxewDAGZhc3QvYmxvY2svVVQFAAMRIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAs2B2RwAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BCu0DAGZhc3QvYmxvY2svbWFyZ2luLWNv
bGxhcHNlL1VUBQADESBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALNgdkcRynNxaQAAAGsA
AAApABgAAAAAAAEAAACkgV/tAwBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8xMDMtc3RkZXJy
LnR4dFVUBQADESBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAL1gdkcAAAAAAAAAAAAAAAAM
ABgAAAAAAAAAEADtQSvuAwBmYXN0L2NhbnZhcy9VVAUAAyYgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAC9YHZHb2m1n5cAAABMAQAAJgAYAAAAAAABAAAApIFx7gMAZmFzdC9jYW52YXMvY2Fu
dmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAUAAyYgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAC7YHZHAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFo7wMAZmFzdC9jc3MvVVQFAAMiIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAu2B2R9sI00I7AAAAPwAAACkAGAAAAAAAAQAAAKSBq+8D
AGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0VVQFAAMiIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAxWB2RwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BSfADAGZh
c3QvZG9tL1VUBQADMiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALpgdkf/9F0PaQAAAGsA
AAA2ABgAAAAAAAEAAACkgYzwAwBmYXN0L2RvbS9jbG9uZS1ub2RlLWZvcm0tZWxlbWVudHMtd2l0
aC1hdHRyLXN0ZGVyci50eHRVVAUAAyAgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC7YHZH
AAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UFl8QMAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9V
VAUAAyIgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC7YHZHhVq3TGkAAABrAAAAOAAYAAAA
AAABAAAApIG58QMAZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2Vk
LXN0ZGVyci50eHRVVAUAAyIgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADFYHZHGgBV3uIA
AABSAwAAMgAYAAAAAAABAAAApIGU8gMAZmFzdC9kb20vb2JqZWN0LXBsdWdpbi1oaWRlcy1wcm9w
ZXJ0aWVzLXN0ZGVyci50eHRVVAUAAzIgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC9YHZH
AAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UHi8wMAZmFzdC9keW5hbWljL1VUBQADJSBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAL1gdkdFDExnaQAAAGsAAAAwABgAAAAAAAEAAACkgSn0AwBm
YXN0L2R5bmFtaWMvY2hlY2tib3gtc2VsZWN0aW9uLWNyYXNoLXN0ZGVyci50eHRVVAUAAyUgUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADLYHZHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UH8
9AMAZmFzdC9ldmVudHMvVVQFAAM9IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAxGB2R1gq
Z3U5AAAAQwAAADIAGAAAAAAAAQAAAKSBQvUDAGZhc3QvZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1m
b2N1cy1jcmFzaC1zdGRlcnIudHh0VVQFAAMvIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
xGB2R03bBshpAAAAawAAAEkAGAAAAAAAAQAAAKSB5/UDAGZhc3QvZXZlbnRzL2RvbWFjdGl2YXRl
LXNldHMtdW5kZXJseWluZy1jbGljay1ldmVudC1hcy1oYW5kbGVkLXN0ZGVyci50eHRVVAUAAy8g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKYHZHMLVt4zkAAABDAAAAKwAYAAAAAAABAAAA
pIHT9gMAZmFzdC9ldmVudHMvbW91c2UtZm9jdXMtaW1hZ2VtYXAtc3RkZXJyLnR4dFVUBQADPCBS
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMtgdkfnrr1fOwAAAEMAAAAvABgAAAAAAAEAAACk
gXH3AwBmYXN0L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQAD
PSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMVgdkcAAAAAAAAAAAAAAAALABgAAAAAAAAA
EADtQRX4AwBmYXN0L2Zvcm1zL1VUBQADMiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMVg
dkfMGx/WqgAAAOkAAAAzABgAAAAAAAEAAACkgVr4AwBmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRl
ZC1lbGVtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAAzIgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAADAYHZHAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UFx+QMAZmFzdC9mb3Jtcy9yYWRpby9V
VAUAAyggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADAYHZHwTd1imkAAABrAAAAQQAYAAAA
AAABAAAApIG8+QMAZmFzdC9mb3Jtcy9yYWRpby9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLXJlcXVp
cmVkLXJhZGlvLXN0ZGVyci50eHRVVAUAAyggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADF
YHZHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGg+gMAZmFzdC9mcmFtZXMvVVQFAAMxIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAxWB2R9sI00I7AAAAPwAAAC8AGAAAAAAAAQAAAKSB5voD
AGZhc3QvZnJhbWVzL2ZyYW1lLWRpc3BsYXktbm9uZS1mb2N1cy1zdGRlcnIudHh0VVQFAAMxIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAwWB2RwAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1B
ivsDAGZhc3QvaGFybmVzcy9VVAUAAyogUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBYHZH
QdVce2kAAABrAAAAKwAYAAAAAAABAAAApIHR+wMAZmFzdC9oYXJuZXNzL2ltYWdlLWRpZmYtdGVt
cGxhdGUtc3RkZXJyLnR4dFVUBQADKiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMpgdkcA
AAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQZ/8AwBmYXN0L2ltYWdlcy9VVAUAAzwgUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAADKYHZHUaeCGDEAAAAxAAAALQAYAAAAAAABAAAApIHl/AMAZmFz
dC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1jcmFzaC1zdGRlcnIudHh0VVQFAAM7IFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAymB2RyGPvTgyAAAAMwAAACwAGAAAAAAAAQAAAKSBff0DAGZh
c3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0VVQFAAM8IFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAymB2RwAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BFf4DAGZh
c3QvbG9hZGVyL1VUBQADOyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMRgdkfbCNNCOwAA
AD8AAABSABgAAAAAAAEAAACkgVv+AwBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQFAAMvIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAxWB2R9sI00I7AAAAPwAAAFMAGAAAAAAAAQAAAKSB
Iv8DAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQFAAMxIFJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAymB2R9sI00I7AAAAPwAAAC0AGAAAAAAAAQAAAKSB6v8DAGZhc3QvbG9hZGVyL3Jl
bG9hZC1wb2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVUBQADOyBSVnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAMdgdkcAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQYwABABmYXN0L3BhcnNlci9V
VAUAAzUgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADHYHZHd679imkAAABrAAAAJAAYAAAA
AAABAAAApIHSAAQAZmFzdC9wYXJzZXIvYmFkLXhtbC1zbGFzaC1zdGRlcnIudHh0VVQFAAM1IFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAz2B2RwAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1B
mQEEAGZhc3QvcmVnaW9ucy9VVAUAA0UgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADPYHZH
AAAAAAAAAAAAAAAAFwAYAAAAAAAAABAA7UHgAQQAZmFzdC9yZWdpb25zL3Njcm9sbGluZy9VVAUA
A0YgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPYHZHOQHL3UAAAAB6AAAANQAYAAAAAAAB
AAAApIExAgQAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGwtYWJzcG9zLXN0ZGVy
ci50eHRVVAUAA0UgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPYHZHOQHL3UAAAAB6AAAA
LgAYAAAAAAABAAAApIHgAgQAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGwtc3Rk
ZXJyLnR4dFVUBQADRSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM9gdkfkisdDPAAAAD0A
AABAABgAAAAAAAEAAACkgYgDBABmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVsLXNjcm9sbGFi
bGUtc2luZ2xlLXJlZ2lvbi1zdGRlcnIudHh0VVQFAANGIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA0GB2RwAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BPgQEAGZhc3QvcmVwbGFjZWQvVVQF
AANHIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAz2B2R/o0Xu3iAAAAUgMAAEEAGAAAAAAA
AQAAAKSBhgQEAGZhc3QvcmVwbGFjZWQvcGVyY2VudC1oZWlnaHQtaW4tYW5vbnltb3VzLWJsb2Nr
LXdpZGdldC1zdGRlcnIudHh0VVQFAANGIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAz2B2
R7WMgh3uAAAApAYAAEQAGAAAAAAAAQAAAKSB4wUEAGZhc3QvcmVwbGFjZWQvcmVwbGFjZWQtY2hp
bGQtb2YtYWJzb2x1dGUtd2l0aC1hdXRvLWhlaWdodC1zdGRlcnIudHh0VVQFAANGIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA0GB2R9gaAV3sAAAApAYAACwAGAAAAAAAAQAAAKSBTwcEAGZh
c3QvcmVwbGFjZWQvdGFibGUtcGVyY2VudC13aWR0aC1zdGRlcnIudHh0VVQFAANHIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAA1WB2RwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BoQgEAGZh
c3QveHNsL1VUBQADUSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANRgdkdy/WXyhQAAAOkA
AAAlABgAAAAAAAEAAACkgeQIBABmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0
VVQFAANPIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1GB2R84JKAKNAAAA8AAAACcAGAAA
AAAAAQAAAKSByAkEAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQAD
TyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANRgdkfPj2YOUAAAAKAAAAAkABgAAAAAAAEA
AACkgbYKBABmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAA08gUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADVYHZHgUp3rUsAAACsAAAANAAYAAAAAAABAAAApIFkCwQA
ZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQAD
USBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJRhdkfRXs0VkQEAAKUCAAARABgAAAAAAAEA
AACkgR0MBABmdWxsX3Jlc3VsdHMuanNvblVUBQADuCFSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAANdgdkcAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQfkNBABodHRwL1VUBQADVSBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAOJgdkcAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTgOBABo
dHRwL3Rlc3RzL1VUBQADZyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANhgdkcAAAAAAAAA
AAAAAAARABgAAAAAAAAAEADtQX0OBABodHRwL3Rlc3RzL2NhY2hlL1VUBQADWCBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIANhgdkcKkiNEfwAAABEBAAAwABgAAAAAAAEAAACkgcgOBABodHRw
L3Rlc3RzL2NhY2hlL21lbW9yeS1jYWNoZS1wcnVuaW5nLXN0ZGVyci50eHRVVAUAA1ggUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAADXYHZHAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGxDwQA
aHR0cC90ZXN0cy9jYW52YXMvVVQFAANVIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA12B2
RwAAAAAAAAAAAAAAABgAGAAAAAAAAAAQAO1B/Q8EAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VU
BQADVSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANdgdke3UJSSwQAAABcBAAA7ABgAAAAA
AAEAAACkgU8QBABodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFu
Y2Utc3RkZXJyLnR4dFVUBQADVSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANtgdkcAAAAA
AAAAAAAAAAAdABgAAAAAAAAAEADtQYURBABodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL1VU
BQADXSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANtgdkdJgRWGfAAAAK4AAAA6ABgAAAAA
AAEAAACkgdwRBABodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3RleHQtdHJhY2stYmxvY2tl
ZC1zdGRlcnIudHh0VVQFAANdIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5GB2RwAAAAAA
AAAAAAAAABEAGAAAAAAAAAAQAO1BzBIEAGh0dHAvdGVzdHMvbWVkaWEvVVQFAANrIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAA2WB2RwAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BFxMEAGh0
dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQFAANaIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA2WB2R0uBA+cJAQAAUAIAADkAGAAAAAAAAQAAAKSBaxMEAGh0dHAvdGVzdHMvbWVkaWEvY2xl
YXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUBQADWiBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAANtgdkcAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQecUBABodHRwL3Rl
c3RzL21lZGlhL2hscy9VVAUAA10gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZYHZH42Jt
CGsBAABHAwAAQAAYAAAAAAABAAAApIE2FQQAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vz
c2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUBQADWiBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANpgdkeG+A9TWgEAAPwCAAA6ABgAAAAAAAEAAACkgRsXBABodHRwL3Rlc3Rz
L21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLWhhcy1hdWRpby1zdGRlcnIudHh0VVQFAANcIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2mB2R63FFvRuAQAA/AMAAEEAGAAAAAAAAQAAAKSB
6RgEAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3MtbG9jYWxlLXNlbGVjdGlv
bi1zdGRlcnIudHh0VVQFAANcIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA22B2R+e68RFX
AQAA/AIAADAAGAAAAAAAAQAAAKSB0hoEAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10
cmFja3Mtc3RkZXJyLnR4dFVUBQADXSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANtgdkfY
Cb56sQAAAJUBAAAsABgAAAAAAAEAAACkgZMcBABodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtcHJv
Z3Jlc3Mtc3RkZXJyLnR4dFVUBQADXSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANtgdkeu
g6DxuQAAACoDAAA9ABgAAAAAAAEAAACkgaodBABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1j
b250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRlcnIudHh0VVQFAANdIFJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA2WB2R/6Hz/18AAAArgAAADIAGAAAAAAAAQAAAKSB2h4EAGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQFAANaIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA2mB2R93CBzq6AAAA7AAAACoAGAAAAAAAAQAAAKSBwh8EAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADXCBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAgAAANtgdkdejvmFYwAAAGMAAAA5ABgAAAAAAAEAAACkgeAgBABodHRwL3Rl
c3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAUAA14g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADuYHZHAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA
7UG2IQQAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAN/IFJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA4mB2RywBQhHGAAAA9QAAAEIAGAAAAAAAAQAAAKSBDiIEAGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4
dFVUBQADZyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOJgdkcP01CLzAAAADgEAAA7ABgA
AAAAAAEAAACkgVAjBABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1j
bG9zZWQtc3RkZXJyLnR4dFVUBQADaCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAONgdkef
37JE0wAAAN8CAABQABgAAAAAAAEAAACkgZEkBABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQAD
aiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAORgdkcdyCEoTQEAAJMDAABSABgAAAAAAAEA
AACkge4lBABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWct
Y2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAANsIFJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA5mB2R0rBzOyeAAAAtAAAAE0AGAAAAAAAAQAAAKSBxycEAGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWVuZG9mc3RyZWFtLWludmFsaWRlcnJvci1z
dGRlcnIudHh0VVQFAANwIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6mB2R3ZDreydAAAA
tAAAADsAGAAAAAAAAQAAAKSB7CgEAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLXJlbW92ZS1zdGRlcnIudHh0VVQFAAN4IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA7GB2R67o6GW6AAAAhAMAAEYAGAAAAAAAAQAAAKSB/ikEAGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAUAA3wg
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADuYHZHXeaQYrUAAAAcAgAARQAYAAAAAAABAAAA
pIE4KwQAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVm
ZmVybGlzdC1zdGRlcnIudHh0VVQFAAN/IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA22B2
R++CRS/tAAAAXwEAAC0AGAAAAAAAAQAAAKSBbCwEAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZl
ZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQADXiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAANxg
dkdYRf28YwAAAGMAAAAvABgAAAAAAAEAAACkgcAtBABodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1h
ZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUBQADXyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ANxgdkfHA12W6wAAAFoBAAAvABgAAAAAAAEAAACkgYwuBABodHRwL3Rlc3RzL21lZGlhL3RleHQt
c2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUBQADYCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAN1gdkf+wQ36sgAAAJUBAAA2ABgAAAAAAAEAAACkgeAvBABodHRwL3Rlc3RzL21lZGlhL3Ry
YWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA2EgUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADhYHZHDdu4XfYAAAD5AQAAJgAYAAAAAAABAAAApIECMQQAaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAUAA2UgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAADhYHZHRI7IWGMAAABjAAAALQAYAAAAAAABAAAApIFYMgQAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1lcnJvci1hYm9ydC1zdGRlcnIudHh0VVQFAANmIFJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA4WB2R46hIL6zAAAAIwEAADYAGAAAAAAAAQAAAKSBIjMEAGh0dHAvdGVzdHMvbWVk
aWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQADZiBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOFgdkdoC1uVaAAAAMYAAAAsABgAAAAAAAEAAACkgUU0BABodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQADZiBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAAOJgdkfH60pEYwAAAGMAAAAvABgAAAAAAAEAAACkgRM1BABodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADZyBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAONgdkedrTJstAAAAC8BAAAqABgAAAAAAAEAAACkgd81BABo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAA2ogUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAADkYHZHQkXMYWMAAABjAAAAKwAYAAAAAAABAAAApIH3NgQAaHR0
cC90ZXN0cy9tZWRpYS92aWRlby11c2VyYWdlbnQtc3RkZXJyLnR4dFVUBQADayBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAPpgdkcAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQb83BABodHRw
L3Rlc3RzL21pc2MvVVQFAAOYIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4mB2R3AlBN/V
AAAAFwEAAD8AGAAAAAAAAQAAAKSBCTgEAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVy
aW5nLXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUBQADZyBSVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAOJgdkcMXLGi1QAAABcBAABbABgAAAAAAAEAAACkgVc5BABodHRwL3Rlc3RzL21p
c2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlk
ZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQFAANnIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
+mB2RxU1NZJ6AAAAvAAAACoAGAAAAAAAAQAAAKSBwToEAGh0dHAvdGVzdHMvbWlzYy94c2x0LWJh
ZC1pbXBvcnQtc3RkZXJyLnR4dFVUBQADmCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAN1g
dkcAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQZ87BABodHRwL3Rlc3RzL25hdmlnYXRpb24vVVQF
AANhIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA22B2R4fQv8hpAAAAawAAAC4AGAAAAAAA
AQAAAKSB7zsEAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZ29iYWNrLXN0ZGVyci50eHRV
VAUAA10gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADdYHZH2wjTQjsAAAA/AAAANwAYAAAA
AAABAAAApIHAPAQAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxiYWNrLWFuY2hvci1yZWxvYWQt
c3RkZXJyLnR4dFVUBQADYSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOdgdkcAAAAAAAAA
AAAAAAAUABgAAAAAAAAAEADtQWw9BABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUBQADciBSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAOZgdkcAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQbo9BABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAUAA28gUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADcYHZHAAAAAAAAAAAAAAAAPQAYAAAAAAAAABAA7UEePgQAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9N
L1VUBQADYCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANxgdkdMIVnWfAAAAK4AAABTABgA
AAAAAAEAAACkgZU+BABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91
c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4dFVUBQADXyBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAANxgdkf6WrE+YwAAAGMAAABTABgAAAAAAAEAAACkgZ4/BABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00v
YWxsb3ctdmlkZW8tc3RkZXJyLnR4dFVUBQADYCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AOZgdkdjqqxsggAAAKgAAABAABgAAAAAAAEAAACkgY5ABABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAANvIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA5mB2R2OqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBikEEAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5
LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAUAA28gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAIA
AADgYHZHHt+1T2MAAABjAAAAPQAYAAAAAAABAAAApIGYQgQAaHR0cC90ZXN0cy9zZWN1cml0eS9s
b2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUBQADZCBSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAN1gdkcAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQXJDBABodHRw
L3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9VVAUAA2EgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADdYHZHuuvZcH4AAAARAQAATgAYAAAAAAABAAAApIHNQwQAaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRl
cnIudHh0VVQFAANhIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA52B2R2BLZhCRAAAA+wEA
AEUAGAAAAAAAAQAAAKSB00QEAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9j
dW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADciBSVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAJxgdkc1E8aamQUAABEQAAAKABgAAAAAAAEAAACkgeNFBABodHRwZC5jb25mVVQF
AAPnH1JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA8mB2RwAAAAAAAAAAAAAAAAkAGAAAAAAA
AAAQAO1BwEsEAGltcG9ydGVkL1VUBQADiCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOhg
dkcAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQQNMBABpbXBvcnRlZC9ibGluay9VVAUAA3MgUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADkYHZHAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UFM
TAQAaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvVVQFAANrIFJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA5GB2RzoQoX7DAAAA8gYAAEoAGAAAAAAAAQAAAKSBoUwEAGltcG9ydGVkL2JsaW5r
L2NvbXBvc2l0aW5nL2FuY2VzdG9yLXBhaW50ZWQtbGF5ZXItc2hvdWxkLWFwcGVhci1zdGRlcnIu
dHh0VVQFAANrIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA6GB2RwAAAAAAAAAAAAAAABQA
GAAAAAAAAAAQAO1B6E0EAGltcG9ydGVkL2JsaW5rL2Zhc3QvVVQFAANzIFJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAA6GB2RwAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BNk4EAGltcG9ydGVk
L2JsaW5rL2Zhc3QvZm9ybXMvVVQFAAN0IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA6GB2
RwAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1Bik4EAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMv
YnV0dG9uL1VUBQADcyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOhgdkfHIe/bNwAAAEAA
AABHABgAAAAAAAEAAACkgeVOBABpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRvbi9idXR0
b24tcmVzZXQtZm9jdXMtYnktbW91c2Utc3RkZXJyLnR4dFVUBQADcyBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAOhgdkcAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQZ1PBABpbXBvcnRlZC9i
bGluay9mYXN0L2Zvcm1zL3JhbmdlL1VUBQADdCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AOhgdkfHIe/bNwAAAEAAAAA/ABgAAAAAAAEAAACkgfdPBABpbXBvcnRlZC9ibGluay9mYXN0L2Zv
cm1zL3JhbmdlL3JhbmdlLWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAUAA3QgUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADoYHZHAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UGnUAQAaW1w
b3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9zdWJtaXQvVVQFAAN0IFJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA6GB2R8ch79s3AAAAQAAAAEEAGAAAAAAAAQAAAKSBAlEEAGltcG9ydGVkL2JsaW5r
L2Zhc3QvZm9ybXMvc3VibWl0L3N1Ym1pdC1mb2N1cy1ieS1tb3VzZS1zdGRlcnIudHh0VVQFAAN0
IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA8mB2RwAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQ
AO1BtFEEAGltcG9ydGVkL3czYy9VVAUAA4ggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADy
YHZHAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UH7UQQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9VVAUAA4ggUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADyYHZHAAAAAAAAAAAA
AAAAJQAYAAAAAAAAABAA7UFVUgQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L1VUBQADiCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPZgdkcAAAAAAAAAAAAAAAAvABgA
AAAAAAAAEADtQbRSBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL1VUBQADjyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPJgdkcAAAAAAAAAAAAAAABB
ABgAAAAAAAAAEADtQR1TBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2Rpc2FibGVkLWVsZW1lbnRzL1VUBQADiCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPJgdkc//560aQAAAGsAAABbABgAAAAAAAEAAACkgZhTBABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Rpc2FibGVkLWVsZW1lbnRzL2Rpc2FibGVkRWxl
bWVudC1zdGRlcnIudHh0VVQFAAOIIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA9GB2RwAA
AAAAAAAAAAAAAEAAGAAAAAAAAAAQAO1BllQEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9VVAUAA4wgUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAD7YHZHAAAAAAAAAAAAAAAATwAYAAAAAAAAABAA7UEQVQQAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL1VUBQADmiBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPRgdkcKqcyU
aAAAAMYAAABnABgAAAAAAAEAAACkgZlVBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2Fu
cGxheS1zdGRlcnIudHh0VVQFAAOLIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9GB2Rw75
qWpoAAAAxgAAAHIAGAAAAAAAAQAAAKSBolYEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9j
YW5wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADiyBSVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPRgdkcO+alqaAAAAMYAAABuABgAAAAAAAEAAACkgbZXBABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQADjCBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAPVgdkfRVtgcaAAAAMYAAAB5ABgAAAAAAAEAAACkgcZYBABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQFAAONIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9WB2R9UGveJoAAAAxgAAAHUAGAAA
AAAAAQAAAKSB4VkEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhX25vYXV0
b3BsYXktc3RkZXJyLnR4dFVUBQADjSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPVgdkfV
Br3iaAAAAMYAAABuABgAAAAAAAEAAACkgfhaBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
bG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADjSBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPVgdkeY8GM7aAAAAMYAAAB5ABgAAAAAAAEAAACkgQhcBABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOOIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9mB2R5ygBsVoAAAAxgAAAGkAGAAAAAAAAQAAAKSBI10E
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADjyBS
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPZgdkecoAbFaAAAAMYAAAB0ABgAAAAAAAEAAACk
gS5eBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUBQADjyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPZgdkecoAbFaAAAAMYA
AAB8ABgAAAAAAAEAAACkgURfBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2Fu
cGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAOQIFJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA9mB2R0Mar1NoAAAAxgAAAHUAGAAAAAAAAQAAAKSBYmAEAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADkCBSVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPZgdkdDGq9TaAAAAMYAAAB/ABgAAAAAAAEAAACkgXlh
BABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVk
ZGF0YS1zdGRlcnIudHh0VVQFAAOQIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA92B2R0dK
yq1oAAAAxgAAAHgAGAAAAAAAAQAAAKSBmmIEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9v
cmRlcl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADkSBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAPdgdkdHSsqtaAAAAMYAAABlABgAAAAAAAEAAACkgbRjBABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUBQADkSBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAPdgdkcKvBR0aAAAAMYAAABwABgAAAAAAAEAAACkgbtkBABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAOSIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA92B2Rwq8FHRoAAAAxgAAAGQAGAAAAAAAAQAAAKSBzWUE
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5LXN0ZGVyci50eHRVVAUAA5IgUlZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAD4YHZHDuxximgAAADGAAAAbwAYAAAAAAABAAAApIHTZgQA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQF
AAOTIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+GB2Rw7scYpoAAAAxgAAAGcAGAAAAAAA
AQAAAKSB5GcEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVyci50eHRV
VAUAA5MgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD4YHZHDuxximgAAADGAAAAcgAYAAAA
AAABAAAApIHtaAQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxh
eS1zdGRlcnIudHh0VVQFAAOUIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+GB2R/XPNoJo
AAAAxgAAAGgAGAAAAAAAAQAAAKSBAWoEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9n
cmVzcy1zdGRlcnIudHh0VVQFAAOUIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+GB2R/XP
NoJoAAAAxgAAAHMAGAAAAAAAAQAAAKSBC2sEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9w
cm9ncmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5QgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAD5YHZH8Z9TfGgAAADGAAAAagAYAAAAAAABAAAApIEgbAQAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGUtc3RkZXJyLnR4dFVUBQADlSBSVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAPlgdkfxn1N8aAAAAMYAAAB1ABgAAAAAAAEAAACkgSxtBABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA5Yg
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD0YHZHAAAAAAAAAAAAAAAAWgAYAAAAAAAAABAA
7UFDbgQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQFAAOLIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA9GB2RwAAAAAAAAAAAAAAAGQAGAAAAAAAAAAQAO1B124EAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAUAA4sgUlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAD0YHZHlgdZPnwAAACuAAAAeQAYAAAAAAABAAAApIF1bwQAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4
dFVUBQADiyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPlgdkeY90sbaAAAAMYAAAB3ABgA
AAAAAAEAAACkgaRwBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2R1cmluZ19s
b2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADliBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPpg
dkecpy7laAAAAMYAAAByABgAAAAAAAEAAACkgb1xBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1
c2VkX2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVyci50eHRVVAUAA5cgUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAD6YHZHnKcu5WgAAADGAAAAcgAYAAAAAAABAAAApIHRcgQAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmluZ19wYXVzZS1zdGRlcnIudHh0VVQFAAOXIFJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA9GB2RwAAAAAAAAAAAAAAAGoAGAAAAAAAAAAQAO1B5XME
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAUAA4wg
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0YHZHBc+xg3sAAACuAAAAkQAYAAAAAAABAAAA
pIGJdAQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3Bh
dXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADjCBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAgAAAPRgdkfhckwbYwAAAGMAAACPABgAAAAAAAEAAACkgc91BABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS13aXRo
aW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADjCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAA
APRgdkfhckwbYwAAAGMAAACPABgAAAAAAAEAAACkgft2BABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3Rk
ZXJyLnR4dFVUBQADjCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPpgdkfRUfA8aAAAAMYA
AABzABgAAAAAAAEAAACkgSd4BABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJp
bmdfY2FucGxheS1zdGRlcnIudHh0VVQFAAOYIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
+mB2R9FR8DxoAAAAxgAAAHoAGAAAAAAAAQAAAKSBPHkEAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9y
ZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAOYIFJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA+2B2R9FR8DxoAAAAxgAAAHYAGAAAAAAAAQAAAKSBWHoEAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRkYXRhLXN0ZGVyci50
eHRVVAUAA5kgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD7YHZH1QGVwmgAAADGAAAAegAY
AAAAAAABAAAApIFwewQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xv
YWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA5kgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAD7YHZH1QGVwmgAAADGAAAAcwAYAAAAAAABAAAApIGMfAQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUBQADmSBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAPtgdkfjvELF1QAAAMICAACEABgAAAAAAAEAAACkgaF9BABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRz
LXN0ZGVyci50eHRVVAUAA5ogUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD0YHZHAAAAAAAA
AAAAAAAAVQAYAAAAAAAAABAA7UE0fwQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUBQAD
jCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPRgdkcAAAAAAAAAAAAAAABjABgAAAAAAAAA
EADtQcN/BABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAUAA4wg
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0YHZHnifnfnwAAACuAAAAggAYAAAAAAABAAAA
pIFggAQAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBp
LXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUBQADjCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
APRgdkcAAAAAAAAAAAAAAABSABgAAAAAAAAAEADtQZiBBABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1l
bnQvVVQFAAOMIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9GB2Rw8eyYTdAAAA0AIAAG4A
GAAAAAAAAQAAAKSBJIIEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rv
ci1zdGRlcnIudHh0VVQFAAOMIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA9mB2RwAAAAAA
AAAAAAAAADUAGAAAAAAAAAAQAO1BqYMEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZm9ybXMvVVQFAAOPIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
9mB2RwAAAAAAAAAAAAAAAEcAGAAAAAAAAAAQAO1BGIQEAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvVVQFAAOPIFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9mB2R54XqgZpAAAAawAAAFgAGAAAAAAAAQAAAKSB
mYQEAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMv
dGhlLWlucHV0LWVsZW1lbnQvYnV0dG9uLXN0ZGVyci50eHRVVAUAA48gUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAGYXZHAAAAAAAAAAAAAAAAAwAYAAAAAAAAABAA7UGUhQQAanMvVVQFAAOr
IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABmF2RwAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQ
AO1B0YUEAGpzL2RvbS9VVAUAA6sgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAGYXZHHA4I
TsUxAAB+UAMALAAYAAAAAAABAAAApIEShgQAanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnR5LWFjdHVhbC50eHRVVAUAA6sgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAGYXZH5dew
u28BAAAPBAAAKgAYAAAAAAABAAAApIE9uAQAanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnR5LWRpZmYudHh0VVQFAAOrIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABmF2R3Zle1Nz
MQAAoE8DAC4AGAAAAAAAAQAAAKSBELoEAGpzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0
eS1leHBlY3RlZC50eHRVVAUAA6sgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAGYXZHq53v
PrUIAAADIAAAMgAYAAAAAAABAAAApIHr6wQAanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnR5LXByZXR0eS1kaWZmLmh0bWxVVAUAA6sgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAj
YXZHAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UEM9QQAbWVkaWEvVVQFAAPhIFJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA/WB2R1ZFMtd8AAAArgAAAB8AGAAAAAAAAQAAAKSBTPUEAG1lZGlh
L2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAUAA54gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAEYXZHAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UEh9gQAbWVkaWEvbWVkaWEtc291cmNl
L1VUBQADqCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAARhdkf1uSdZngAAALQAAAA1ABgA
AAAAAAEAAACkgW72BABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0cHAtY3Jhc2gt
c3RkZXJyLnR4dFVUBQADqCBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAthdkfe68NzaAAA
AMYAAAAoABgAAAAAAAEAAACkgXv3BABtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRl
cnIudHh0VVQFAAO1IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAI2F2RwAAAAAAAAAAAAAA
AAwAGAAAAAAAAAAQAO1BRfgEAG1lZGlhL3RyYWNrL1VUBQAD4SBSVnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAgAAACNhdkf+JzjgNQAAADUAAAAqABgAAAAAAAEAAACkgYv4BABtZWRpYS90cmFjay90
cmFjay1pbi1iYW5kLXN0eWxlLWFjdHVhbC50eHRVVAUAA+EgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAjYXZH/WrzNsUBAABuAwAAKAAYAAAAAAABAAAApIEk+QQAbWVkaWEvdHJhY2svdHJh
Y2staW4tYmFuZC1zdHlsZS1kaWZmLnR4dFVUBQAD4SBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACNhdkcM+uTqNgEAADMCAAAsABgAAAAAAAEAAACkgUv7BABtZWRpYS90cmFjay90cmFjay1p
bi1iYW5kLXN0eWxlLWV4cGVjdGVkLnR4dFVUBQAD4SBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACNhdkfXnJN37QgAAKUkAAAwABgAAAAAAAEAAACkgef8BABtZWRpYS90cmFjay90cmFjay1p
bi1iYW5kLXN0eWxlLXByZXR0eS1kaWZmLmh0bWxVVAUAA+EgUlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAALYXZH9Q6rfJEAAAC9AAAAIQAYAAAAAAABAAAApIE+BgUAbWVkaWEvdW5zdXBwb3J0
ZWQtcnRzcC1zdGRlcnIudHh0VVQFAAO1IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHWF2
R1IEdhvTAQAACQoAACgAGAAAAAAAAQAAAKSBKgcFAG1lZGlhL3ZpZGVvLXBvc3Rlci1iYWNrZ3Jv
dW5kLXN0ZGVyci50eHRVVAUAA9kgUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAHYXZHAAAA
AAAAAAAAAAAACAAYAAAAAAAAABAA7UFfCQUAcGx1Z2lucy9VVAUAA60gUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAHYXZH7l1yRYYAAAD2AAAAOwAYAAAAAAABAAAApIGhCQUAcGx1Z2lucy9u
cHAtc2V0LXdpbmRvdy1jYWxsZWQtZHVyaW5nLWRlc3RydWN0aW9uLXN0ZGVyci50eHRVVAUAA60g
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsYHZHHnVPg4wCAAC5GgAAKwAYAAAAAAABAAAA
pIGcCgUAcHl3ZWJzb2NrZXQud3MubG9nLTIyTm92MjAxNS0xMjA0NTYtZXJyLnR4dFVUBQADfCBS
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOxgdkc8suy/CQEAAI8CAAArABgAAAAAAAEAAACk
gY0NBQBweXdlYnNvY2tldC53cy5sb2ctMjJOb3YyMDE1LTEyMDQ1Ni1vdXQudHh0VVQFAAN8IFJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlGF2R/1BU4cRJwAAyqgAAAwAGAAAAAAAAQAAAKSB
+w4FAHJlc3VsdHMuaHRtbFVUBQADuCFSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNhdkcA
AAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQVI2BQByZXRyaWVzL1VUBQADtSFSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAJNhdkcAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQZQ2BQByZXRyaWVz
L2pzL1VUBQADtSFSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNhdkcAAAAAAAAAAAAAAAAP
ABgAAAAAAAAAEADtQdk2BQByZXRyaWVzL2pzL2RvbS9VVAUAA7UhUlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACTYXZHHA4ITsUxAAB+UAMANAAYAAAAAAABAAAApIEiNwUAcmV0cmllcy9qcy9k
b20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktYWN0dWFsLnR4dFVUBQADtSFSVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAJNhdkeenzO4cwEAAB8EAAAyABgAAAAAAAEAAACkgVVpBQByZXRy
aWVzL2pzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1kaWZmLnR4dFVUBQADtSFSVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJNhdkd2ZXtTczEAAKBPAwA2ABgAAAAAAAEAAACkgTRr
BQByZXRyaWVzL2pzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1leHBlY3RlZC50eHRV
VAUAA7UhUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACTYXZHcvz5KbwIAAALIAAAOgAYAAAA
AAABAAAApIEXnQUAcmV0cmllcy9qcy9kb20vcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydHktcHJl
dHR5LWRpZmYuaHRtbFVUBQADtSFSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAdhdkcAAAAA
AAAAAAAAAAALABgAAAAAAAAAEADtQUemBQBzY3JvbGxiYXJzL1VUBQADriBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAAdhdkduvSNhOQAAAEIAAAA7ABgAAAAAAAEAAACkgYymBQBzY3JvbGxi
YXJzL3Njcm9sbGV2ZW50LWlmcmFtZS1uby1zY3JvbGxpbmctd2hlZWwtc3RkZXJyLnR4dFVUBQAD
riBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJRhdkcvZ1zDJAIIAE38KgAKABgAAAAAAAEA
AACkgTqnBQBzdGF0cy5qc29uVVQFAAO4IVJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAMWF2
RwAAAAAAAAAAAAAAAAQAGAAAAAAAAAAQAO1BoqkNAHN2Zy9VVAUAA/4gUlZ1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAYYXZHAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UHgqQ0Ac3ZnL2FzLWlt
YWdlL1VUBQADzyBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABhhdkfbCNNCOwAAAD8AAAA/
ABgAAAAAAAEAAACkgSeqDQBzdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXdpdGgtZGF0YS11cmktaW1h
Z2VzLWRpc2FibGVkLXN0ZGVyci50eHRVVAUAA88gUlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAzYXZHAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UHbqg0Ac3ZnL2N1c3RvbS9VVAUAAwIhUlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAxYXZHIfT28DoAAABCAAAAMAAYAAAAAAABAAAApIEg
qw0Ac3ZnL2N1c3RvbS91c2UtaW52YWxpZGF0ZS1jbGljay1jcmFzaC1zdGRlcnIudHh0VVQFAAP+
IFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAM2F2R50gzJCRAAAApgAAACQAGAAAAAAAAQAA
AKSBxKsNAHN2Zy9jdXN0b20vemVyby1kYXNoYXJyYXktc3RkZXJyLnR4dFVUBQADAiFSVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAABphdkcAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQbOsDQBz
dmcvc3Ryb2tlL1VUBQAD0yBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABphdke68LOYkQAA
AKYAAAAlABgAAAAAAAEAAACkgfisDQBzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIu
dHh0VVQFAAPTIFJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAFWF2RwAAAAAAAAAAAAAAABUA
GAAAAAAAAAAQAO1B6K0NAHN2Zy9XM0MtU1ZHLTEuMi1UaW55L1VUBQADySBSVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABVhdketsYaUwQAAAPIGAAA5ABgAAAAAAAEAAACkgTeuDQBzdmcvVzND
LVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMS10LXN0ZGVyci50eHRVVAUAA8kg
UlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAdYXZHAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA
7UFrrw0AdGFibGVzL1VUBQAD2iBSVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAB1hdkcAAAAA
AAAAAAAAAAAPABgAAAAAAAAAEADtQayvDQB0YWJsZXMvbW96aWxsYS9VVAUAA9ogUlZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAdYXZHAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UH1rw0AdGFi
bGVzL21vemlsbGEvYnVncy9VVAUAA9ogUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdYXZH
XctLXGkAAABrAAAAJgAYAAAAAAABAAAApIFDsA0AdGFibGVzL21vemlsbGEvYnVncy9idWc0NTI3
LXN0ZGVyci50eHRVVAUAA9ogUlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACSYXZHPwtNshTK
AAB3yhMAGQAYAAAAAAABAAAApIEMsQ0Ad3B0d2tfcHJvY2Vzc19sb2cub3V0LnR4dFVUBQADsyFS
VnV4CwABBPUBAAAEFAAAAFBLBQYAAAAAFAEUAd+BAABzew4AAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266066</attachid>
            <date>2015-11-22 13:16:26 -0800</date>
            <delta_ts>2015-11-22 21:46:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123061610.patch</filename>
            <type>text/plain</type>
            <size>302053</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi4xZGI1MDY3NzBlZGJhZGM1
ZTQ2YzgxNGVmNDY0OWJjMjA1YTAxNGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDM2IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAg
ICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5n
IGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZl
L3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jpbmcg
aW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0g
dG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50
cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2Vz
IGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBm
b2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JTdGF0
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxldGVkOgorICAgICAgICAgICAgICAgICAg
ICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAg
ICAgICAgICAgIGNhc2UgRXhlY3V0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgLi4uOworCisgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICAgICAgb3Bf
c2F2ZShZaWVsZF8wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8wOgorICAgICAgICAgICAgICAgICAgICAgICAg
b3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3Vt
ZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
b3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8xOgorICAgICAgICAgICAgICAgICAgICAg
ICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJl
c3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1
cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIC4u
LiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxp
dmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBh
bmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3Rl
cnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZp
bGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0
ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQg
aW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5
LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdl
IGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJz
IHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VT
Y3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAg
ICAocmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2
YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yQ29tcGxldGVkTGFiZWwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJC
YXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgor
ICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZl
Q2VsbCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
ZXZhbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdG
dW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2Up
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0
YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRo
b2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29s
bGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFy
c2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlND
Ojppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICog
cGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2Fj
aGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVu
Y3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNF
bXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5
bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdD
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZWdpc3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNl
dE9mUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JS
ZWdpc3RlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6Okdl
bmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rp
b246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVy
YXRvckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9u
OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5u
ZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2Ny
ZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0
KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAg
ICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxl
T2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAg
ICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJs
ZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJv
bS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFk
ZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgor
ICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29j
b2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAo
dGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
bGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHBy
b3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcu
bmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6Cisg
ICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVh
Y2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFk
ZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6
CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToK
KwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5
NGMwNmY0ZmFiMDlmZjAzYTY0MTc4MGUzZjI2YWMzYWQ4ZC4uMTdiN2UxNTdmMGM2YzY5YzdjNDg2
NWFhMDA3NjczMjJhZDY3MWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJs
ZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rv
cjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIw
MTUtMTEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIEFTU0VSVElPTiBGQUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4g
V2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU0NzQ2OThkY2EwYmFi
ZWY3NDI3ZGQzMjEwYjFjNjU2MmJkNzU0NDguLjllMjhkYTdmZmY1Y2Q4NWRhMWZiYWZhZjNkYzBl
ZWE2ZDljN2U2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBs
ZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJs
ZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUt
MTEtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRlYWNoIE1p
bmlCcm93c2VyIGhvdyB0byBlbmFibGUgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAzYjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi4wNjFl
YzBhMDBkZjU3Y2I1ZTEzNDgzMWNlOTQ2NTk5NmQ3NjVjOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xICsxLDEwIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0
IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUt
MTEtMjEgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZTYzNzg4NzI2Mjg0YzBiYTNmMTVjOGEzYjU5Y2MxZjdi
MTYwZDNjLi5lOGE5YmVjMjdiNjg3YzgzYjhhYzUzNzIwNDU3YmFlOTQxMzJjNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5l
IFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBBZGQg
bWlzc2luZyBpbnNwZWN0b3IgZmlsZSB0byBHVEsrIGNvbXBpbGF0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJlOTcz
YzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5MzdkMzA5
MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzEs
NyArNzEsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFy
c2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3NzE5ZDM2
NDc1YjZiNjExZTgyOTYuLmQ3MDdlMzNiZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVjY2Q1Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAg
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVu
dGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjAy
LDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAog
ICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1Rf
TFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBy
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2ICsx
MjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0
MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTli
NjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVO
QUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0g
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01P
RFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggMmY2NWRiNTVhMWVlZDM2NDljZmUzM2Q3OGI5MjZjNjI1MTNhOWY2OC4u
ZmRlNTdlOTM4ZGJkNGZhMmRiZTVjMTRkN2JjOGZiZTExNTE3MDFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg0LDYgKzg0LDcgQEAgSmF2YVNjcmlw
dENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy9GdW5jdGlvbi5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0dlbmVyYXRvci5Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0dsb2JhbE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIwLDcgQEAg
T0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAg
RGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50
bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IDNlN2Y5OTRlMzA3YzQ2ZDAzYjc0Yjk3OWY1MWJlNjU2ZTU5YWMwNDMuLjE4
OTExOTQ3OTFmYjJkMDc1ZGJhZjdiMTU4N2ZmYzgzZTYzYmM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzU2LDYgKzc1NiwxMCBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFt
ZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk1LDYgKzc5
OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXdQcm90
b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGVN
YXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlv
bi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0ds
b2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ1LDYgKzk1
MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
RGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0Lmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2Vu
ZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CkBAIC0xNTE1LDYgKzE1MjEsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBAIC0xNjAx
LDYgKzE2MDgsMTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNP
ZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiArMTY3Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTZkM2ZmMDBlMjUwM2FjYmMzNjc5
MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMjdjYzM2ZGJiMTQ5MDU0OGQyODg1MWQzMDNhOTk3NzY5ZGEw
MmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwpAQCAtNjY2LDYgKzY2NiwxOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYgKzc1OSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2ICsyNjI3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxT
b3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRl
ci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBA
IC0yODEzLDYgKzI4MzEsMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
clByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JUaGlz
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgsNiArMjk1
MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICszMzE4LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJv
clByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVyPkRl
cml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkNzQ5MTZjY2NjMjZlZDNkODY0ZGJkNTBm
MGQ5MTYzMzkzMGFlMTMuLjI3ZGU0NTk2YTRiYmE5OWI0Y2I2YzYzNTBiNjBkNzJiMmQ3ZTI5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkgQEAKIAkJ
NzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMzNUM2
MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQ
cm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAw
MTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5j
cHAgKi87IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4MDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9Owor
CQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIxQzAyNEE0
NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwICovOyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIg
LyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOTAxQzAy
NDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCAqLzsgfTsKIAkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9y
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEwOTFCRTdE
NjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNz
ZW1ibHkuaCAqLzsgfTsKQEAgLTE5NjIsOCArMTk3NSw4IEBACiAJCUZFMEQ0QTA5MUFCQTI0Mzcw
MDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDRBMDcxQUJBMjQzNzAwMkY1
NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgKi87IH07CiAJCUZFMTIy
MDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8q
IEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNw
cCAqLzsgfTsKLQkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlG
RjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgc2V0dGluZ3MgPSB7
QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklU
TXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMDExQkZCRTU1RTAwMzhC
QkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJh
dG9yLmNwcCAqLzsgfTsKKwkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
ODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyB9OwogCQlGRTFD
MEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhj
ZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNG
Q0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8q
IExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpA
QCAtMzI2Nyw2ICszMjgwLDIwIEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2
NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JG
cmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg0MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBC
NzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVy
YXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QjFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIg
LyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
Qjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvci5wcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0b3IucHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE5MDFDMDI0NkNF
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRvclByb3Rv
dHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIyREYyQzcw
MDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MDc3LDYgKzUxMDQsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMz
MUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAw
MzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0Uw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIz
RTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3MTBEMTlG
NkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCAq
LywKQEAgLTUyMDUsNiArNTIzMyw3IEBACiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8q
IFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyogU291cmNl
Q29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZUNvZGUu
aCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICov
LAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi8s
CiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJ
CQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICov
LApAQCAtNTMzNCw2ICs1MzYzLDE1IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8q
IEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAv
KiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MEI3OTE4
NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAor
CQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhp
cy5oICovLAogCQkJCTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRz
LmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmggKi8sCiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZz
ZXQuaCAqLywKQEAgLTU0MzMsNiArNTQ3MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAv
KiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBK
U0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJCQkwRjJC
NjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaCAqLywKQEAgLTY1NDEsNiArNjU4MSw3IEBACiAJCQkJQTc1RUU5QjAxOEFBQjdF
MjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMxNTQwMDZE
NjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMg
LyogRnVuY3Rpb24ucHJvdG90eXBlLmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFF
MiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5QTMwMDlE
QjFFRiAvKiBHbG9iYWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFC
ODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCkBAIC02
OTUyLDYgKzY5OTMsNyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1
cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAv
KiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIg
LyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMxQzAyNEEy
ODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFC
QjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTcwMDEsNiArNzA0Myw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4
IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTA4
NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0
YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0Yy
NDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjIxLDYgKzcyNjQsNyBAQAogCQkJCUE1
MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNv
dXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3
NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURCNUYzMDA1
QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0ExN0FEQjVG
MzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ3LDYgKzcyOTEs
NyBAQAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3Jp
cHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTAsNiArNzQzNSw3IEBACiAJCQkJ
MUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1Rl
bXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMwMjRBNDkw
MDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDI2LDYgKzc0NzIsNyBAQAogCQkJCUZFMTg3
QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0NjBDRjAw
NjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU1MUI3
OTRGOEEwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUz
OTEzNTYxQjc5NEY4RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTc1OTgsNiArNzY0NSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRFQUVEQTAw
MjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRF
QUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5
RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAv
KiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzYzMCw2ICs3Njc4LDcgQEAKIAkJ
CQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clRoaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBT
dHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUz
QTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODY0Nyw2ICs4Njk2
LDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg2NzMsNiArODcyMyw3IEBACiAJCQkJMEY3NjZEMjgx
NUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFCRTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFF
MTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZD
NzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBK
U0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg4MTAsNiArODg2MSw3IEBA
CiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0RDJGM0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAw
RDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdF
QzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNF
M0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC04OTU2LDYgKzkwMDgsNyBAQAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENC
OUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4
RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5
NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyog
VW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzND
MDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtODk2NCw2ICs5MDE3LDcgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyog
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlG
OTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxS
ZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQg
LyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQz
MGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBhMy4uNDhlZjdmZjNhOGViYTZiNDU4OTY5MjJj
MTdkNjRiMTA1MTRjOTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRl
ID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxs
cHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFBy
b2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1v
ZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBlcnJvciwKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVj
dG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5h
bWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRl
KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRh
LCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZHVtbXlU
RFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsK
ICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NzEwYjI4OGIyMWY3ZjM3NzlmMjNhZTliZjJkMTVmM2E5YzMwODlmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitmdW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRo
aXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSAqLyAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdlbmVyYXRvclN0YXRlLCB2YWx1ZSwg
LyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSAqLyAxKTsKK30KKworZnVuY3Rpb24g
dGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiB0aGlz
LkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHRoaXMuQGdl
bmVyYXRvclN0YXRlLCBleGNlcHRpb24sIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9k
ZSAqLyAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgppbmRleCAyOTkwZmFlMzU0ODk3OWZlYzdjYTE4NjY5MDkxYmIwNWUyYWM2MmU4
Li41ZTZkNTlkZjEyN2QyYmU3ZDJkMTMyY2QzMzBmM2E3YjhiZjI3Yjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5
MCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0
aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgi
IDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0
aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0
b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCkBAIC0xMjksNyArMTMxLDkgQEAKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVu
Z3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgi
IDogMyB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6
IDMgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDMgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAg
IF0KICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2
Njg0NS4uMzc0MzZjMDE1NjU0OWU5ZjdjMDFkYzQxYTAyZWUzZGQ4YjVhZmY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDgg
KzcwLDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bf
amVxX251bGw6CiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAg
Y2FzZSBvcF9pbmM6IAotICAgIGNhc2Ugb3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9pbmM6
CisgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjUsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVy
dHlfZW51bWVyYXRvcjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBj
YXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9z
dHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Miw2
ICsxNTQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBv
cF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5j
OgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVu
dF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CkBAIC0yMzMsNiArMjM2LDE0IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZChpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjU1LDYgKzI2Niw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2Fz
ZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90
aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0
OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzI3LDgg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAg
Y2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFy
Z3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICs0MDQsMTUgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJs
b2NrLT5tX251bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZChpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2
ZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRj
MmY2YWU0MmYxOGRlZjk5ZWUuLjNjMTJkYjhhNzZlMzQ4Yjk3NGIwN2E2NDI4M2I5MjM5ZWVlMWRl
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBA
IC0xMjk0LDYgKzEyOTQsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3
X2dlbmVyYXRvcl9mdW5jIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzExLDYgKzEzMTksMTQg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVu
Y19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAg
IHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNDk5LDYgKzE1MTUsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQp
LCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
ZCIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0lu
ZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAg
ICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTcyMCw2ICsxNzUwLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2Rl
QmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90
aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7
CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxv
Y2tzLmFkZCh0aGlzKTsKQEAgLTE4NzUsNiArMTkwNiwxMiBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPm51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSkgewor
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5ncm93
KGNvdW50KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
KyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
W2ldID0gdW5saW5rZWRDb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGkpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdGUgbWV0YWRhdGEgYnVmZmVycyBmb3Ig
dGhlIGJ5dGVjb2RlCkBAIC0zMDQ5LDYgKzMwODYsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5r
VG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5r
VG9GaXQoKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJp
bmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMg
aW50byB0aGVzZSB0YWJsZXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggYzFkZjE4N2MxMjIwZDJmN2YwMzI0YTJkMjVmOWI4M2MwNTJkODJlYy4u
MWEwYjk4ZjBjZGIyYzE1ZDYwMDJhZmM0OWE0MmFkYmEwM2JkYjA0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjksNiArNjksNyBAQAogI2luY2x1
ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRl
IDx3dGYvQmFnLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xNDEsNiArMTQyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBt
X251bVBhcmFtZXRlcnM7IH0KICAgICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVl
KTsKIAorICAgIGludCBudW1DYWxsZWVSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX251bUNh
bGxlZVJlZ2lzdGVyczsgfQorCiAgICAgaW50KiBhZGRyZXNzT2ZOdW1QYXJhbWV0ZXJzKCkgeyBy
ZXR1cm4gJm1fbnVtUGFyYW1ldGVyczsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZO
dW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9udW1Q
YXJhbWV0ZXJzKTsgfQogCkBAIC02NTQsNiArNjU3LDEwIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRh
YmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBU
YWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNT
RVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzW3RhYmxlSW5kZXhdOyB9CiAKKyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWll
bGQgcG9pbnRzLgorICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFz
dEJpdFZlY3RvciB2ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9Cisg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGlu
ZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpbmRleF07IH0KKwogICAgIEV2YWxDb2RlQ2FjaGUm
IGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAg
LTkwMCw2ICs5MDcsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAg
ICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisK
ICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFm
YzY1MjhjNWEyZTdkNGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVm
NTkzOGUyYTgyMGY4YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXZhbENvZGVDYWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5o
IgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIz
ICs0NSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291
cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNj
b3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250
ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVN
YXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwg
c2NvcGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAg
ICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJp
bmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBF
dmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNl
Q29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Nj
b3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsK
LSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0
LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERa
KTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlm
IChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2Nh
Y2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hl
TWFwLnNldChldmFsU291cmNlLmltcGwoKSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihl
eGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0Nh
Y2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFw
LnNpemUoKSA8IG1heENhY2hlRW50cmllcykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5T
dHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVL
ZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwg
dGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVL
ZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxF
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJl
dHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZp
cm9ubWVudCgpIHx8IHNjb3BlLT5pc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCkgfHwgc2NvcGUt
PmlzVmFyU2NvcGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNl
LCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxl
KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gSWYgZXZhbCgpIGlzIGNhbGxl
ZCBhbmQgaXQgaGFzIGFjY2VzcyB0byBhIGxleGljYWwgc2NvcGUsIHdlIGNhbid0IHNvdW5kbHkg
Y2FjaGUgaXQuCiAgICAgICAgICAgICAvLyBJZiB0aGUgZXZhbCgpIG9ubHkgaGFzIGFjY2VzcyB0
byB0aGUgInZhciIgc2NvcGUsIHRoZW4gd2UgY2FuIGNhY2hlIGl0LgogICAgICAgICAgICAgcmV0
dXJuICFpblN0cmljdENvbnRleHQgCi0gICAgICAgICAgICAgICAgJiYgZXZhbFNvdXJjZS5sZW5n
dGgoKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkgCisgICAg
ICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihldmFsU291cmNlLmxlbmd0aCgpKSA8
IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkKICAgICAgICAgICAg
ICAgICAmJiBpc0NhY2hlYWJsZVNjb3BlKHNjb3BlKTsKICAgICAgICAgfQogICAgICAgICBzdGF0
aWMgY29uc3QgaW50IG1heENhY2hlRW50cmllcyA9IDY0OwogCi0gICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4+IEV2
YWxDYWNoZU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFNvdXJjZUNvZGVLZXksIFdyaXRl
QmFycmllcjxFdmFsRXhlY3V0YWJsZT4sIFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VDb2RlS2V5
SGFzaFRyYWl0cz4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFsQ2FjaGVNYXAgbV9jYWNoZU1h
cDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBjMmEwOTY5YjUwYjEwMmExNWQu
LjM1YmY3ZGZiNTlhYTZmOTg5YTkzNDU2OTBjNjk4YzZjYzZkODIyMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiwyMSArMjYs
MjggQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAogI2RlZmluZSBFeGVjdXRhYmxlSW5mb19o
CiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKy8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMg
YW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgor
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0
IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlv
biwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rvciwg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2
YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0
b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGlu
ZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlv
bihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAg
ICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVj
dG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0
aW5GdW5jdGlvbikKKyAgICAgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGdlbmVyYXRvclRoaXMpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0
aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1v
ZGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworICAgICAgICBBU1NFUlQobV9zdXBlckJp
bmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAgICAgICBB
U1NFUlQobV9nZW5lcmF0b3JUaGlzID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JU
aGlzKSk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX25lZWRzQWN0aXZhdGlvbjsgfQpAQCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRo
aXMpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAx
OwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93
RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKKyAgICBTb3Vy
Y2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjNjMzE5ZDA2
ZTM5OTdlZGVmM2QzMjc4N2I5YjkzNzJmZmUyNzFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjUsMTAgKzY1
LDEyIEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0
aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5m
by5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJy
b3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpbmZvLmdlbmVyYXRvclRoaXMoKSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQog
ICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwg
bV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAs
IG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IGZhNTE0YzE1NmE3Y2I3Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmUxYjA5NWI2YWQ2
NTJlMDA4N2Q5YTUzMjcxNzU4MTgwY2Y2NzY4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5j
bHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIK
ICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJKU0NlbGwuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTExNiw3ICsxMTgsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAg
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJh
dG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJh
dG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5k
aW5nKTsgfQogCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAgICAgewpAQCAtMjIzLDYgKzIyNyw3
IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhwcmVzc2lvbkluZm9GYXRQ
b3NpdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0NCw2ICsyNDks
MTEgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBVbmxp
bmtlZFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5hcHBlbmQoVW5saW5rZWRTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9y
YXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFi
bGVJbmRleF07IH0KIAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2lu
dHMuCisgICAgc2l6ZV90IG51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZC5zaXplKCkgOiAwOyB9CisgICAgaW50MzJfdCBhZGRMaXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZChGYXN0Qml0VmVjdG9yIHZlY3RvcikgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuYXBwZW5kKHZlY3Rv
cik7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUo
KSAtIDE7IH0KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZChpbnQgaW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpbmRleF07IH0KKwogICAgIHVuc2lnbmVkIGFk
ZEZ1bmN0aW9uRGVjbChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbikKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOwpAQCAtMzg3LDEyICsz
OTcsMTQgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1
bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVp
bHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0g
ICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJh
dG9yVGhpcyA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5z
aWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWdu
ZWQgbV9lbmRDb2x1bW47CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAg
Q29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApAQCAt
NDM2LDYgKzQ0OCw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFi
bGVzOwogICAgICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlczsKIAorICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZDsKKwogICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5m
bzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEz
N2UxZTQ3ZTlkNTliNi4uZGM2ZDg2NWY4MjM1NzEwNmRlZjdkNGNhNTUzYjI5ZDc1MDdmYjk4YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgY29uc3QgQ2xh
c3NJbmZvIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWIKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlv
bktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5s
aW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0
KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBw
YXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGVy
cm9yLCBudWxscHRyKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRh
YmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOwogCiAgICAgaWYgKCFmdW5jdGlv
bikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVy
ZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6
OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rp
b24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlz
U3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGlz
QXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNB
Y3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2Rl
KCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+
Z2VuZXJhdG9yVGhpcygpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlKSk7
CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4o
dm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBl
eGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5l
cmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1
LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHks
IFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5LCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAs
IG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJy
ZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAg
LCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxp
dHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUt
PmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9u
TW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkp
CisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRo
aXMpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1
cGVyQmluZGluZygpKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9wYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKQEAgLTE4MCw3
ICsxODEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25LaW5kLCAKLSAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKQorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsK
ICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6
CkBAIC0xOTYsNyArMTk3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBl
cnJvciwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7CiAgICAg
CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oCmluZGV4IGQ4ZTgyMjkzOTBlNTc3Y2I0ODBmYjBlOTI5M2Y0MWJhNDJk
OWMxZjguLjhiODI3MWE2YzNmNmNjNWQyMTlkNDY5YzEzZGU1NjNmM2IzZjJiYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdl
SW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJIYW5kbGVySW5m
by5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTY1
LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhp
cywgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJp
ZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291
cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpcywgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTgyLDYgKzgzLDggQEAgY2xhc3MgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzSW5TdHJp
Y3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1
bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5j
dGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1f
Y29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9yVGhpcyk7
IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAogICAgIHVuc2lnbmVkIHVu
bGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rp
b25OYW1lU3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk4LDcg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9y
KAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9v
bCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3Qq
JiBleGNlcHRpb24sIApAQCAtMTI1LDEwICsxMjgsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFi
aWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3Rv
ckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
czsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRv
clRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3Q7CiAKQEAgLTE1OCw3ICsxNjAsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
QWJpbGl0eTogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5z
aWduZWQgbV9mdW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBt
X2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsK
KyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjkzNzBjOGQyODRh
Mzg0ZjIxZTBlNzg5MjY4NTQ1YzkyYjE5ODIzYi4uM2NmMGI3YWZhZmVmOWU1ODZkZTAwNmFjZWQy
Yzg3OTczODJlYjg2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVn
aXN0cnlLZXkuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCkBAIC0yMDEsNyAr
MjAyLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8g
b3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QK
ICAgICAvLyBjb21wYXRpYmxlIHdpdGggdGFpbCBjYWxscyAod2UgaGF2ZSBubyB3YXkgb2YgZW1p
dHRpbmcgb3BfZGlkX2NhbGwpLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDg4MTkKLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFp
bENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1pdFByb2Zp
bGVIb29rcykKKyAgICAvLworICAgIC8vIEluIGEgY29udGV4dCBvZiBhIGdlbmVyYXRvciwgYWxs
IHRoZSBjYWxscyBjYW5ub3QgYmUgdGFpbCBjYWxscyBiZWNhdXNlIGFsbCB0aGUgcmVzdWx0cyB3
aWxsIGJlIHdyYXBwZWQgYXMgYW4gaXRlcmF0b3IgcmVzdWx0LgorICAgIC8vIGh0dHA6Ly9lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWlzaW50YWlscG9zaXRpb24KKyAg
ICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3Ry
dWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYg
aXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyAmJiBwYXJzZU1vZGUo
KSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCiB7CiAgICAgZm9yIChhdXRvJiBj
b25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBj
b25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTIyNyw5ICsyMzEsMzMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVy
ZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRo
aW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwog
ICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlk
ZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGlu
IGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMg
PSBmYWxzZTsKKworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9y
IGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRv
ckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1
c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0
YXJ0aW5nIGl0LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVz
ZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9u
LCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAg
IC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAg
ICAgICAgLy8gICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRv
ck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JW
YWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAg
ICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNo
b3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAg
fQorICAgICAgICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3Mg
PSB0cnVlOworICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAg
ICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0Fz
Q2FwdHVyZWQoKTsKICAgICAKQEAgLTI1NCwxNCArMjgyLDQ1IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXpl
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3Bl
IGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBi
YXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIg
PSBhZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fcGFy
YW1ldGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhp
czo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVy
KTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9y
U3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxp
a2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9u
IHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUg
Zm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gQ29tcGxldGVkIHN0YXRlLgorICAgICAgICAvLyBX
ZSBqdW1wIHRvIHRoZSBtX2dlbmVyYXRvckNvbXBsZXRlZExhYmVsIGltbWVkaWF0ZWx5IGJlY2F1
c2Ugd2UgY2Fubm90IHVzZSBhbnkgdGVtcG9yYXJ5IHJlZ2lzdGVycyBoZXJlLgorICAgICAgICBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBtX2dlbmVyYXRvckNvbXBsZXRlZExh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAobV9nZW5lcmF0b3JDb21wbGV0ZWRM
YWJlbC5nZXQoKSk7CisKKyAgICAgICAgLy8gRXhlY3V0aW5nIHN0YXRlLgorICAgICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkdlbmVy
YXRvciBpcyBleGVjdXRpbmciKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVD
aGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
U3RhdGU6OkV4ZWN1dGluZykpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2Nv
cGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkg
eworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlz
RHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
OwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlv
bk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlz
RHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQdXNo
RnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3Rl
ciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91bGRDYXB0dXJl
U29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
PSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZpcm9u
bWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJZiB3
ZSBoYXZlCkBAIC0yNzEsMTkgKzMzMCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dz
IGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRl
cnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1l
dGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0
aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVy
KCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFt
ZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5h
dChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAg
IG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVy
bik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIo
KTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3Rz
IGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1l
ID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkg
ewpAQCAtNDc2LDcgKzUyMiwzNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KIAog
ICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+
aXNBcnJvd0Z1bmN0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rp
b25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAg
IGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZTogeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAg
ICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisg
ICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKKworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdp
c3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZTogeworICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJl
Zm9yZSBoZXJlLgorICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAg
ICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1Rhcmdl
dFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NjYsOCBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlz
KCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAv
LyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1
bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQK
QEAgLTc5OSw2ICs4NzIsMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBh
Ym91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJz
CisgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3BhcmFtZXRl
cnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhp
cyIKKyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigp
LT5pbmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQo
aSkuZmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICBt
X3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4p
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7
CisgICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNh
bEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04NTUsNiArOTQ0LDIx
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdUZW1wb3JhcnkoKQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK0Zhc3RCaXRWZWN0b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVD
YWxsZWVSZWdpc3RlcnMoKQoreworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgRmFz
dEJpdFZlY3RvciB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2l6ZShtX2NhbGxlZVJlZ2lzdGVycy5z
aXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJl
ZyA6IG1fY2FsbGVlUmVnaXN0ZXJzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAg
ICAgICAgICAgIHZlY3Rvci5zZXQoaSk7CisgICAgICAgICsraTsKKyAgICB9CisgICAgcmV0dXJu
IHZlY3RvcjsKK30KKworCiBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdMYWJl
bFNjb3BlKExhYmVsU2NvcGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSkKIHsK
ICAgICAvLyBSZWNsYWltIGZyZWUgbGFiZWwgc2NvcGVzLgpAQCAtMjMxMiwxMiArMjQxNiwxMiBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3RlcklEKiBj
b25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
cmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMo
bV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAgICBtX2Nv
ZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU3NSw2IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50
Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwo
ZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikp
KTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbklu
dGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1pdE9wY29k
ZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBk
c3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4cCk7CkBA
IC0yNDkzLDEzICsyNTgzLDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0dXJuIGRz
dDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJl
Z2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9u
KFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAgIEFTU0VS
VChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gPSBm
dW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1
bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
KSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogewor
ICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6
IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9
CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNjE0LDE4IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5j
RXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rp
b25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAg
IGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7CisgICAg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBk
c3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykK
IHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3Ig
PSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgIGlm
IChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6
OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAg
IGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7
CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKQEAgLTI1NDAsNiArMjY0MywxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENv
bnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
ZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rp
b25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAg
IGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVt
aXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsK
K30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9u
LCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywg
ZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKTsKQEAgLTM3NjYsNiArMzg4MiwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAg
IHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRl
cmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3Is
IFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
K3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAg
IENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAg
IGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAg
ICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7Cisg
ICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0
QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90
RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1Rl
bXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBh
biBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0
ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBA
IC0zODQyLDQgKzM5NzYsMjQ0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9n
ZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRl
cmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRlcmF0b3JSZXN1bHQobnVsbHB0ciwgYXJndW1lbnQsIGZh
bHNlKTsKKyAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2Nr
LT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOwor
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0
KCkpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9w
X3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXIt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJz
SW5kZXgpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAg
ICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Ao
b3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisg
ICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsK
KyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwor
ICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5S
ZWdpc3RlciA9IGVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCksIHRydWUpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAg
ICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5S
ZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIo
KSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21w
bGV0ZWQpKTsKKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAg
fQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAg
IGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgor
ICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZh
bHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAg
eworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7
CisgICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7Cisg
ICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBu
b2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9v
cERvbmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+
IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0
KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5n
ZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAg
ZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0R2Vu
ZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3JSZXN1bHQgPSBlbWl0TmV3SXRl
cmF0b3JSZXN1bHQobnVsbHB0ciwgdmFsdWUuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAg
ICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAg
ICAgICAgICAgIGVtaXRSZXR1cm4oaXRlcmF0b3JSZXN1bHQuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7CisKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAg
ICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJh
dG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFi
ZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1ZW5j
ZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVy
bkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5l
d0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0
dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhv
ZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRN
b3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBy
ZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0
SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0
dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlw
ZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4g
b2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZy
b21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KG51bGxwdHIsIGdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdp
c3RlcigpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5TZXF1
ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jh
cnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwg
cmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVy
dHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BT
dGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5G
cm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmlu
YWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3Blcyhz
Y29wZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2Uoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dFJldHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQg
PSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhy
b3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVt
cElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgp
KSwgdGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0
LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3Vt
ZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJh
bCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAg
ICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2Rl
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgi
RGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVt
aXRNb3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFs
dWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVl
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0
KCkpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKworUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlc3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBkc3QgPT0gdmFsdWUpCisgICAgICAg
IHJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROZXdPYmplY3QocmVzdWx0LmdldCgp
KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5k
b25lLCBlbWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9uZSkpLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIHJl
dHVybiByZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBs
ZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oc3RhdGUpKSk7CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQorewor
ICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3Rh
dGUpCit7CisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0
ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVm
YXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4
dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisK
KyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClb
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKwor
ICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRk
U3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5m
by5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUu
YnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7
CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQg
aGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUg
ImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxh
YmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAz
KSk7CisgICAgfQorCisgICAgZW1pdExhYmVsKG1fZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwuZ2V0
KCkpOworICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgp
OworICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdl
dCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgIHsK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvclJlc3VsdCA9IGVtaXROZXdJ
dGVyYXRvclJlc3VsdChuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmlu
ZWQoKSksIHRydWUpOworICAgICAgICAgICAgZW1pdFJldHVybihpdGVyYXRvclJlc3VsdC5nZXQo
KSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgZW1pdExhYmVsKHRo
cm93TGFiZWwuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4
YjY1OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYuLjEyOGMwMWExMGU5MzA4Yzk0
YWYzYzRlMzMwNTA0MjE2YWRjOTFiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAj
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4
MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5jb25zdHJ1Y3RvcktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRo
aXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpOyB9CisgICAg
ICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwog
CkBAIC0yOTcsNiArMzAwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogc2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdp
c3RlcjsgfQorCiAgICAgICAgIC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFy
eSByZWdpc3Rlci4gUmVnaXN0ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFy
eSByZXF1aXJlIGEgbW9kaWZpZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAg
ICAgICAvLyByZWdpc3RlciB3aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFp
bGFibGUiLCBtZWFuaW5nIHRoYXQKQEAgLTQ5OSwxMCArNTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdpc3RlcklEKiBkc3QsIEVsZW1l
bnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbklu
dGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJO
b2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rv
cihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNl
RnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAq
KTsKIApAQCAtNTk2LDYgKzU5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9y
Q2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3Rl
cklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0LDEyICs2
NDgsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2goUmVnaXN0
ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3aXRjaCh1
aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2RlKiosIExh
YmVsKiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAorICAgICAg
ICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1pdEdlbmVy
YXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVs
ZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0l0ZXJhdG9yUmVzdWx0KFJlZ2lzdGVySUQq
LCBSZWdpc3RlcklEKiwgYm9vbCk7CisgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0
ZXJJRCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdp
c3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0ZXJJRCog
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsg
fQorCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlw
ZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1f
c2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hv
b2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogCkBAIC02NjcsNiArNjg0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJl
ZCk7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3Rl
cklEKiwgQmFzZUZ1bmNFeHByTm9kZSopOworICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVDYWxs
ZWVSZWdpc3RlcnMoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNj
b3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywg
UmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTc1
MiwxMiArNzcxLDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVy
VERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZs
YWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQg
YmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAg
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwg
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUpCisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmls
aXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxz
ZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
ICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKKyAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMgPSBH
ZW5lcmF0b3JUaGlzOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6RW1wdHk7CiAKLSAgICAgICAg
ICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2Nv
cGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxp
dHksIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRh
dGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXMsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5k
ZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdENhbGxWYXJhcmdzKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVn
aXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9u
UGFyYW1ldGVycyYpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1l
bnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlv
blBhcmFtZXRlcnMmLCBGdW5jdGlvbk5vZGUqLCBTeW1ib2xUYWJsZSosIGludCBzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoVW5pcXVlZFN0cmluZ0lt
cGwqKT4mIGNhcHR1cmVzKTsKIApAQCAtNzc2LDYgKzgwNiw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9u
KCk7CiAKKyAgICAgICAgTGFiZWwqIGdlbmVyYXRvckNvbXBsZXRlZExhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JDb21wbGV0ZWRMYWJlbC5nZXQoKTsgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBtX2luc3RydWN0aW9uczsKIApAQCAtODA0LDYgKzgzNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBtX3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9hcmd1bWVudHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAg
UmVnaXN0ZXJJRCogbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogbV9nZW5lcmF0b3JSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC04MjcsNiAr
ODYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3
aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNv
bnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4g
bV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gbV9nZW5lcmF0b3JDb21w
bGV0ZWRMYWJlbDsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzOwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7
IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFi
bGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9J
bml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYw
OGJkMzc0N2RlZGE3ODY4ZTViYmQwZjUyLi4xZDM4MjJmNjczMmEzNTQ3ZjNlOTBlNjE3ZmYwZGVl
MjBmODdhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsx
NDYsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9z
aG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpcygpID09
IEdlbmVyYXRvclRoaXM6OkVtcHR5KQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCkBAIC0xNzAsMTIgKzE3MSwxNiBAQCBSZWdpc3RlcklEKiBTdXBlck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwogfQogCi1zdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21l
T2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAgUmVn
aXN0ZXJJRCBjYWxsZWU7CiAgICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
ICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1l
KTsKK30KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworc3RhdGljIFJlZ2lzdGVySUQq
IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3sK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bGVlKGdlbmVyYXRvcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGhvbWVPYmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIApAQCAtMjU4MywxMyArMjU4OCwyNyBAQCB2b2lk
IFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQogICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lz
dGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92
YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBudWxscHRyOworICAgIGlmIChtX3ZhbHVl
KSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUp
OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9h
ZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIHJldHVyblJlZ2lzdGVy
ID0gZ2VuZXJhdG9yLmVtaXROZXdJdGVyYXRvclJlc3VsdChudWxscHRyLCByZXR1cm5SZWdpc3Rl
ci5nZXQoKSwgdHJ1ZSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJl
Z2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxs
eUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UG9wU2NvcGVzKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIDApOwog
ICAgIH0KIAorICAgIGlmIChnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0
YXRlOjpDb21wbGV0ZWQpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2
ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhlbmRPZmZzZXQoKSk7IApAQCAtMjk2Niwy
NiArMjk4NSwxMDAgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0
KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRlbWVudE5v
ZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJldHVy
bk5vZGUqIHJldHVybk5vZGUgPSAwOworICAgIHN3aXRjaCAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgp
KSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogewor
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50
KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0YXRpY19j
YXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7CisgICAgICAgIEFTU0VSVChl
eHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9
IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOworCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOworCisgICAgICAgIGlmIChnZW5lcmF0
b3Iuc3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpIHsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUo
Z2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4
dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KIAotICAgIC8vIENoZWNrIGZv
ciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9m
IGEgc2luZ2xlIGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVt
ZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudElu
QmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3Rh
dGVtZW50KCk7Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVt
ZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3Rh
dGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAg
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3Rv
cmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgor
ICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpT
R2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysr
IGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQogCi0gICAgLy8g
SWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgot
ICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRv
ci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3Iu
ZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8v
IERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQn
cyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
aXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFs
U3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkluaXRpYWwpKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
LCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRv
ci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5T
dGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmls
ZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFT
U0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9m
ZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxM
YWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bf
c3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9y
bWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcChnZW5lcmF0b3IuZ2VuZXJhdG9yQ29tcGxldGVkTGFiZWwoKSk7
CisgICAgICAgIH0KKworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvckJvZHlM
YWJlbC5nZXQoKSk7CisgICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRy
eShnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0
ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcChkb25lLmdldCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVy
ZSA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lz
dGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IucG9wVHJ5
QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1
ZVJlZ2lzdGVyLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRsZXJUeXBlOjpTeW50aGVzaXpl
ZEZpbmFsbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpD
b21wbGV0ZWQpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rl
ci5nZXQoKSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TmV3SXRlcmF0b3JSZXN1
bHQobnVsbHB0ciwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpLCB0
cnVlKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVu
dHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAg
ICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBD
aGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21w
b3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBz
aW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSog
bGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0
ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudElu
QmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVu
dEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJu
IHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5v
ZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0
b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAs
IFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBl
bWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4g
dGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgp
ID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9
CiB9CiAKQEAgLTMwMTMsMTEgKzMxMDYsMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAog
UmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBq
dXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGlt
cGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJh
bCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1l
bnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBh
cmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDIwN2UwYjMzZTk4MjM5ZWU0YjQyYTU1NWQ0OWY0
MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIwMGE5MjAyNDYyYzAwOTgyYmI0MWZkOWY0MGVlMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTk2LDYgKzk2LDggQEAgY2xhc3MgSGVhcCB7
CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZhc3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9IDE2OwogCisgICAgYm9vbCBpc0xpdmVDZWxsKGNv
bnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIpOworCiAgICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3Rh
dGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCBmNGFjZjI1ZTYwZTE4OTM4YTY4YTdiOGRiOTU5
NTRkNmEyNTAyYjI0Li5iOGY3ZDc2ZmZmY2QwMDA2NGU4ZGVjYjY1MWM5YWZhY2FiY2I3N2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTcwLDYgKzcwLDM2
IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4g
aGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlQ2VsbChjb25z
dCB2b2lkKiBwKQoreworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gTG9vayB1cCBiZWxvbmdpbmcgTWFya2VkQmxvY2sgYW5kIGZpbHRlciBvdXQgaWYgaXQgaXMg
bm90IGFsbG9jYXRlZC4KKyAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyID0gbV9vYmplY3RTcGFj
ZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAgICBNYXJrZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2Vk
QmxvY2s6OmJsb2NrRm9yKHApOworICAgIGlmIChmaWx0ZXIucnVsZU91dChyZWludGVycHJldF9j
YXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7CisgICAgICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFt
X29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNvbnRhaW5zKGNhbmRpZGF0ZSkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGVzdCB0aGF0IHRoZSBwb2ludGVyIGlz
IEF0b21BbGlnbmVkLiBJZiBub3QsIHRoaXMgcG9pbnRlciBpcyBub3QgcG9pbnRpbmcgdG8gYSBo
ZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAoIU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIGdpdmVuIGNhbmRp
ZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1YWxseSBhbGxvY2F0ZWQgaW4gVk0ncyBIZWFwLgorICAg
IC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBkZWZp
bml0ZWx5IGV4aXN0cy4KKyAgICBpZiAoIW1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29u
dGFpbnMoY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHBv
aW50ZXIgY2FuIGJlIHVzZWQgYXMgb25lIG9mIGNlbGxzLiBOb3QgcG9pbnRpbmcgdG8gbWV0YWRh
dGEsIG9yIG1pZGRsZSBvZiBjZWxscy4KKyAgICBpZiAoIWNhbmRpZGF0ZS0+aXNBdG9tKHApKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgY2VsbCBwb2ludGVyIGlzIG5vdCB6
YXBwZWQuIEl0IG1lYW5zIHRoaXMgY2VsbCBpcyBhY3R1YWxseSB1c2VkLgorICAgIHJldHVybiAh
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NlbGwqPihwKS0+aXNaYXBwZWQoKTsKK30KKwogaW5s
aW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0IHZvaWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1h
cmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNMaXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5
YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRl
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYg
KzE1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQo
Y29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAg
ICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29u
c3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBK
U0NlbGwqKTsKICAgICAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2
b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKQEAgLTM4OCw3ICszODksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogICAgIHsKICAgICAgICAgQVNTRVJU
KE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1i
ZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHApOwpAQCAtMzk5LDcgKzQwMCwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIg
Pj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQg
b2YgdGhlIHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChj
b25zdCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNDZWxsKj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZi
MDYzNzVjMGI2ZThhYy4uZDE4NTA0MjBhYmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgp
OwogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9j
aygpOwogICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVj
a2VkUihjYWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6
OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2
YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJv
Z3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNh
bGxlclVubGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOworCisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJ
Zk5lZWRlZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBU
aGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2Nr
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVy
VW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0
eSkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAg
ICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAg
RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50
cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1RE
Wk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlm
ICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBA
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxp
dGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25z
LgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAg
ICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/
IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwot
ICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhj
YWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAg
ICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJh
bWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2
YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0
NTBkMC4uOTViYWIwNGQyM2E4ZWJlOTVjY2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkK
KyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9i
eV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQog
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNh
NDc5ZDQyZC4uZmNjOGYzMDY2NzdlNzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0
cnVjdGlvbiopOwpAQCAtNTQxLDYgKzU0Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
b3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmpl
Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAg
IHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1p
dE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4
cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hl
Y2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29s
dmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cywgdW5zaWduZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKaW5kZXggZDQ5NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTVi
YjQ0YjMzNDA1ZjBmMmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7CiAjZW5kaWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7
CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
bmV3X2Z1bmMpCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRz
dCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlE
ID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3Ry
dWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQot
ICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5z
dHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3Zt
LT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7
CkBAIC0xMDE4LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24o
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCBy
ZWdUMywgcmVnVDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7Cisg
ICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAg
fQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0
cnVjdGlvbik7CkBAIC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9y
ZXN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRk
ZDY1N2EyODk2OGEwZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUy
MDIzYWJlOWY3MjNmNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05
ODcsMjMgKzk4OCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChm
dW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0
YWJsZSksIHNjb3BlKSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5j
dGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVu
Y3Rpb25UeXBlOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1
bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJl
dHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25F
eGVjdXRhYmxlKQogewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlv
bkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNv
bW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNH
ZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2Up
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAg
ICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+
aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5j
dGlvbkV4ZWN1dGFibGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBz
dGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUp
OworICAgIHJldHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3Bl
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25D
b21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7
CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggOTYzOGYxNDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRh
NDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiwg
QXJyYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2Rl
ZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5j
dGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNT
Y29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpT
Q2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li41ZjVmMjE4NGM5M2I5
MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYykKICAgICBMTElOVF9SRVRVUk4oSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQp
LCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgp
ICE9IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSB8fCBleGVj
LT5oYXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2Vk
UihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFU
SF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYK
KyAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xMDUyLDYgKzEwNjUsMTcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jX2V4cCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1szXS51Lm9wZXJhbmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRl
eCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNk
NzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTksNiArOTksOCBAQCBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9jaGFyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc3dpdGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGY4ZTEyOGNjZDlhMDRhMTFhY2Y5OTFjYmMx
YjViMjBkOTdjYWYwMzMuLjM2OGQwODc1MmE3Y2ZiN2FkY2FkZGU2ZjBjM2U3OTFiNWZjZTQyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTEyMjcsNiArMTIyNywxMiBAQCBfbGxpbnRfb3BfbmV3X2Z1bmM6CiAgICAg
ZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
YXJyYXkpCkBAIC0xNDU4LDYgKzE0NjQsMTEgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0
Y2goNCkKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3Jf
ZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKwogX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4
cDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbmV3X2Fycm93X2Z1bmNfZXhwKQpAQCAtMTU3Myw2ICsxNTg0LDE4IEBAIF9sbGludF9vcF9h
c3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGlu
dF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIxNjJlOGRm
MTI0OWY1OTdmODZmNTIyYjcwZTFlOTYwOWJlMDAuLjJiODRjYmFmMzdlZjA0NjBiZGI5MTZkMmJi
ZGFjMDJlMGQyYjRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC0zNDEsOSArMzQxLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBudWxscHRyLCAv
KiBkZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHByTm9kZSogY3JlYXRl
WWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFy
Z3VtZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwg
Ym9vbCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1
bWVudCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOwor
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7Cisg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNyZWF0ZUNs
YXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9u
Tm9kZSogY29uc3RydWN0b3IsCkBAIC0zNjQsMTIgKzM2NiwxMiBAQCBjbGFzcyBBU1RCdWlsZGVy
IHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3Ry
dWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODg2LDYg
Kzg4OCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3Rh
cnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRz
VXNlKCkgeyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNj
b3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNi
NjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uNWI2ZGM0OTM4NWRhNzgzNThjMjc5YmMw
ODAwYmY4OWEwYTY1NzljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0
YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQog
ICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1
bW4oZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1l
dGVyQ291bnQpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5T
dHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5n
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAg
ICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQog
eworICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Vw
ZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRjMTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2Uu
LjBiZjAwYjdiZTkzN2Y3OTc4YTQ1NjM3M2ZhZGUzMWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTcsNyArMTgxNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApA
QCAtMTg0Miw4ICsxODQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaW50IHN0YXJ0
U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAg
ICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENv
bnRleHQ7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQg
Zmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0
YXJ0T2Zmc2V0KQpAQCAtMTg2OSw4ICsxODY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGludCBtX2xhc3RMaW5lOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAg
ICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25l
ZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKLSAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBA
IC0xOTMyLDcgKzE5MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAg
ICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQxNDk4MjZjMzc5ZTQyY2Y1OWNlNTJh
Li5iZjM3NzhlMzNiNjZiMTI4NDM2OGY3NmY0NTVkNTIyODNkMzA4ODkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaG91bGRQcmludFRva2VuLCBjb25zdCBBJiB2
YWx1ZTEsIGNvbnN0IEIKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4
ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291
cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEwLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVt
ZW50cygwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQog
ICAgICwgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAg
ICAgLCBtX3RoaXNURFpNb2RlKHRoaXNURFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQCBT
dHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2Fs
bGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7
CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0g
ICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rp
b25JbmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGUpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsK
ICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYm
ICFoYXNFcnJvcigpKSB7CkBAIC0yNzMsOCArMjc3LDEyIEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJz
ZU1vCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmds
ZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYg
KGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50
cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVt
ZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTMwMSw3ICszMDksMTQgQEAgU3RyaW5nIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW8KICAgICBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29w
ZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRW
YXJpYWJsZXMpCiAgICAgICAgIHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVk
KGVudHJ5KTsKLSAgICAKKworICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICBz
Y29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlm
ICh1c2VkVmFyaWFibGVzLmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5p
bXBsKCkpKQorICAgICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAg
ICB9CisKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAg
ICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1v
ZGVGZWF0dXJlOwpAQCAtMzExLDEwICszMjYsMTAgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8K
ICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmICht
b2RpZmllZEFyZ3VtZW50cykKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNG
ZWF0dXJlOworCisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2Vk
VmFyaWFibGVzOwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZp
ZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNl
ZFZhcmlhYmxlcyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQg
aWYgd2Ugd2FudCB0byBhbGxvdyBidWlsdGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMu
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAg
ICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1f
dm0sIHZhcmlhYmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzMsNDUgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
TW9kdWxlU28KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBj
b250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktl
eXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5T
dGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigp
OworICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9m
ZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0
T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAg
IGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBp
bmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAg
IGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUg
PSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9y
LCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdl
bmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJv
ZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0
X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBh
cnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5v
dCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5l
cmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAg
IH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5w
YXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisK
KyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1f
dG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29s
dW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhw
cihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3Jl
YXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xh
c3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNv
dXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExp
c3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZl
LCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1h
ciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQzLDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJh
bWV0ZXJzKFRyZWVCCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlU
eXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkK
KyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlv
biA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5
cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09
IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NF
QlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigp
OwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRv
a2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29u
c3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYw
OSw3ICsxNjYyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25C
b2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBlbHNlCiAgICAgICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JT
dHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5u
b3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1
bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9j
YXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93
RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5k
LCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3OCw4IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJh
dG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1OCwzNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGludCBQYXJzZXI8
TGV4ZXJUeXBlPgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZv
cm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJh
dG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JT
dGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQor
ICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJp
bmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFs
dWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVj
bGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRl
cnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisg
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4g
cGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVt
ZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1
cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rp
b25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VN
b2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIgKzE4OTksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVp
bGQKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0g
bV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2Nh
dGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAg
ICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3Rv
cktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24s
ICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
ICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVk
U3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25C
b2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAg
ICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZElu
Zm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNG
cmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyArMTkxNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJl
ZUJ1aWxkCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9u
LmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5k
RnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAg
aWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAg
ICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24g
PyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVu
Y3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM4LDMzIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJl
ZUJ1aWxkCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsK
ICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0
aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9u
SW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVu
Y3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3Rl
ZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRv
ckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29w
ZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7Cisg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsK
KworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3Rp
dmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9k
ZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90
IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAg
aWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJp
dmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVu
Y3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAg
IHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJv
ZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBt
X2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RN
b2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25J
bmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJp
Y3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1l
cy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmlt
cGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwog
ICAgIH0KQEAgLTE5MjksNyArMjAzMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1F
UykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsK
KyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwg
RnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
SW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJz
ZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJG
dW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYg
KGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2Vu
ZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5v
dCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAg
IH0KQEAgLTI3MzEsNyArMjgzNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgRXhw
cmVzc2lvbkVycm9yQ2xhc3NpZmllciBjbGFzc2lmaWVyKHRoaXMpOwogCiAjaWYgRU5BQkxFKEVT
Nl9HRU5FUkFUT1JTKQotICAgIGlmIChtYXRjaChZSUVMRCkpCisgICAgaWYgKG1hdGNoKFlJRUxE
KSAmJiAhaXNZSUVMRE1hc2tlZEFzSURFTlQoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkp
KQogICAgICAgICByZXR1cm4gcGFyc2VZaWVsZEV4cHJlc3Npb24oY29udGV4dCk7CiAjZW5kaWYK
IApAQCAtMjgzNiw2ICsyOTM5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICBmYWls
SWZUcnVlKG1fZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1l
dGVycywgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwog
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNU
ZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VS
VChtYXRjaChZSUVMRCkpOwogICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9p
bnQoKTsKICAgICBuZXh0KCk7CkBAIC0yODQzLDEzICsyOTQ3LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWll
bGRFeHByZXNzCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsK
IAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlv
biBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Np
b24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlm
ICghYXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9u
KTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3Vt
ZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24s
IGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2Vu
RW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0z
MDQxLDcgKzMxNDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aAogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBtZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhv
ZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4gbWV0aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0
b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1l
dGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAg
LTMyOTQsNyArMzM5OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByCiAgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwog
I2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5k
aWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
b1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5m
bywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1
bmN0aW9uIGV4cHJlc3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4
cHIobG9jYXRpb24sIGZ1bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCAxN2IwZTgxYWVhMWQ4OWM0ZmVjOTQ0NzU3YzdmNDk1ZWM1MDQ3NzNlLi43MjU5
YTVkNDc1NTZmNDA1M2E0MGFhM2VjMzQzNTllOTY3OTM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAg
ICAgICAsIG1faXNMZXhpY2FsU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91
bmRhcnkoZmFsc2UpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZSh0cnVlKQorICAgICAg
ICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAg
ICAgICwgbV9zd2l0Y2hEZXB0aCgwKQogICAgIHsKQEAgLTE5Miw2ICsxOTMsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgICAgICAsIG1faXNMZXhpY2FsU2NvcGUocmhzLm1faXNMZXhpY2FsU2NvcGUp
CiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5
KQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUp
CisgICAgICAgICwgbV9oYXNBcmd1bWVudHMocmhzLm1faGFzQXJndW1lbnRzKQogICAgICAgICAs
IG1fbG9vcERlcHRoKHJocy5tX2xvb3BEZXB0aCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKHJo
cy5tX3N3aXRjaERlcHRoKQogICAgICAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21vZHVs
ZVNjb3BlRGF0YSkKQEAgLTI0Niw2ICsyNDgsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAg
ICAgIHNldElzR2VuZXJhdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICAgICAgc2V0
SXNHZW5lcmF0b3JGdW5jdGlvbigpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlOgpAQCAtMjY4LDYgKzI3NCw4IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBp
c0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzRnVuY3Rpb25Cb3VuZGFyeTsg
fQogICAgIGJvb2wgaXNHZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yOyB9
CiAKKyAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRz
OyB9CisKICAgICB2b2lkIHNldElzTGV4aWNhbFNjb3BlKCkgCiAgICAgeyAKICAgICAgICAgbV9p
c0xleGljYWxTY29wZSA9IHRydWU7CkBAIC00NTAsMTYgKzQ1OCwyMCBAQCBzdHJ1Y3QgU2NvcGUg
ewogICAgICAgICAgICAgbV91c2VzRXZhbCA9IHRydWU7CiAKICAgICAgICAgewotICAgICAgICAg
ICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlh
Ymxlcy5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRy
ID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0
cikgewotICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxl
cy5jb250YWlucygqcHRyKSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRh
aW5zKCpwdHIpKQorICAgICAgICAgICAgZm9yIChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpbXBsIDogbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAg
ICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucyhpbXBsKSB8
fCBuZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vICJhcmd1bWVudHMi
IHJlZmVyZW5jZSBzaG91bGQgYmUgcmVzb2x2ZWQgYXQgZnVuY3Rpb24gYm91ZGFyeS4KKyAgICAg
ICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPmlzRnVuY3Rpb25Cb3VuZGFyeSgpICYmIG5lc3Rl
ZFNjb3BlLT5oYXNBcmd1bWVudHMoKSAmJiBpbXBsID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cy5pbXBsKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoKnB0cik7CisKKyAgICAgICAgICAgICAgICBtX3Vz
ZWRWYXJpYWJsZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
YSBkZWNsYXJlZCB2YXJpYWJsZSB0aGF0IGlzIHVzZWQgaW4gYW4gaW5uZXIgc2NvcGUgdG8gYmUg
dGhvdWdodCBvZiBhcyBjYXB0dXJlZCBpZgogICAgICAgICAgICAgICAgIC8vIHRoYXQgaW5uZXIg
c2NvcGUgaXMgYm90aCBhIGxleGljYWwgc2NvcGUgYW5kIG5vdCBhIGZ1bmN0aW9uLiBPbmx5IGlu
bmVyIGZ1bmN0aW9ucyBhbmQgImNhdGNoIiAKICAgICAgICAgICAgICAgICAvLyBzdGF0ZW1lbnRz
IGNhbiBjYXVzZSB2YXJpYWJsZXMgdG8gYmUgY2FwdHVyZWQuCiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzICYmIChuZXN0ZWRTY29wZS0+bV9pc0Z1bmN0aW9u
Qm91bmRhcnkgfHwgIW5lc3RlZFNjb3BlLT5tX2lzTGV4aWNhbFNjb3BlKSkKLSAgICAgICAgICAg
ICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZXMuYWRkKCpwdHIpOworICAgICAgICAg
ICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoaW1wbCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gUHJvcGFnYXRlIGNsb3NlZCB2YXJpYWJsZSBj
YW5kaWRhdGVzIGRvd253YXJkcyB3aXRoaW4gdGhlIHNhbWUgZnVuY3Rpb24uCkBAIC01NTAsMTQg
KzU2MiwyMiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAgICAgbV9pc0Z1bmN0aW9uID0g
dHJ1ZTsKICAgICAgICAgbV9pc0Z1bmN0aW9uQm91bmRhcnkgPSB0cnVlOworICAgICAgICBtX2hh
c0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgIHNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgICAg
IG1faXNHZW5lcmF0b3IgPSBmYWxzZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzR2VuZXJhdG9y
RnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc2V0SXNGdW5jdGlvbigpOworICAgICAgICBtX2lz
R2VuZXJhdG9yID0gdHJ1ZTsKKyAgICB9CisKICAgICB2b2lkIHNldElzR2VuZXJhdG9yKCkKICAg
ICB7CiAgICAgICAgIHNldElzRnVuY3Rpb24oKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRy
dWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRJc01vZHVsZSgpCkBAIC01NzksNiArNTk5LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29s
IG1faXNMZXhpY2FsU2NvcGUgOiAxOwogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAx
OwogICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX2hhc0FyZ3Vt
ZW50cyA6IDE7CiAgICAgaW50IG1fbG9vcERlcHRoOwogICAgIGludCBtX3N3aXRjaERlcHRoOwog
CkBAIC02MjcsNyArNjQ4LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNl
cigKLSAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwg
SlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsCisgICAgICAgIFZNKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291
cmNlUGFyc2VNb2RlLCBTdXBlckJpbmRpbmcsCiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKICAgICB+UGFyc2VyKCk7CiAKQEAgLTExNTAs
NiArMTE3MSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVl
QnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShU
cmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJl
Y3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVy
KiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAg
IGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE5
MCw3ICsxMjEyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJp
Y3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFy
c2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciog
bWV0aG9kTmFtZSwgYm9vbCBpc0dlbmVyYXRvcik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29s
IHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0
T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZyA9IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9k
eShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRy
ZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZywgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3Jt
YWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2ln
bmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRl
eHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVp
bGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQ
YXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYg
aWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGlu
aXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0
VHlwZSwgYm9vbCYgZm9yTG9vcENvbnN0RG9lc05vdEhhdmVJbml0aWFsaXplcik7CkBAIC0xMjE1
LDYgKzEyMzcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBG
dW5jdGlvblJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFp
bmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZF
Ul9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNl
UGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJl
ZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJl
bWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApAQCAtMTM0MCw2ICsxMzYz
LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9m
dW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwogICAg
IGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKKyAgICBTdXBlckJpbmRpbmcgbV9zdXBlckJpbmRpbmc7
CiAgICAgQ29uc3RydWN0b3JLaW5kIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZDsKICAgICBUaGlz
VERaTW9kZSBtX3RoaXNURFpNb2RlOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV92YXJEZWNs
YXJhdGlvbnM7CkBAIC0xNDYzLDcgKzE0ODcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9k
ZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAogICAgIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCkBAIC0xNDcyLDcgKzE0
OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAKICAgICBBU1NFUlQo
IXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9k
ZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJzZXI8
TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERa
TW9kZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJz
ZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgICAgIGlm
IChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpAQCAtMTQ4
NSw3ICsxNTA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBz
dHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwg
dGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBw
YXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAq
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
NDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0
ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQCBlbnVtIEZ1bmN0aW9uTW9kZSB7IEZ1
bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbiB9OwogZW51bSBjbGFzcyBTb3Vy
Y2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2Rl
LAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRl
ck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNG
dW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBA
QCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGlu
ZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMy
ZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAor
I2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENv
ZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUg
fTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2Rl
S2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29k
ZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQor
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5N
b2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0
ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8v
IHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisg
ICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygp
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAg
ICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxh
Z3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFt
ZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7
CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFp
dHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1
cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNl
Q29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZk
MWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBT
eW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Np
b24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNz
aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29s
KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0
LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
Ym9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50
LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNS
ZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBp
bnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQo
aW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwog
cHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9r
ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBm
MTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi4yYTI0NDJmYWE2ZWVhODE4
Mjg0NWZmYjE3YjIxYTJiOTkzODRjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUq
IGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJv
b3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVs
bHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290
Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVG
cm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFy
c2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8g
Z2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2Vu
ZXJhdG9yVGhpczo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4
ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmlu
Zygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXks
IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDhj
OGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4uOWI4YzE1MGRlMjBiODUzM2Ix
ZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2lu
Y2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTU2LDcxICs1Nyw2IEBAIGNsYXNzIFZNOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNz
IFNvdXJjZVByb3ZpZGVyOwogCi1jbGFzcyBTb3VyY2VDb2RlS2V5IHsKLXB1YmxpYzoKLSAgICBl
bnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVs
ZVR5cGUgfTsKLQotICAgIFNvdXJjZUNvZGVLZXkoKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3Vy
Y2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0g
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQotICAgICAgICA6IG1fc291cmNlQ29k
ZShzb3VyY2VDb2RlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3Mo
Ci0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKQotICAg
ICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKQotICAg
ICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpCi0gICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCi0gICAgICAgICwg
bV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3Vy
Y2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3Nv
dXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgewotICAgIH0KLQotICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNv
ZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzaDsgfQotCi0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KLQotICAgIC8vIFRvIHNhdmUgbWVtb3J5
LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291
cmNlCi0gICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVm
ZmljaWVudC4KLSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2Rl
LnRvU3RyaW5nKCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9o
YXNoCi0gICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQotICAgICAgICAg
ICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCi0gICAgICAgICAgICAmJiBtX25hbWUgPT0g
b3RoZXIubV9uYW1lCi0gICAgICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7Ci0gICAgU3Ry
aW5nIG1fbmFtZTsKLSAgICB1bnNpZ25lZCBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1faGFzaDsK
LX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29k
ZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2Rl
S2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2Rl
S2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9Ci19OwotCiBzdHJ1Y3QgU291
cmNlQ29kZVZhbHVlIHsKICAgICBTb3VyY2VDb2RlVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1
OTBhOWIwMTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2EzYjMzYjEuLmRlMDdmMWM1MWI1NTEyZGNjYWI5
YjAyNDhmM2ZkODFiZjFiNGFiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVy
cm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAg
ICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAg
bWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTMgQEAKICAg
ICBtYWNybyhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1h
Y3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVyYXRvcikgXAorICAgIG1hY3JvKGdl
bmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdl
bmVyYXRvckZyYW1lKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhn
ZW5lcmF0b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggOTBmNjVjMjRkNjMyYjYyMTA4OWRlNWMxYmJkNDk2NGQ0NDk2
NDM5MS4uNDU2ZGI3OTAyMDJkYzM5ZmQxN2ZlYzMxZTNjYTQwNDE5Y2NlOGRiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5n
U2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJl
dHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY0NCw2ICs2NDUsMzgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCit7CisgICAgLy8gT25seSBzYXZlcyB2YXJpYWJs
ZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIHx0aGlzfCwgfHNjb3BlfCByZWdpc3RlcnMgYXJl
IGluY2x1ZGVkIGluIHRoZW0uCisgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRl
ZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1
ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KKyAgICBCRUdJ
TigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVy
YXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUpOworICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4odmFsdWUpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogT25j
ZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5l
cmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25z
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTQ1CisgICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAg
ZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQp
OworICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQorICAgIGludCBsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnNhdmUo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVD
YWxsZWVSZWdpc3RlcnNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3Ig
PSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJz
SW5kZXggPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVy
c0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyMjYxODVjNGM3ZWE3
Y2M2ZmM3ZjNjYzRmMWYzN2U2MGViNzJmMTdhLi5mMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhl
ZTg4ZjU3ZGY3MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2
ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGE2MzJjNDhlMDMwYjQxYjMzYjMzZGJh
MTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0MmJjMTJlZTAyMTgzNGE4MmY4MWYwZmM5NzliY2Rh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBA
IC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
ICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwog
fQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
Y2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1v
ZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKCFt
b2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMw
M2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQyMDYwMDY3MjI5YWE0MGFiNDdlOWI0MDUyOTYyMWZl
ODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlu
a2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwg
a2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApAQCAt
NTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBt
X3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAK
LSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICBB
U1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0
Li44OGEyNGFkNmNhYjJkNjIwNTIxMDRmMDEzMDJlZGUwMjJhNDRkNmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xh
c3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5l
cmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAg
ICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdl
bmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhl
Y3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsg
fQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0
QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3Qg
cGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFy
YW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0MmZhNWZlMjYzMDRl
ODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5iMGFiNmJmYzA5Mjk4NzAwOGMyNTVkN2RiNWVhMTRi
OTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
KQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmll
ciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNv
dXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwg
c291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlzR2VuZXJhdG9yKTsKIH0KIAogSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
CiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGlu
ZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVM
aW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkg
ZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5Lgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAu
CiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBw
cm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwg
IigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAi
LCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtc
blxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFt
ID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtc
biIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAg
ICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVyYXRvcikgPyAi
KiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVu
Y3Rpb24gIik7CisgICAgICAgIGlmIChpc0dlbmVyYXRvcikKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2LDkgKzEyOCw5
IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygK
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRvcikKIHsKLSAgICByZXR1cm4gY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5v
bnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgK
aW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4uMjc5NGNkMjBi
NzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJmZDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYsMTIgKzU2LDEy
IEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9
OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGJvb2wg
aXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgYm9vbCBpc0dlbmVyYXRvciA9
IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcm
LCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSk7
CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJp
ZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVlYzY0N2Q0NmY4YTJlN2ZjZmI4ZDNmMjFkN2FkM2Ey
ODg3YTg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9Owor
CitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVSZWdpc3RlcnMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMobnVtYmVyT2ZDYWxsZWVS
ZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIHJlZ2lz
dGVyQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9
CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVy
cyhudW1iZXJPZlJlZ2lzdGVycykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVy
T2ZSZWdpc3RlcnMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKQoreworICAgIC8vIE9u
bHkgc2F2ZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3Ig
aXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisg
ICAgQVNTRVJUKGxpdmVDYWxsZWVSZWdpc3RlcnMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxs
ZWVSZWdpc3RlcnMpOworICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0o
c2l6ZV90IGluZGV4KSB7CisgICAgICAgIEpTVmFsdWUgcmF3VmFsdWUgPSBleGVjLT51bmNoZWNr
ZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpOworICAgICAgICAv
LyBTaW5jZSBDIHN0YWNrIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVycG9zZSwgYW4gaW5jb3JyZWN0
IHZhbHVlIGZvciBhIGpzIHZhbHVlIG1heSBleGlzdAorICAgICAgICAvLyBpbiBhIG5vbi1pbml0
aWFsaXplZCAoYnV0IGFsbG9jYXRlZCkgSlMgcmVnaXN0ZXIuCisgICAgICAgIC8vCisgICAgICAg
IC8vIEZvciBleGFtcGxlLAorICAgICAgICAvLworICAgICAgICAvLyAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlZ2lzdGVyQSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAvLyAgICAgLi4uCisg
ICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlLCByZWdpc3RlckEgaXMgYWxs
b2NhdGVkLiBCdXQgaXRzIGNvbnRlbnQgbWF5IG5vdCBiZSBjb3JyZWN0IGpzIHZhbHVlLgorICAg
ICAgICAvLyBBcyBhIHJlc3VsdCwgSlNDZWxsIHBvaW50aW5nIHRvIHRoZSBpbmNvcnJlY3QgbWVt
b3J5IHJlZ2lvbiBtYXkgZXhpc3QuCisgICAgICAgIC8vIFBlcmZvcm1pbmcgYSB3cml0ZSBiYXJy
aWVyICgmIFNsb3RWaXNpdG9yJ3MgbWFya2luZykgb24gdGhlc2UgaW5jb3JyZWN0IGNlbGxzIGNh
dXNlcyBpbnZhbGlkIGRlcmVmZXJlbmNlcy4KKyAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1
YXRpb24sIHdlIHRlc3QgYSBnaXZlbiBjZWxsIGxpa2UgcG9pbnRlciBpcyB0cnVseSBjZWxsLgor
ICAgICAgICBpZiAocmF3VmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+
dm0oKS5oZWFwLmlzTGl2ZUNlbGwocmF3VmFsdWUuYXNDZWxsKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3RlIHRoYXQgaW52YWxpZCBub24tY2Vs
bCB2YWx1ZSBtYXkgYmUgc3RvcmVkLiAoZS5nLiBhIHZhbHVlIHdpdGggYW4gaW52YWxpZCB0YWcg
aW4gMzJiaXQgZW52aXJvbm1lbnQpLgorICAgICAgICAvLyBCdXQgc2luY2UgdGhleSBhcmUgbm90
IHJlY29nbml6ZWQgYXMgYSBjZWxsLCB3cml0ZSBiYXJyaWVycyAvIG1hcmtpbmcgZG8gbm90IGNh
dXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAgcmVnaXN0ZXJBdChpbmRleCkuc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIHJhd1ZhbHVlKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6
cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJl
Z2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8v
IEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVy
cyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNhbGxlZVJlZ2lzdGVycy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gcmVnaXN0ZXJBdChpbmRleCkuZ2V0KCk7CisgICAg
ICAgIHJlZ2lzdGVyQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJh
dG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBh
IGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHRoaXNPYmplY3QtPnJlZ2lzdGVycygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlUmVn
aXN0ZXJzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDdjNmJjNGViOWNmMjYy
Yzc5NWFhNDU4N2M1NTRiMGI5MWExZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDk1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmluZSBHZW5lcmF0
b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZl
Y3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJs
aWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSog
Y3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKworICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIHJlZ2lzdGVycygpCisgICAgeworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRoaXMpICsgb2Zmc2V0T2ZSZWdpc3RlcnMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiYgcmVnaXN0ZXJBdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0
dXJuIHJlZ2lzdGVycygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNl
dE9mUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFt
ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWdpc3RlcihzaXpl
X3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIGlu
ZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyh1bnNpZ25lZCBudW1iZXJPZlJlZ2lz
dGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlJlZ2lzdGVycygpICsgbnVtYmVy
T2ZSZWdpc3RlcnMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICB2b2lkIHJlc3VtZShFeGVj
U3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKTsKKworcHJp
dmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lz
dGVycyk7CisKKyAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsKKworICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTdjZDNlZDAyNWJlYTkyN2Y2MDUzNmEzOTliZWRjODM3MTJhMzk2OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIK
KworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAv
LyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1
ZSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdM
aXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5j
dGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitDYWxsVHlwZSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29u
c3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMz
YjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQ
b3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4ZjJl
MzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07
CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0
OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4o
dm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIz
OTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisj
aW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0
b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5l
cmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5
cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
Z2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24g
MQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyov
CisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8
IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQor
Citib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4o
ZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUq
PihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAor
I2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBH
ZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0u
aGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAg
fQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJp
dmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5l
cmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclRoaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclRoaXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWE2ZTA5NWMzMmFhZGM1NDQ2YTM1NWQ4MTc1YTk1OWRk
NDg0Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yVGhpcy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBHZW5lcmF0b3JUaGlzX2gKKyNkZWZpbmUgR2VuZXJhdG9yVGhpc19oCisKK25hbWVzcGFj
ZSBKU0MgeworCisvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1mdW5jdGlvbmFsbG9jYXRlCisvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY29uc3RydWN0LWFy
Z3VtZW50c2xpc3QtbmV3dGFyZ2V0CisvLyBXaGVuIHRoZSBmdW5jdGlvbiBpcyBhIEdlbmVyYXRv
ckZ1bmN0aW9uLCBpdHMgW1tDb25zdHJ1Y3RvcktpbmRdXSBpcyBhbHdheXMgImRlcml2ZWQiLgor
Ly8gVGhpcyBtZWFucyB0aGF0IE9yZGluYXJ5Q2FsbEJpbmRUaGlzIGluIHNlY3Rpb24gOS4yLjIg
aXMgbmV2ZXIgZXhlY3V0ZWQgZm9yIEdlbmVyYXRvckZ1bmN0aW9uLgorLy8gU28sIHdoZW4gd2Ug
ZXhlY3V0ZSB0aGUgZm9sbG93aW5nLAorLy8KKy8vICAgICBmdW5jdGlvbiAqZ2VuKCkKKy8vICAg
ICB7CisvLyAgICAgICAgeWllbGQgdGhpcworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAg
ICAgICBsZXQgZyA9IGdlbigpOworLy8gICAgICAgICAvLyB8dGhpc3wgc2hvdWxkIGJlIGdsb2Jh
bC4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAg
ICAgIGxldCBnID0gbmV3IGdlbigpOworLy8gICAgICAgICAvLyB8dGhpc3wgaW4gZ2VuIHNob3Vs
ZCBiZSBURFogKGFuZCBpdCB3b24ndCBiZSBmaWxsZWQpLgorLy8gICAgICAgICBnLm5leHQoKTsK
Ky8vICAgICB9CisvLworLy8gVGhlIGZvbGxvd2luZyBmbGFnIG1hbmFnZXMgdGhpcyBzdGF0ZS4g
V2hlbiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBjYWxsZWQgYXMgYSBjb25zdHJ1Y3RvciwgaXQgcmV0
dXJuZXMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlvbiBoYXMgR2VuZXJhdG9yVGhpczo6RW1wdHkg
ZmxhZy4KKy8vIEluIHRoaXMgY2FzZSwgd2hlbiBhY2Nlc3NpbmcgfHRoaXN8LCBhIFREWiByZWZl
cmVuY2UgZXJyb3Igb2NjdXJzLgorZW51bSBjbGFzcyBHZW5lcmF0b3JUaGlzIDogdW5zaWduZWQg
eworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5lcmF0
b3JUaGlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
aW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1
Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAg
ICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAg
aWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBw
cm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJl
Y3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERp
cmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRl
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Y2JjZTAyZDY2MjkwNWUwZWNiNzhhNzZmY2M4NWEy
ZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9w
ZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVy
YXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVu
Y3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9y
RnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JG
dW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUo
dm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIp
OworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlv
biogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3Bl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYwODc4MTRhMzY0
MzIwNDg1MmMxYTAzNjJlOGVkNWRhNWZiZWYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisj
ZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dl
bmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRp
dmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBm
cmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7CisgICAgICAgIENvbXBs
ZXRlZCwKKyAgICAgICAgRXhlY3V0aW5nLAorICAgICAgICBJbml0aWFsCisgICAgfTsKKworICAg
IGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3Jt
YWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9
IDIKKyAgICB9OworCisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
c3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90
IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBh
Y2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRv
ckZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhK
U0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNzFlNGVhMDZlMzg2NTVhYzVhNzBiYWFkYWY3
NDAyYTc3YmMwZjU5Li43NjIyYmI5MmExOTE1MTFkODMwNGVhMGIxZDAwYjM4OTg3ZWJjODczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC01MCw2ICs1MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcy
LDYgKzc1LDcgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJW
TVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIK
QEAgLTM4NCw2ICszODgsNyBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aAogICAgIAogICAgIEZP
Ul9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9S
X0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JQ
cm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1Jf
REVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTEgQEAgbV8gIyMgbG93ZXJO
YW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmMKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0
dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhF
cnJvciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUs
IG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIp
KSk7CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZl
RXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisg
ICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7Cisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNv
bnN0cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC04MTgs
NiArODI4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9l
cnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0
b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9n
ZW5lcmF0b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg1MCw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3
ODE4OTNiODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtNjMsNiArNjMsOCBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uQ29k
ZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNs
YXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxB
cnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhw
UHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQ
cm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdy
aXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYg
KzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVn
RXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3Rv
dHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0
cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUw
Niw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3
NWQ1YzhkMjhhNTBkOTdhMWUwYjc3YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVl
N2RkZmMwNmM1NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxl
UHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRl
OTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJG
VExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
R0NBY3Rpdml0eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0
ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVE
YXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgq
dGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgq
dGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4
OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1Mjdh
MWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQs
NiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBn
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25T
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGUwYmMzZDUxZmI2YzdhOGYw
ODliYTRkODdkNGU2NGM2YTk3MGJlNTAuLjExYTRiZjQ2NGU2NGM3ZmYwN2NlZmU0NzIxNDk2OTRj
MzJkMjhiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFt
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcxOSw3ICs3
MTksNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90
eXBlX2NoYWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0
aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGlj
X21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5j
ZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTcyNyw3ICs3MjcsNyBAQAogLSBwYXRoOiBl
czYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJh
eS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19t
ZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNt
ZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5m
cm9tX21hcF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NTMsNyArNzUz
LDcgQEAKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9p
bnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNt
ZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2Vz
X29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NjMsNyArNzYzLDcgQEAKIC0gcGF0aDogZXM2
L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVy
aWNfaXRlcmFibGVzLmpzCkBAIC04MDMsNTUgKzgwMyw1NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rp
b25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuY29uc3RydWN0
b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5l
cmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUl
LnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rpb25hbGl0eS5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Nh
bnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2Vu
ZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNz
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVy
YXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRpbmcuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRf
Z2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3N0cmluZy1rZXllZF9zaG9y
dGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FycmF5cy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3MuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2Zf
aXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19pc19hX3J1bnRpbWVfZXJyb3IuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01hcF9p
dGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBf
TWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIC0gcGF0aDogZXM2
L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5jdGlv
bl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9v
cGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5f
b3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJpY19p
dGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVy
aWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2NmYWUxYTViNWE2NmMxM2JkMjNlOGNhZTUy
N2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEs
MjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9
IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykg
eworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0
aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgr
KzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsg
dmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3Jl
dHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9
OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rp
b24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpz
CmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUy
ZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9p
dGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBA
CitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlz
OworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21l
dGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicg
fHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2
YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVl
OiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4n
OiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3Zh
ciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7
IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0
KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwppbmRleCA2ZjY4MmY1YTE2
Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlh
Yzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRl
ZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFi
bGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0
eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0
dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5n
dGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJv
dyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5
bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBp
dGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9ICcnOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90
aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4x
ZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpA
QCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3Zh
ciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIs
IG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wg
IT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9Cith
cnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07Cisg
IH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sn
dGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9y
XSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQor
CiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJv
bS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2JjZDlhN2UxODgz
NzA3MGNhZWU4ZGY4YmNiMTY5Yjc1NTU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlv
bi5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRC
ZUFycmF5KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZShhY3R1YWwubGVuZ3RoLCBl
eHBlY3RlZC5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGFjdHVhbFtpXSwg
ZXhwZWN0ZWRbaV0pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHByaW50KEpT
T04uc3RyaW5naWZ5KGFjdHVhbCkpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworCitmdW5jdGlvbiAqZ2VuKGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVy
biB0ZXN0OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0g
Zy5uZXh0KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZh
ciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0
aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQor
ICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
NDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
IH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3Qi
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9
IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAy
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVu
Y3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAg
ICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOwor
ICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBi
ID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQg
YzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEs
IDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
Y2xhc3MtbWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5
bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBj
YXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJv
cikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3Jp
cHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJv
ciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30K
KwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJh
dG9yIG5hbWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2Eg
eworICAgICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwor
dGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgc3RhdGljICpvaygpCisgICAgeworICAg
ICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxZjVhNTRhMmRjNDEyNzA3OWMzMWNmZDMxZjliMzFjZjUwYWQ2ZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jbGFzcy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKK2NsYXNzIEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAg
ICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOwor
ICAgIH0KKworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRo
aXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7
CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
ZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93
KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCkn
KWApOworfQorCit7CisgICAgbGV0IGcgPSBBLnN0YXRpY0dlbigpOworICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25l
LCB0cnVlKTsKK30KK3sKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0g
bmV3IEEuc3RhdGljR2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEg
Y29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBBLnN0YXRpY0dlbigpJylgKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwt
dGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2
YWwtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWJkNzhkZjc2YTBjYjc1OGI4MWVlYWIyYzI1NWI5ZGFk
MWI0NDc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAqZ2VuKCkgeworICAgIHlpZWxkIGV2YWwo
InRoaXMiKTsKK30KKwordmFyIGcgPSBuZXcgZ2VuKCk7CitzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgZy5uZXh0KCkudmFsdWU7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5p
bml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQiB7IH0KKworKGZ1bmN0aW9uKCkgewor
ICAgIGV2YWwoJ3RoaXMnKTsKKyAgICBldmFsKCd0aGlzJyk7Cit9KCkpOworCitjbGFzcyBBIGV4
dGVuZHMgQiB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWwo
J3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgQSgpOwor
fSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUu
YCk7CisKK2NsYXNzIEMgeworICAgICpnZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgeWllbGQg
ZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IG5ldyBjLmdlbmVyYXRvcigpOworICAgIGcubmV4dCgp
OworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBjLmdlbmVyYXRvcigpJylgKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgbGV0IGcgPSBjLmdlbmVyYXRvcigpOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCBjKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI2OTZhZTVmZDE5ZjlkOGM4YjA4ZGU2YjBlZDZhNWJhZTc1YWZkZGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
dmFyIGdsb2JhbCA9IChuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0
eXBlb2YgZ2xvYmFsLkdlbmVyYXRvckZ1bmN0aW9uLCAndW5kZWZpbmVkJyk7Cit2YXIgZ2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IChmdW5jdGlvbiAqKCkgeyB9KS5jb25zdHJ1Y3RvcjsK
K3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuX19wcm90b19fLCBGdW5jdGlv
bik7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24t
bmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42Zjc3MzZjNDIzNGUxODc5MTBiOGNhNjM1M2NiZjQ1YjBkNjAw
NmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
dmFyIG9rID0gZnVuY3Rpb24gKmdlbmVyYXRvcigpCit7CisgICAgeWllbGQgZ2VuZXJhdG9yOwor
fTsKKwordmFyIGcgPSBvaygpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVy
bi1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk2
YTIxN2Y3MmM4N2MwODk4ZTU5MDlhYmFmMzg1YmYyMDg5OTM1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9y
ZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkK
K3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQorewor
ICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitnLnJldHVybigiSGVsbG8i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MGFmNmUwNzg5ZGMxOGJiYWQzYTBhZmJiZjVhZDlhODVl
YzEzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aGlzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24g
PSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmco
ZXJyb3IpfWApOworfQorCisKK3ZhciBnbG9iYWwgPSBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlz
JykoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB5
aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGdsb2JhbCk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAg
ICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nl
c3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQg
dGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOwor
ICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICAidXNl
IHN0cmljdCI7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBs
ZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVk
KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAg
IH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0g
Z2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0
aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUt
Zmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDZjYjRmOTdlZTEwYzM4NTA2ZTE4ZWFjMGQ5YTNl
NDE4NzllZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCArMSwy
MCBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigiTkci
KTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwordmFy
IGcgPSBnZW4oKTsKK3ZhciBlcnJvciA9IG5ldyBFcnJvcigiT0siKTsKK3ZhciB0aHJvd24gPSBu
dWxsOwordHJ5IHsKKyAgICBnLnRocm93KGVycm9yKTsKK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJv
d24gPSBlOworfQoraWYgKHRocm93biAhPT0gZXJyb3IpCisgICAgdW5yZWFjaGFibGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdp
dGgtbmV3LXRhcmdldC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDNiMmRmOTlhODQ4MGNiMzVh
N2RkNmIzNGU2NjI1MzZlYWI4ZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCkBAIC0wLDAg
KzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB5aWVsZCBuZXcudGFy
Z2V0OworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVm
aW5lZCk7CisKK3ZhciBnMiA9IG5ldyBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1
bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1M2M3OTE3MzhlY2Y4
YjlkMzQ5ODM1ZWE4M2JmOGQ2Yzg5NzdiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKQEAgLTAsMCAr
MSw4MiBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAg
dmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkg
eworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93
biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmlu
ZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
ZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyJyk7Cisg
ICAgfQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4gdGVzdCgpLCBgU3ludGF4RXJyb3I6IHN1cGVy
IGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0
MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAg
KmdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzdXBlci5nZW4oKScpOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgYS5nZW4oKS5uZXh0KCk7CisgICAgfSwgYFN5bnRheEVycm9yOiBzdXBlciBp
cyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpn
ZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRCZShhLmdlbigpLm5leHQoKS52YWx1
ZSwgNDIpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAg
Z2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgeWllbGQg
c3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlw
ZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEu
Z2VuKCknKWApOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5ZjE4OGJjYzJmNWI1
ZWNjMzUzMDUxNGMyMGVkNTY2ODhhNmEyOThjLi45OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBj
Y2NlNGU0YjE1NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0xODEsNyArMTgxLDcgQEAg
Y2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBuID0gYXJyYXlMZW5ndGgoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkgewpAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIEZh
c3RCaXRWZWN0b3IgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IDQyMTk0MWYzYTQ0YWM2ZGM1
ZDliNjdmZDJjZGQ4NmYxMjAxM2M2NDguLmY0NmUxMTk3M2U1MjRjYTQyODU2YjBkNzY4Mzc5ZTFh
OWY0NTkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysr
IGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtMzY0LDcgKzM2NCw3IEBAIHRo
ZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYKQotI2RlZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMAorI2RlZmluZSBF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2
X01PRFVMRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4
ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsK
IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2
X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4u
MThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5B
QkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9F
UzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VO
RVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpp
bmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUy
YTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcs
NyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0g
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0g
OworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxF
X0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IDlj
ZDg0NjVjMDljOWYxNzg2MDRjOWFiMjkyNWE3MGFiNDdjNjNlM2MuLjAyY2M3OThiMjBiZDZlNDYy
NjNiZTM5ZDkwMWE4ZmU5NGNiOWVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0zNCw3ICsz
NCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04gUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgUFVCTElDIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMg
T04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgUFVCTElDIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9F
UzZfR0VORVJBVE9SUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRVM2X01PRFVMRVMgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVNIFBVQkxJ
QyBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9T
b3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZDk2MjI0ZDQxNzFiZGJhNzE3
MGM0NWQzZGQ3MjE3NTQ3NzEyZjUwZC4uMDBlZGJjMDEzYmZmNjZmN2EwM2ZkZDI5YjYzMWY0NjI1
MGJlMjQzNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNyArNzcsNyBAQCBt
YWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgIlN1cHBvcnQgRU1FIHYyIiBQUklWQVRFIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYICJUb2dn
bGUgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYICJUb2dnbGUgRVM2IGNs
YXNzIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9S
UyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9NT0RVTEVTICJUb2dnbGUgRVM2IG1vZHVsZXMgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWCAiVG9nZ2xlIEVTNiB0ZW1wbGF0ZSBsaXRlcmFsIHN5bnRh
eCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9G
SUxURVJTX0xFVkVMXzIgIlRvZ2dsZSBGaWx0ZXJzIE1vZHVsZSBMZXZlbCAyIiBQUklWQVRFIE9G
RikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
NWZiNDFjNWIzMjgwMzk5YTM2ZjQ3YTZiMjg1YmU5NTY4ZWIyYzAwLi4zNmJjYjFjMGQwYmQyZmJh
NWNhNTJhNmQ5MTk1ZDRkODEwOTIxZmNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50
IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhp
cyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxNS0xMS0yMiAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggTWluaUJyb3dzZXIg
aG93IHRvIGVuYWJsZSB0aGUgbW9jayBjb250ZW50IGZpbHRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNkZWI1MjVjZjk0YjVhOGUxMjFiYTI0ZTM3OWQyMzNk
NjkxYzZiODkuLjQ2MjE4ODE1YjE1M2M1MzI5OWJjMjcxZDliNzdmNzQ4YWQzMDcwNWYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTE4NSw3ICsxODUsNyBAQCBC
RUdJTgogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCIsIGRlZmF1bHQg
PT4gMSwgdmFsdWUgPT4gXCRjbGFzc1N5bnRheCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlbmVy
YXRvcnMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIsCi0gICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCRnZW5lcmF0b3JzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVS
QVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKIAog
ICAgIHsgb3B0aW9uID0+ICJtb2R1bGVzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X01PRFVMRVMiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkbW9kdWxlc1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCA3OWE2YmNmNjc1NGUwZjE1MTNlZDY4ZTE0YThiMDkwMTgyMjQ0OGFh
Li4wZDdkZTRlYjA4YzlmMGUzNDk1MTNjOTFlMDY2YzZjZGQ1YmUxYjc5IDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjIgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1w
bGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFi
bGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxNS0xMS0yMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBORVRXT1JL
X1BST0NFU1MgY29tcGlsZSBmbGFnCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRleCAwYzhhZjJhYmIxMTI0OGViYTFm
YTA4M2I5MzIyOTdjMjdjNDI4MGI1Li5hNjIzMzdiNzNmZDZjODk3NzJjNmNmYTAxNjY4ZjgyMWEz
MzBlOGExIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHM6CisgICAgICAgICog
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wczoKKwogMjAxNS0xMS0w
NSAgTmlrb3MgQW5kcm9uaWtvcyAgPG5pa29zLmFuZHJvbmlrb3Mtd2Via2l0QGNpc3JhLmNhbm9u
LmNvbS5hdT4KIAogICAgICAgICBBZGQgcnVudGltZSBhbmQgY29tcGlsZSB0aW1lIGZsYWdzIGZv
ciBlbmFibGluZyBXZWIgQW5pbWF0aW9ucyBBUEkgYW5kIG1vZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzIGIvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCmluZGV4
IDBkNzRhOGY3ZWU1MjFlMDRmOWZlYmU0ZGZhNzkyOWQ3ZTMzY2NkY2YuLmIwN2RjNTBhYmUyNWUw
YjcwZmNhNWMzMDVkMTY2YmY1ZTcwYTg4ZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJp
ZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKQEAgLTMyLDcgKzMyLDcg
QEAKICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RP
TTRfRVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPkVO
QUJMRV9FTkNSWVBURURfTUVESUFfVjI8L0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+Ci0gICAg
PEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5B
QkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9F
UzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZU1RFTSAvPgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMg
Yi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5w
cm9wcwppbmRleCA5MWVlODBmZGY0YWYxNThlYzVlZTQ4M2QwNjk2YzcxY2U0ODY0MTJkLi5mNWIw
OGZmODEwZjdlNjFiN2NlYzZhYzVlYTY5YTFhOTgzNTM4MGE4IDEwMDY0NAotLS0gYS9XZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcworKysg
Yi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5w
cm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgog
ICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NP
TlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIgLz4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTIC8+CisgICAg
PEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVSQVRPUlM8L0VOQUJMRV9FUzZf
R0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAgPEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8RU5BQkxFX0ZJTEVf
U1lTVEVNIC8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266076</attachid>
            <date>2015-11-22 21:47:03 -0800</date>
            <delta_ts>2015-11-22 22:15:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123144647.patch</filename>
            <type>text/plain</type>
            <size>296967</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi5iNjZiNTNkYzlhNWE5NmVl
YmQwOGNlMTg1MGQ3MTViZDRhYmIyMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDM1IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAg
ICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5n
IGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZl
L3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jpbmcg
aW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0g
dG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50
cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2Vz
IGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBm
b2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JTdGF0
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxldGVkOgorICAgICAgICAgICAgICAgICAg
ICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAg
ICAgICAgICAgIGNhc2UgRXhlY3V0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgLi4uOworCisgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICAgICAgb3Bf
c2F2ZShZaWVsZF8wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8wOgorICAgICAgICAgICAgICAgICAgICAgICAg
b3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3Vt
ZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
b3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8xOgorICAgICAgICAgICAgICAgICAgICAg
ICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJl
c3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1
cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIC4u
LiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxp
dmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBh
bmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3Rl
cnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZp
bGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0
ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQg
aW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5
LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdl
IGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJz
IHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VT
Y3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAg
ICAocmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2
YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNl
Rm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZ
aWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZlQ2Vs
bCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwpOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZh
bCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5j
RXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2UpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2Qp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Np
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNj
b3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29sbGVj
dEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VN
b2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpp
c1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtl
eTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNo
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcGFy
c2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
WWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6Cisg
ICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6
OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hl
Lmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6
Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0
eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6
CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpT
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRh
eCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1l
L0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZWdpc3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9m
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdp
c3RlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVy
YXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246
OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjph
bGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
ICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0
KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToK
KyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAg
KGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAg
IChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9i
amVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1m
dW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVu
dHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVk
LgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAg
ICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Eu
cHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVz
dFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFz
cy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3Rv
dHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4
dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
Qik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6CisgICAg
ICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hh
YmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10
aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVk
LgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNhdGNo
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6Cisg
ICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToKKwog
PT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5NGMw
NmY0ZmFiMDlmZjAzYTY0MTc4MGUzZjI2YWMzYWQ4ZC4uMTdiN2UxNTdmMGM2YzY5YzdjNDg2NWFh
MDA3NjczMjJhZDY3MWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6
Zm9yRWFjaFNldEJpdCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUt
MTEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEFTU0VSVElPTiBGQUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2Vi
Q29yZTo6b3BlblRlbXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1ZjFhMjNlMjI4ZTdkZGMw
YzhiZDBiZTAxZjUwNjcwMGQ3NmM5YzEuLjI3OWJlN2JiYmFhNjAxN2EyNjZlYjVlODY1NmZiODNj
MmM2Njc2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEt
MjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBG
b250IHNlbGVjdGlvbiBzaG91bGQgbm90IGNvbnN1bHQgZm9udC12YXJpYW50IHByb3BlcnR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggM2I5OWY0ODgxOTFjYTIzMDYxZWQyMGQ3OGU4NzEzMzFkNDUxZTQ2
MC4uMDYxZWMwYTAwZGY1N2NiNWUxMzQ4MzFjZTk0NjU5OTZkNzY1Yzk2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSArMSwxMCBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUg
U3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxv
Zy0yMDE1LTExLTIxID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2U2Mzc4ODcyNjI4NGMwYmEzZjE1YzhhM2I1
OWNjMWY3YjE2MGQzYy4uZThhOWJlYzI3YjY4N2M4M2I4YWM1MzcyMDQ1N2JhZTk0MTMyYzZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9C
YXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVy
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0yMiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gQWRkIG1pc3NpbmcgaW5zcGVjdG9yIGZpbGUgdG8gR1RLKyBjb21waWxhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggM2I3Yjc2YmYzYTQ0NGM5
MjFiZTk3M2M1NzZjMTlmNjkyZThkMjMyZC4uMmYzNzQyMzAwOTdiNTA4MjU4M2Y4NDQyN2I5MjU3
OTM3ZDMwOTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Njcmlw
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VTY3JpcHQoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gISFK
U0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCAKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvcik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDMwZmZlMzBjOTIyZThkZjQw
NzcxOWQzNjQ3NWI2YjYxMWU4Mjk2Li5kNzA3ZTMzYmQzMWExMDAzYzc1MWM3ZDg4YjBlNzAwNDFl
Y2NkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjMsNiArNTYz
LDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0Z1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKKyAgICBydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRp
bWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAog
ICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAK
QEAgLTYwMiw2ICs2MDYsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29y
ZC5jcHAKICAgICBydW50aW1lL0pTRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTczNyw2ICs3NDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
T0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3Bw
CisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTEx
OTUsNiArMTIwMSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMK
KyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5q
cwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1
NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3
N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcs
NyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0g
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0g
OworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxF
X0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDJmNjVkYjU1YTFlZWQzNjQ5Y2ZlMzNkNzhiOTI2YzYyNTEz
YTlmNjguLmZkZTU3ZTkzOGRiZDRmYTJkYmU1YzE0ZDdiYzhmYmUxMTUxNzAxY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04NCw2ICs4NCw3IEBAIEph
dmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9HZW5lcmF0b3IuUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9HbG9iYWxPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEy
MCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIERhdGVQcm90b3R5cGUubHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwK
KyAgICBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCAzZTdmOTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFj
MDQzLi4xODkxMTk0NzkxZmIyZDA3NWRiYWY3YjE1ODdmZmM4M2U2M2JjNzNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJh
cmVEYXRhLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJh
dG9yRnJhbWUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5
NSw2ICs3OTksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFW
aWV3UHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNEYXRlTWF0aC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
RnVuY3Rpb24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dl
bmVyYXRvckZ1bmN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNHbG9iYWxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0
NSw2ICs5NTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXERhdGVDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBl
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNv
dXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpA
QCAtMTYwMSw2ICsxNjA4LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90
eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRo
aXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3Vt
ZW50cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmljT2Zmc2V0LmgiIC8+CkBAIC0xNjYwLDYgKzE2NzIsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGE2ZDNmZjAwZTI1MDNh
Y2JjMzY3OTBhMzZlNmVlNDM3YTkzNGJmYTguLjI3Y2MzNmRiYjE0OTA1NDhkMjg4NTFkMzAzYTk5
Nzc2OWRhMDJjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTY2Niw2ICs2NjYsMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEdlbmVyYXRvckZyYW1lLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc0Nyw2ICs3NTksOSBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2MTIsNiArMjYyNyw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2Vy
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
YXJzZXJcU291cmNlQ29kZUtleS5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
UHJvdmlkZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpAQCAtMjgxMyw2ICsyODMxLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnJhbWUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JQcm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJh
dG9yVGhpcy5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXRQdXRJbmZvLmgiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yOTE4
LDYgKzI5NTEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0
aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24u
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMyODIsNiAr
MzMxOCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiPgorICAgICAgPEZp
bHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24u
aCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDc0OTE2Y2NjYzI2ZWQzZDg2
NGRiZDUwZjBkOTE2MzM5MzBhZTEzLi4yN2RlNDU5NmE0YmJhOTliNGNiNmM2MzUwYjYwZDcyYjJk
N2UyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMyw2ICsxMjAzLDE5
IEBACiAJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY1MUFF
MzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzA5RkI4NkMx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlC
NjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3Vy
Y2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkyMUMwMjRBMjMw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwICovOyB9OworCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTk0MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTUxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTcwQjc5MTk3MUMwMjRBMjkwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTgxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAq
LzsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEEx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFF
MiAvKiBHZW5lcmF0b3JUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlC
MUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJD
NzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlB
MDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBM
TEludEFzc2VtYmx5LmggKi87IH07CkBAIC0xOTYyLDggKzE5NzUsOCBAQAogCQlGRTBENEEwOTFB
QkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0
MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9Owog
CQlGRTEyMjAyNzFCRTdGNThDMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNjFCRTdGNTY0MDAz
OUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi87IH07CiAJCUZFMTIyMDI4MUJFN0Y1OTEwMDM5
RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVy
YXRvci5jcHAgKi87IH07Ci0JCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNB
IC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUZFMTg3QTAxMUJGQkU1
NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11
bEdlbmVyYXRvci5jcHAgKi87IH07CisJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRN
dWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMTg3QTAwMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsK
IAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNB
IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZE
MTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LzsgfTsKQEAgLTMyNjcsNiArMzI4MCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Vu
ZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZW5lcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBC
NzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3IucHJv
dG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJh
dG9yLnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAx
QzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0
b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFC
MkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTA3Nyw2ICs1MTA0LDcgQEAKIAkJCQk5OTZCNzMwODFCRDlG
QTJDMDAzMzFCODQgLyogRGF0ZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUx
NzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJE
OUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFD
MDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRG
MjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVD
NjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVB
NzEwRDE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzLmggKi8sCkBAIC01MjA1LDYgKzUyMzMsNyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8sCiAJCQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8q
IFNvdXJjZUNvZGUuY3BwICovLAogCQkJCTY1RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3Vy
Y2VDb2RlLmggKi8sCisJCQkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVL
ZXkuaCAqLywKIAkJCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIu
Y3BwICovLAogCQkJCTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5o
ICovLAogCQkJCUU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmNwcCAqLywKQEAgLTUzMzQsNiArNTM2MywxNSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZG
NjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAw
MjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJ
NzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCAqLywKKwkJCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmggKi8sCisJCQkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclRoaXMuaCAqLywKIAkJCQkwRkUwNTAxMTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0Fy
Z3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBGRTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5l
cmljT2Zmc2V0LmggKi8sCkBAIC01NDMzLDYgKzU0NzEsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5
N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFG
RjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAv
KiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAv
KiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgx
RTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJ
CQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02NTQxLDYgKzY1ODEsNyBAQAogCQkJCUE3NUVFOUIw
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYz
MTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAw
MkMzNzMzIC8qIEZ1bmN0aW9uLnByb3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVD
MDAyNDgxRTIgLyogR2VuZXJhdG9yLnByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVE
OUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0LmpzICovLAogCQkJCUUzNUUwMzYxMUI3QUI0ODUw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMz
RjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICov
LApAQCAtNjk1Miw2ICs2OTkzLDcgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyog
REZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAw
NTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkz
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03MDAxLDYgKzcwNDMsNyBAQAogCQkJCTBGNTBBRjNDMTkzRThCMzkw
MDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1Ro
cmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4
Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdE
NTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzIyMSw2ICs3MjY0LDcgQEAK
IAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9y
VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyog
SW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFF
MiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYz
MDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FE
QjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNB
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzI0Nyw2
ICs3MjkxLDcgQEAKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVy
YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyog
SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0
QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlw
dENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
YXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzkwLDYgKzc0MzUsNyBA
QAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRh
YmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3Mzkg
LyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QzFD
MDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRB
cnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQyNiw2ICs3NDcyLDcgQEAKIAkJ
CQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5
MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03NTk4LDYgKzc2NDUsNyBAQAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERF
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0
RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENG
MkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0
ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MzAsNiArNzY3OCw3
IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBT
dHJvbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JUaGlzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRF
MjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJG
NTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJC
Nzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2NDcs
NiArODY5Niw3IEBACiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZG
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEI3OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NjczLDYgKzg3MjMsNyBAQAogCQkJCTBG
NzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1Ykdl
bmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJD
OEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODEwLDYgKzg4
NjEsNyBAQAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5
MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5
RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtODk1Niw2ICs5MDA4LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5
RkYgLyogdWRpczg2X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJF
OTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0
Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
NzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3
RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1
MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTg5NjQsNiArOTAxNyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4
NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2Qzcz
NTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZy
YW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBW
aXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAw
RDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgx
NmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMuLjQ4ZWY3ZmYzYThlYmE2YjQ1
ODk2OTIyYzE3ZDY0YjEwNTE0Yzk5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VP
dmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigp
IDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBw
YXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1
aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZXJyb3IsCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBj
b25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRl
TmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwot
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VP
dmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBt
ZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHks
IGR1bW15VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5j
dGlvbkV4ZWN1dGFibGUtPnNldE5hbWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmlu
ZygpKSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTVlNjljODNmYzBlODViZjQ0MTVhYjE3MTc0ZmVkMTRlNTUxOGVjMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90
eXBlLmpzCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQoc2VudFZhbHVlKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGxldCBzdGF0ZSA9IHRoaXMuQGdlbmVyYXRvclN0YXRlOworICAg
IGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYgKHN0YXRlID09PSAt
MikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmci
KTsKKworICAgIGlmIChzdGF0ZSA9PT0gLTEpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIHZhbHVlID0gdW5kZWZpbmVkOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAgLy8gRXhlY3V0aW5nLgorICAgICAg
ICAgICAgdmFsdWUgPSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRo
aXMsIHRoaXMsIHN0YXRlLCBzZW50VmFsdWUsIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUgKi8gMCk7CisgICAgICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9yU3RhdGUgPT09IC0y
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsKKyAgICAgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICAgICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTE7ICAvLyBDb21wbGV0
ZWQuCisgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4geyBkb25lLCB2YWx1ZSB9OworfQorCitmdW5jdGlvbiByZXR1cm4oc2VudFZhbHVlKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGxldCBzdGF0ZSA9IHRoaXMuQGdlbmVyYXRvclN0YXRl
OworICAgIGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYgKHN0YXRl
ID09PSAtMikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVj
dXRpbmciKTsKKworICAgIGlmIChzdGF0ZSA9PT0gLTEpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIHZhbHVlID0gc2VudFZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAgLy8gRXhlY3V0aW5nLgor
ICAgICAgICAgICAgdmFsdWUgPSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVy
YXRvclRoaXMsIHRoaXMsIHN0YXRlLCBzZW50VmFsdWUsIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6
OlJldHVybk1vZGUgKi8gMSk7CisgICAgICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9yU3RhdGUg
PT09IC0yKSB7CisgICAgICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsKKyAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRj
aCAoZXJyb3IpIHsKKyAgICAgICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTE7ICAvLyBD
b21wbGV0ZWQuCisgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4geyBkb25lLCB2YWx1ZSB9OworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24p
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9y
U3RhdGU7CisgICAgbGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAo
c3RhdGUgPT09IC0yKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlz
IGV4ZWN1dGluZyIpOworCisgICAgaWYgKHN0YXRlID09PSAtMSkKKyAgICAgICAgdGhyb3cgZXhj
ZXB0aW9uOworCisgICAgdHJ5IHsKKyAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMjsg
IC8vIEV4ZWN1dGluZy4KKyAgICAgICAgdmFsdWUgPSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHN0YXRlLCBleGNlcHRpb24sIC8qIEdlbmVyYXRv
clJlc3VtZU1vZGU6OlRocm93TW9kZSAqLyAyKTsKKyAgICAgICAgaWYgKHRoaXMuQGdlbmVyYXRv
clN0YXRlID09PSAtMikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENvbXBsZXRlZC4KKyAg
ICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorICAgIHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
aW5kZXggMjk5MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFjNjJlOC4uNWU2ZDU5ZGYx
MjdkMmJlN2QyZDEzMmNkMzMwZjNhN2I4YmYyN2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIg
OiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3df
ZnVuY19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Nh
bGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2Fs
bCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKLSAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0KKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oCmluZGV4IGE2MTMyYzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4ODZlNWQ2NjY4NDUuLjM3NDM2
YzAxNTY1NDllOWY3YzAxZGM0MWEwMmVlM2RkOGI1YWZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw4ICs3MCw5IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxsOgog
ICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfaW5j
OiAKLSAgICBjYXNlIG9wX2NvcHlfcmVzdDogeworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ug
b3BfY29weV9yZXN0OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdf
ZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ug
b3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAg
IGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU0LDcgQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lk
OgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAg
ICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9t
X2FyZ3VtZW50czogewpAQCAtMjMzLDYgKzIzNiwxNCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI1
NSw2ICsyNjYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHJvZmls
ZV9kaWRfY2FsbDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGlj
X2Vycm9yOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNl
IG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzE1LDYgKzMyNyw4IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3
X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ug
b3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNh
c2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CkBAIC0zOTAsNyArNDA0LDE1IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1W
YXJzOyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgfSB9CisgICAgfQorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQoaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2Nh
bCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmY2E2MzAxNDkxODI2YmVlMTAwMTI0YzJmNmFlNDJmMThk
ZWY5OWVlLi4zYzEyZGI4YTc2ZTM0OGI5NzRiMDdhNjQyODNiOTIzOWVlZTFkZTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI5NCw2ICsx
Mjk0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3Jf
ZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzE5LDE0IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYl
ZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjAp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2
ICsxNTE1LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtw
b2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJzYXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rl
ck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAg
ICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1l
Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJh
dG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50
IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKQEAgLTE3MjAsNiArMTc1MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhl
cikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVE
YXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1w
VGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3Rl
cnNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhp
cyk7CkBAIC0xODc1LDYgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkpIHsKKyAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuZ3Jvdyhjb3VudCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpXSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBieXRlY29k
ZQpAQCAtMzA0OSw2ICszMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlu
a01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Cisg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlu
a1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBi
ZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2Ug
dGFibGVzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMuLjFhMGI5OGYwY2Ri
MmMxNWQ2MDAyYWZjNDlhNDJhZGJhMDNiZGIwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5o
PgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0
ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBp
bnQgbnVtQ2FsbGVlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVSZWdpc3Rl
cnM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251
bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVy
cygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7
IH0KIApAQCAtNjU0LDYgKzY1NywxMCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4K
KyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3Ig
dmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNh
Y2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC05MDAsNiArOTA3
LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxT
aW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmlu
Z0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxG
YXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOworCiAgICAgICAgIEV2
YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3
ZDRlYWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBm
OGJlZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
Q2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNv
ZGVLZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAK
IAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFs
U291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChi
b29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5n
ZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxl
KGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkg
c291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5
cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVN
YXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmlj
dENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3Vy
Y2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSog
c2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJU
RFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxl
KiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJj
ZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1Vu
ZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0
aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4
ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRl
eHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50
cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwoKSwg
V3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1
dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2
YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykg
eworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAg
ICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNv
dXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAg
ICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0
YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAg
ICAgfQpAQCAtODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2NvcGUtPmlzR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmpl
Y3QoKSB8fCBzY29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJp
bmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2
YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJZiBl
dmFsKCkgaXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwgd2Ug
Y2FuJ3Qgc291bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElmIHRoZSBldmFsKCkgb25s
eSBoYXMgYWNjZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQuCiAg
ICAgICAgICAgICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAgICAgICAgICAgICAmJiBl
dmFsU291cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VM
ZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxTb3Vy
Y2UubGVuZ3RoKCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgo
KQogICAgICAgICAgICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUoc2NvcGUpOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgV3JpdGVCYXJyaWVyPEV2YWxF
eGVjdXRhYmxlPj4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNl
Q29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291cmNlQ29kZUtleUhhc2gs
IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CiAgICAgICAgIEV2YWxDYWNo
ZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMyYTA5
NjliNTBiMTAyYTE1ZC4uMzViZjdkZmI1OWFhNmY5ODlhOTM0NTY5MGM2OThjNmNjNmQ4MjIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgK
QEAgLTI2LDIxICsyNiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxlSW5mb19oCiAjZGVmaW5lIEV4
ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJQ
YXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZsYWdz
LCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUg
cmVvcmdhbml6ZWQuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wg
bmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICA6IG1f
bmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVz
ZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAg
LCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpcykpCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rv
cktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwg
bV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fc3VwZXJCaW5k
aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQorICAgICAgICAsIG1fcGFy
c2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CisgICAgICAgIEFT
U0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5n
KSk7CisgICAgICAgIEFTU0VSVChtX2dlbmVyYXRvclRoaXMgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGdlbmVyYXRvclRoaXMpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC00OCw4ICs1NSwxMCBAQCBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIEdlbmVyYXRvclRoaXMg
Z2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+
KG1fZ2VuZXJhdG9yVGhpcyk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVj
dG9yS2luZCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9Cisg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
OyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAt
NTcsOCArNjYsMTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lz
U3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1
bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRv
clRoaXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcg
OiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4
YjU3Ni4uM2MzMTlkMDZlMzk5N2VkZWYzZDMyNzg3YjliOTM3MmZmZTI3MWE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CkBAIC02NSwxMCArNjUsMTIgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2Up
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVj
dG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9u
KCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2Vu
ZXJhdG9yVGhpcygpKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpbmZvLnN1cGVyQmluZGluZygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xp
bmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9k
ZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlw
ZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRj
MTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uZTFiMDk1YjZhZDY1MmUwMDg3ZDlh
NTMyNzE3NTgxODBjZjY3NjhlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1
YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2
LDcgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsg
fQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNl
TW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDQsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
c3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdl
bmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPiht
X2dlbmVyYXRvclRoaXMpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAK
ICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMjMsNiArMjI3LDcgQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5z
aHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ0LDYgKzI0OSwxMSBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsg
cmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsg
fQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBz
aXplX3QgbnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNp
emUoKSA6IDA7IH0KKyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZh
c3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJu
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQor
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBp
bmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVSZWdpc3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgdW5zaWduZWQgYWRkRnVuY3Rpb25E
ZWNsKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuKQogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgc2l6ZSA9IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7CkBAIC0zODcsMTIgKzM5NywxNCBAQCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25l
ZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDog
MTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2Zp
cnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVy
ZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCkBAIC00MzYsNiArNDQ4
LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
VmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAg
ICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVSZWdpc3Rl
cnNBdFlpZWxkOworCiAgICAgICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3Np
dGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1
OWI2Li5kYzZkODY1ZjgyMzU3MTA2ZGVmN2Q0Y2E1NTNiMjlkNzUwN2ZiOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQAogc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBh
cnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rp
b24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDog
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJz
ZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgICZ2bSwg
c291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVj
dXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJyb3IsIG51bGxwdHIpOworICAgICAgICAmdm0sIHNvdXJj
ZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJs
ZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0
cik7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlk
KCkpOwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29y
ZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAg
ICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51
c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxl
LT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFi
bGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCks
IGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5j
dGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVj
dG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzKCksIGV4ZWN1dGFibGUtPnN1cGVy
QmluZGluZygpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdn
ZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVz
KCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3Iu
aXNWYWxpZCgpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywg
VmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNl
KCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2lu
ZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9k
ZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93
RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Z2VuZXJhdG9yVGhpcykpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAg
ICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
OwpAQCAtMTgwLDcgKzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBp
c0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBD
b2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Ci0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VN
b2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5
MjkzZjQxYmE0MmQ5YzFmOC4uOGI4MjcxYTZjM2Y2Y2M1ZDIxOWQ0NjljMTNkZTU2M2YzYjNmMmJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYg
c291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBn
ZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAg
ICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVh
cCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShz
b3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmls
aXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsOCBAQCBjbGFzcyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0
OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0
b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5l
cmF0b3JUaGlzKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAg
dW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0
Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAt
OTUsNyArOTgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2Vy
RXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwog
CiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEyOCw5IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAh
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3Bl
VERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYp
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3Qg
U291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsK
ICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENv
ZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDog
MjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRv
clRoaXMgOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBi
OTM3MGM4ZDI4NGEzODRmMjFlMGU3ODkyNjg1NDVjOTJiMTk4MjNiLi5lZmUzMTdjNDA1NTcwMDll
MjVlYzdlOGFmNWMwM2JkZDUyZDdhMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
QEAgLTIyNyw5ICsyMjgsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRo
ZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1f
c2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wg
bmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3Vt
ZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVy
IGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsK
KworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90
IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9u
IHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1l
bnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0
LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVu
dHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVm
ZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8g
ICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1
bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAg
ICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZl
cmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAg
Li4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAg
ICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwor
ICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1
bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQo
KTsKICAgICAKQEAgLTI1NCwxNCArMjc5LDM0IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBt
X2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBp
bml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGlu
ZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFp
bnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgJm1fcGFyYW1ldGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzKCkgPT0gR2Vu
ZXJhdG9yVGhpczo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhp
c1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBA
Z2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJh
dG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdl
IHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5n
IGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdz
IHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRg
IGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVy
YXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4KKyAgICAg
ICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICB9CisKICAgICBpZiAoZnVuY3Rpb25O
YW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlv
bk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25O
YW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVy
ZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2Fw
dHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAg
ICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2hv
dWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewogICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVu
dFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZh
ciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNz
aW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICszMTYsNiBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxF
bnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgIH0KIAotICAgIC8vIE1h
a2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMs
IGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVy
aW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSAr
IDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJ
bmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAgICAgIGlmIChwYXR0
ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
cmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2Fz
dDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAgIAogICAgIC8vIEZpZ3Vy
ZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJv
b2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAgIGlmIChmdW5jdGlvbk5v
ZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1MDgsMzUgQEAgUGFyc2Vy
RXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1Rh
cmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0TG9hZEFy
cm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAg
ICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAgIC8vIEZJWE1F
OiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisKKyAgICAg
ICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAg
ICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAg
ICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4K
KyAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGlzQ29u
c3RydWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3Rlciwg
Jm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBD
b25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTUyLDggQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0
aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQog
CiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxp
emVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMg
Y2FsbGVkCkBAIC03OTksNiArODU4LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplTmV4dFBhcmFtZXRlcigpCiAgICAgcmV0dXJuICZwYXJhbWV0ZXI7CiB9CiAK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sg
a25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFy
YW1ldGVycworICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgbV9w
YXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBm
b3IgInRoaXMiCisgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJh
bWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0
ZXJzLmF0KGkpLmZpcnN0OworICAgICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVyKCkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOworICAgICAg
ICAgICAgbV9yZXN0UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUqPihw
YXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpOworICAgIH0KK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVZh
ckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwpAQCAtODU1LDYg
KzkzMCwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3VGVtcG9yYXJ5KCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkKK3sKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOwor
ICAgIEZhc3RCaXRWZWN0b3IgdmVjdG9yOworICAgIHZlY3Rvci5yZXNpemUobV9jYWxsZWVSZWdp
c3RlcnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3Rl
cklEJiByZWcgOiBtX2NhbGxlZVJlZ2lzdGVycykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50
KCkpCisgICAgICAgICAgICB2ZWN0b3Iuc2V0KGkpOworICAgICAgICArK2k7CisgICAgfQorICAg
IHJldHVybiB2ZWN0b3I7Cit9CisKKwogTGFiZWxTY29wZVB0ciBCeXRlY29kZUdlbmVyYXRvcjo6
bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUpCiB7CiAgICAgLy8gUmVjbGFpbSBmcmVlIGxhYmVsIHNjb3Blcy4KQEAgLTIzMTIsMTIgKzI0
MDIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0
ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0g
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVh
dGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1NjEsNiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwg
RWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbklu
dGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVu
Y3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVu
Y3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVt
aXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsK
LX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0
ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdl
eHApOwpAQCAtMjQ5MywxMyArMjU2OSwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJl
dHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNv
bW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9w
Y29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAg
ICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25l
d19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0
aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2Nr
LT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJz
ZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjUxMiwxNyArMjYwMCwxOCBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBC
YXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykK
IHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHAp
OworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICBy
ZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fy
cm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUq
IGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0
cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQo
KSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikK
KyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0
b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKICAg
ICAKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfYXJyb3dfZnVu
Y19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsK
ICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNTQwLDYgKzI2MjksMTkgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIGZ1bmN0aW9uKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFk
ZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICBpZiAoZnVuY3Rpb24t
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQor
ICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZQorICAg
ICAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3Rlcigp
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIHJldHVy
biBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRG
dW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3Qs
IGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CkBAIC0zNzY2LDYgKzM4NjgsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBp
dGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5leHQpOwor
ICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOwor
ICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7
CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFs
dWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2Rl
LT5kaXZvdEVuZCgpKTsKKyAgICB9CisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJ
c09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVj
dChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQo
KSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJl
bCgpOwpAQCAtMzg0Miw0ICszOTYyLDIxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7CisgICAgaW50MzJfdCBsaXZlQ2Fs
bGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAg
ICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKKworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7
CisgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKworICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdl
dCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9u
LmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAg
ICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rl
ci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7
CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7Cisg
ICAgfQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOwor
ICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFs
LgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1w
b3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0
cik7CisgICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7
CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgp
LCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4g
bG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUu
Z2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVu
dC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAg
ICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJs
b2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkp
OworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5k
ZXgpOworICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4odmFsdWUuZ2V0KCkpOworCisgICAgICAg
ICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0
T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworCisgICAgICAgICAgICAg
ICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAg
ICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25k
aXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEVx
dWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9k
ZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkp
KSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJv
d0xhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2Vx
dWVuY2UgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuLgorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3Ig
PSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5N
ZXRob2QuZ2V0KCkpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIs
IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0
ZXJhdG9yUmVzdWx0LmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5v
ZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSks
IHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJv
d1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1
cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFy
eSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbWl0
TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1
bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJv
dy4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9k
Tm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3Iu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0
aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJh
dG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0
aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5k
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2Jq
ZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNl
cXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFT
Q0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIp
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdl
dCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJ
TGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRo
b2QuIikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4K
KyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0
KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRo
VmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7
CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0
LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9v
cERvbmUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKwor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJdGVyYXRvclJlc3VsdChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGRvbmUpCit7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGRzdDsKKyAgICBpZiAoIWRzdCB8fCBkc3QgPT0gdmFsdWUp
CisgICAgICAgIHJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXROZXdPYmplY3QocmVz
dWx0LmdldCgpKTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5kb25lLCBlbWl0TG9hZChudWxscHRyLCBqc0Jvb2xlYW4oZG9uZSkpLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChyZXN1bHQuZ2V0KCks
IHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVy
SUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc3RhdGUpKSk7CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIo
KSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0
YXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFi
ZWwoKQoreworICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2Vu
ZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdl
dCgpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0
ZXJJRCogc3RhdGUpCit7CisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRj
aEltbWVkaWF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihM
YWJlbCogZGVmYXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dp
dGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVM
YXN0KCk7CisKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsg
MV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1
Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5i
aW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAzKTsKKworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVC
bG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0g
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBq
dW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVs
cyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3Vs
ZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRv
clJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGks
IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCAzOGI2NTlhMzM2ODViYjNjNzI2NDdkY2ZhZmI4ZDU4MjA0MjJiYTg2Li5lZTA5ZDA1ZTA5
Yjg0MTY4MzIwYjEwYWRiYzk2ZmNkOTBjOTRlNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjZGVmaW5lIEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4
MCw2ICsyODEsOCBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1
Y3RvcktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpOyB9CisgICAgICAgIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJC
aW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcs
NiArMzAwLDggQEAKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1
cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVn
aXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0
dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3Jt
IG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSBy
ZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAt
NDk5LDEwICs1MDQsOCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0
ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZp
cnN0IGVsaXNpb24KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklE
KiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdE
ZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihS
ZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1
bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5Niw2ICs1OTksNyBAQAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9y
Q2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3Rl
cklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0LDEyICs2
NDgsMjUgQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5m
bzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNv
dW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJl
bCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIHZvaWQgZW1pdEdlbmVy
YXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
aW50MzJfdCBzdGF0ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklE
KiBhcmd1bWVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lz
dGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3SXRlcmF0b3JSZXN1bHQoUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBi
b29sKTsKKyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAgICAg
IHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsg
fQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4g
Jm1fcGFyYW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAgQ29k
ZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAg
Ym9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmls
ZUhvb2tzOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisg
ICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2Nyw2
ICs2ODQsOCBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNjb3Bl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQ
dXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqKTsKKyAgICAg
ICAgRmFzdEJpdFZlY3RvciBsaXZlQ2FsbGVlUmVnaXN0ZXJzKCk7CiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIGJv
b2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxl
UmVzdWx0ID0gbnVsbHB0cik7CkBAIC03NTIsMTIgKzc3MSwyMiBAQAogICAgICAgICAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZhcmlh
Ymxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6
IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2Nr
cyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3Ry
dWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRl
ck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAgICAgICAgICBjb25z
dHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAg
ICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMgPSBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6RW1wdHk7CiAK
LSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1f
dm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
PyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0
cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2Uo
KSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRo
aXMsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFy
aWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5NCw3IEBA
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklE
KiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVn
aXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQq
IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklE
KiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0
ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVmYXVs
dFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1l
dGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYg
Y2FwdHVyZXMpOwogCkBAIC04MDQsNiArODM0LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90
b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRz
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJh
dG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1
ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVj
dFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI3LDYgKzg1OCw3IEBACiAgICAgICAgIFZlY3RvcjxT
d2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0
b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZh
cmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5j
dGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0
YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwog
ICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2OGU1YmJkMGY1Mi4uMWViNDFhMjM3
OWI3MmUwMmRmNTBlZjRmZTliNDA0NjQxYzUxNjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJl
bFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAog
UmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFRE
WkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRv
ci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJh
dG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEsMTYgQEAg
UmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQqIGVt
aXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0YXRp
YyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRl
eChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9t
ZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
ICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1l
KTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3Qg
PSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0LmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAgLTI1
ODMsNyArMjU4OCwxMiBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUlu
VGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBudWxs
cHRyOworICAgIGlmIChtX3ZhbHVlKQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkp
OworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAg
ICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Niw5NiBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRF
bnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5l
U3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3Rh
dGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJu
Tm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRl
bWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAg
ICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAg
IEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRl
bWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhw
ciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4
cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShu
ZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRp
bmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21l
T2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0
YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxv
Y2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2so
KSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRp
Y19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAg
ICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5p
c1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1
cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3Ig
cmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1
dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xh
c3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3Rl
YWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQ
dXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJl
dHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5v
ZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rvcigp
ID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxl
VHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHBy
ZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2Vy
J3Mgc291cmNlIGNvZGUuCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUs
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3Qg
ZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGlu
IHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxh
YmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JC
b2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9y
Qm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVs
PiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRH
ZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRl
bWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1
cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0
IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAg
ICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgewor
ICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNf
Y2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAg
ICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2st
PmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2Fz
dDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQg
b25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQq
IHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJl
dHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAg
ICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExp
bmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwOTMsMjQgQEAg
UmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVT
NiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBu
dWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFy
Zy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7Cisg
ICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlz
KTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDIw
N2UwYjMzZTk4MjM5ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIwMGE5MjAy
NDYyYzAwOTgyYmI0MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAg
LTk2LDYgKzk2LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZhc3Rl
ci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9IDE2
OwogCisgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIpOworCiAg
ICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCBpc01h
cmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25z
dCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCBm
NGFjZjI1ZTYwZTE4OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5iOGY3ZDc2ZmZmY2QwMDA2
NGU4ZGVjYjY1MWM5YWZhY2FiY2I3N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgKQEAgLTcwLDYgKzcwLDM2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNv
bnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAoraW5saW5l
IGJvb2wgSGVhcDo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghcCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxvbmdpbmcgTWFya2VkQmxv
Y2sgYW5kIGZpbHRlciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4KKyAgICBUaW55Qmxvb21G
aWx0ZXIgZmlsdGVyID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAgICBNYXJr
ZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHApOworICAgIGlmIChm
aWx0ZXIucnVsZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7CisgICAg
ICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNv
bnRhaW5zKGNhbmRpZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Ly8gVGVzdCB0aGF0IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJZiBub3QsIHRoaXMgcG9p
bnRlciBpcyBub3QgcG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAoIU1hcmtl
ZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBUZXN0IHRoYXQgdGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1YWxseSBh
bGxvY2F0ZWQgaW4gVk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhl
IGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4KKyAgICBpZiAoIW1fb2Jq
ZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHBvaW50ZXIgY2FuIGJlIHVzZWQgYXMgb25lIG9mIGNl
bGxzLiBOb3QgcG9pbnRpbmcgdG8gbWV0YWRhdGEsIG9yIG1pZGRsZSBvZiBjZWxscy4KKyAgICBp
ZiAoIWNhbmRpZGF0ZS0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBUaGUgY2VsbCBwb2ludGVyIGlzIG5vdCB6YXBwZWQuIEl0IG1lYW5zIHRoaXMgY2VsbCBpcyBh
Y3R1YWxseSB1c2VkLgorICAgIHJldHVybiAhcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NlbGwq
PihwKS0+aXNaYXBwZWQoKTsKK30KKwogaW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0IHZv
aWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNM
aXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmlu
ZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNlOGY1
MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBACiAgICAgICAgIGJvb2wgdGVzdEFu
ZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2Vs
bCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworICAgICAgICBib29s
IGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7
CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwpAQCAtMzg4LDcgKzM4OSw3
IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJr
ZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0g
dGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0
ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsK
KyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uZDE4NTA0
MjBhYmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDE2
IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2Fs
bGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIGNh
bGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxvY2st
PnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZhbEV4
ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQo
Y2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2Nv
cGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJsb2Nr
ID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworCisgICAgVGhpc1REWk1v
ZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAoY2Fs
bGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hl
Y2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdl
bmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1v
ZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNv
ZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwg
PSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hh
aW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwg
aXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNh
bGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1RE
Wk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXND
aGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVy
Q29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVC
bG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dy
YW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJs
b2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywg
Y2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUs
IGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
YTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4uOTViYWIwNGQyM2E4ZWJl
OTVjY2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNr
X3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9w
X3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChv
cF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19l
eHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAgIERF
RklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2Nzdl
NzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NvcHlfcmVzdChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
b2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKElu
c3RydWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UmlnaHRT
aGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJp
Z2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21t
b24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGlu
dCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQg
ZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDQ5
NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1ZjBm
MmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4
cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVC
bG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2Fk
UGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYK
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9u
RGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19n
ZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJh
dG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAg
ICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwor
fQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4LDEx
ICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVnVDIp
OwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5j
dGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRvbmUu
bGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29t
bW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5l
cmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBl
bWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CkBA
IC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEw
ZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNm
NzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNp
emVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNv
bW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1
dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3Bl
KSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpj
cmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0
YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
c2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVj
dXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQog
ewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
LCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0
aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkK
K3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5j
dGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBv
cGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
LCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBi
b29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJy
b3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52
YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVu
Y3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAg
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9u
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVy
biBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Nj
b3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywg
c2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJu
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYxNDVj
OWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBi
MDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9j
YXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2M2Uz
YjIwOGM1Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0MSw2
ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFu
ZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBl
KCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4
ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNr
ZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19Q
QVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRp
ZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVC
bG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVH
SU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBM
TElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwog
fQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIo
cGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQp
OworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
d19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZh
MzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1
NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVu
Y19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFiNWIyMGQ5N2NhZjAzMy4u
MzY4ZDA4NzUyYTdjZmI3YWRjYWRkZTZmMGMzZTc5MWI1ZmNlNDIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIy
Nyw2ICsxMjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAK
K19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBk
aXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgs
NiArMTQ2NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRf
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBk
aXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVu
Y19leHApCkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNw
YXRjaCgzKQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfcmVzdW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWNjMjE2MmU4ZGYxMjQ5ZjU5N2Y4NmY1MjJi
NzBlMWU5NjA5YmUwMC4uMmI4NGNiYWYzN2VmMDQ2MGJkYjkxNmQyYmJkYWMwMmUwZDJiNGQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5ICsz
NDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZh
bHNlKTsKICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVs
ZWdhdGUpCisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7
CisgICAgICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxk
RXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3Rv
ciwKQEAgLTM2NCwxMiArMzY2LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
Ci0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVy
Q291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVy
QmluZGluZywgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC04ODYsNiArODg4LDkgQEAgY2xhc3Mg
QVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBub2RlLT5zZXRTdGFydE9mZnNldChvZmZzZXQp
OwogICAgIH0KKworCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNBcmd1
bWVudHMoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU2NvcGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5
ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5Mzg1ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3OWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAog
ICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAg
OiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4p
CiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEgQEAg
dm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFt
ZXRlckNvdW50KQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0lu
U3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmluZGlu
ZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0
cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAg
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikK
IHsKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1
cGVyQmluZGluZykpOwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCAwYWEzMTFkYzExZDdmOGE4YjAxZmVjN2U0NGJkZTIxZmE1NzhlZWNl
Li4wYmYwMGI3YmU5MzdmNzk3OGE0NTYzNzNmYWRlMzFmNWM3NWY5ZDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODE3LDcgKzE4MTcsNyBAQAogICAgICAgICAgICAg
UGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBh
cnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29u
c3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsxODQy
LDggQEAKIAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgICAgICBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVy
QmluZGluZyk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAg
ICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBp
bnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY5LDggKzE4NjksOCBA
QAogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFy
c2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAg
ICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0
cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
ICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAg
ICAgfTsKIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJy
b3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsK
IAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
eworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZ
aWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1
bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQxNDk4MjZjMzc5ZTQyY2Y1OWNlNTJhLi5iZjM3
NzhlMzNiNjZiMTI4NDM2OGY3NmY0NTVkNTIyODNkMzA4ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2Rl
LCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3RydWN0
b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQog
ICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEwLDcg
QEAKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVt
ZW50cygwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQog
ICAgICwgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAg
ICAgLCBtX3RoaXNURFpNb2RlKHRoaXNURFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQAog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBm
dW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNv
bnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0g
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0yNzMs
OCArMjc3LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5j
dGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAg
IGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2Rl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJh
dG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VT
b3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTMwMSw3ICszMDksMTQgQEAKICAgICBW
YXJpYWJsZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRWYXJp
YWJsZXMoKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAg
ICAgIHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLSAgICAK
KworICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICBzY29wZS0+Z2V0VXNlZFZh
cmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFibGVz
LmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAgICAg
ICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5z
dHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAt
MzExLDEwICszMjYsMTAgQEAKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJG
ZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykKICAgICAgICAgZmVhdHVyZXMgfD0g
TW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7
Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUtPmdl
dFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxvdyBidWlsdGlucyB0byB1c2UgbGV4
aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1
c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzMsNDUg
QEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJj
ZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0
LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAg
IGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsK
KyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0
OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8u
bmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBh
cmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8u
c3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0
ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRv
ckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29w
ZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7Cisg
ICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJz
ZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JC
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBp
bmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4u
bV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwor
CisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFy
dExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhw
clN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tl
bkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVs
ZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVt
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNp
Z25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBk
b2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQzLDE0IEBACiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25C
b2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3Rh
cnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlU
eXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsK
ICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFy
YW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBh
cmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYyLDcgQEAKICAgICBlbHNlCiAgICAg
ICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tG
b3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJD
YW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBv
ZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5D
b2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fy
cm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3OCw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1v
ZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1OCwzNyBAQCBzdGF0aWMgY29u
c3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkK
K3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxp
c3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwor
ICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAg
ICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRl
TmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25T
dGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVy
YXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwor
ICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZh
bHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
KTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNs
YXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFy
c2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAg
LTE4MTMsMTIgKzE4OTksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0
T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBj
dXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNl
dDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rp
b25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAg
ICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVt
biwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZv
LT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50
LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBj
b25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0
ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3Vy
Y2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyArMTkx
Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5m
by0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJl
c3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlC
bG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM4LDMzIEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAg
CiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJT
dGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0
ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0g
WyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9j
YXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGlu
ZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsK
KyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0
aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNl
UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0
aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAgICAv
LyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJh
dG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAgICAg
aWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0
aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
Z2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3VwZXIo
KSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVyYXRv
ckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
InN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7
CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVl
ZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0
ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3Qg
cGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwog
ICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJy
ZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVu
Y3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUg
fHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmlt
cGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwog
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAq
ZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMg
bm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE5
MjksNyArMjAzMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJB
VE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwg
dHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6
RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElm
RmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBh
IG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAg
ICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNs
YXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAg
ICAgICAgICAgIH0KQEAgLTI3MzEsNyArMjgzNCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAg
IEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmllcih0aGlzKTsKIAogI2lmIEVOQUJM
RShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlFTEQpKQorICAgIGlmIChtYXRjaChZ
SUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRv
cigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOwogI2Vu
ZGlmCiAKQEAgLTI4MzYsNiArMjkzOSw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJ
ZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0
ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAK
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJU
KG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2lu
dCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDcsMTQgQEAgc3RydWN0IExhYmVsSW5m
byB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAg
IGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1
bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJn
dW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJn
dW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBu
ZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBk
ZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3Vt
ZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9z
aXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0zMDQxLDcg
KzMxNDYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlw
ZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChw
YXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1v
ZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9k
KSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBt
ZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RM
b2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTksNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAj
aWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAg
ICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRp
ZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5v
UmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVu
Y3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhw
cihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcyNTlh
NWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3Vu
ZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAg
ICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAg
ICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkK
ICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkp
CiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkK
KyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwg
bV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhz
Lm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxl
U2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAg
ICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJ
c0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNl
dHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlz
RnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9
CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0K
IAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7
IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lz
TGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAg
ICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFi
bGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIg
PSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRy
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVz
LmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFp
bnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8
IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAg
ICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVk
U2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJn
dW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNl
ZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBh
IGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0
aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBz
Y29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5u
ZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMg
Y2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAo
c2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25C
b3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAg
ICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAg
ICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNh
bmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwxNCAr
NTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0
cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFz
QXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAg
bV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JG
dW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNH
ZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAg
IHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1
ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNl
dElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wg
bV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7
CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1l
bnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAK
QEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2Vy
KAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3Vy
Y2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0g
VGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1MCw2
ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxl
bWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRy
ZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVj
dGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAg
ZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTkw
LDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmlj
dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJz
ZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBt
ZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wg
c3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRP
ZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5k
aW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5
KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Q29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJl
ZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5k
aW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWdu
ZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4
dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWls
ZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBh
dHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBp
ZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5p
dEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRU
eXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyMTUs
NiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1
bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWlu
aW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQ
YXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
Jik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVl
Q2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVt
ZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEzNjMs
NyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1
bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAg
Ym9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsK
ICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNU
RFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xh
cmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBi
dWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQ
YXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xhc3Mg
UGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVs
bCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0g
ICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERa
TW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwg
cGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAg
ICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJp
dCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5k
ZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2Fk
YzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQ
YXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAor
ICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1v
ZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5j
dGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFy
c2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBp
bmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQog
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0
ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBi
b29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZm
NDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAorI2Rl
ZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvZGVU
eXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsK
KworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5
KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5
cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2Rl
OjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAg
ICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2Rl
KSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJpbmco
KS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBt
X2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNv
ZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBv
dXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8vIHBy
b3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisgICAg
U3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAgICAg
ICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxhZ3Mg
PT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQor
ICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1Y3Qg
U291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMg
OiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBp
c0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4g
c291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNlQ29k
ZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmlu
ZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZkMWQy
NTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBTeW50
YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2ln
bm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9u
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3Np
Z25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7
IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQ
cm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5j
dGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBp
bnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBG
dW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBp
bnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1
bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBpbnQg
ZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50
LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwogcHJp
dmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNi
MjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi4yYTI0NDJmYWE2ZWVhODE4Mjg0
NWZmYjE3YjIxYTJiOTkzODRjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3RO
b2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9j
a1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0
ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9k
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9t
R2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8
UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJv
ci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2
CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUp
OwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xv
YmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9u
LCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJh
dG9yVGhpczo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4ZWN1
dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygm
dm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNv
dXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDhjOGNm
ZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4uOWI4YzE1MGRlMjBiODUzM2IxZmRh
M2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgi
CisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1
ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
QEAgLTU2LDcxICs1Nyw2IEBACiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlk
ZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUg
eyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwotCi0g
ICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBj
b2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1RE
Wk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9mbGFncygKLSAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMpCi0gICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpCi0gICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkKLSAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAgICAgICAgLCBtX2hhc2goc3RyaW5n
KCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VD
b2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUg
b3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKLSAgICAvLyBw
cm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgotICAg
IFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsg
fQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKLSAgICAgICAg
ICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0gICAgICAgICAgICAmJiBtX2ZsYWdz
ID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUK
LSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0cmluZygpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQgbV9oYXNoOwotfTsKLQotc3RydWN0
IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3Vy
Y2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJl
dHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRz
IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsKLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wg
aXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJu
IHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUg
ewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2
MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4MWJm
MWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBt
YWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVy
YXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBc
CiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVpbnQz
MkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFy
cmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkg
XAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMp
IFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0OTY0ZDQ0OTY0MzkxLi40NTZkYjc5
MDIwMmRjMzlmZDE3ZmVjMzFlM2NhNDA0MTljY2U4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwzOCBAQCBzdGF0aWMgQ29t
bW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0s
IGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lz
dGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisgICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0
b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdl
bmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9y
KSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUs
IGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KSk7
CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0
b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKSk7CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IHBjWzJdLnUub3BlcmFu
ZDsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsKKyAgICBFTkQoKTsK
K30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdmM2NjNGYxZjM3ZTYwZWI3
MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTAs
NiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSBy
ZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJv
ZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fz
c2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1YjRm
NTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRhODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEh
cGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVj
a01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3lu
dGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJv
ciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1
bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9k
ZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5v
ZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQz
MjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcg
KzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAog
ICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAg
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fy
cm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAg
ICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxl
LT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYsNyBA
QCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dy
YW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50
aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBl
cnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAg
IGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5k
ZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uODhhMjRhZDZjYWIy
ZDYyMDUyMTA0ZjAxMzAyZWRlMDIyYTQ0ZDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0
cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9u
RW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZG
dW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERF
Q0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2Up
OyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzOjpO
b25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpA
QCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsg
fQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiAr
NjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5G
dW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQot
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWRO
YW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7
IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNh
YmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVlYTE0Yjk2MjZhNWExNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEg
MTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24s
IGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgp
KSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0
aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9z
aXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAogICAgIGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAotICAgIGNv
bnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCisgICAg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgYm9v
bCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBz
b21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBw
cm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VT
dHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7
CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgKGlzR2VuZXJhdG9y
KSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAgICAg
ZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmco
IntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9
IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0
aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOworICAg
ICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwog
ICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEg
MTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGJv
b2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5n
KCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBjb25zdHJ1
Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBp
c0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDIyZWNiNTdi
OTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRjZDIwYjc2MzFjMTc5ZmRlMDJh
YTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBjbGFzcyBGdW5j
dGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHN0YXRpYyBD
YWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CitKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBib29sIGlzR2VuZXJhdG9yID0g
ZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAKIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xp
c3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpU
ZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9
IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlZWM2NDdkNDZmOGEyZTdmY2ZiOGQzZjIxZDdhZDNhMjg4N2E4NGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9yRnJh
bWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJz
KQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAg
LCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKQorewor
fQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9u
dW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsgKytpKQorICAgICAgICByZWdpc3RlckF0KGkpLmNsZWFy
KCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0dlbmVy
YXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9m
UmVnaXN0ZXJzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQorICAgICAgICBuZXcg
KAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0
b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMobnVtYmVyT2ZSZWdp
c3RlcnMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mUmVnaXN0ZXJzKTsK
KyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHNhdmUgY2FsbGVl
IHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3Ig
cmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIEFTU0VSVChsaXZl
Q2FsbGVlUmVnaXN0ZXJzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
eworICAgICAgICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAgICAgLy8gU2luY2UgQyBzdGFj
ayBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29ycmVjdCB2YWx1ZSBmb3IgYSBq
cyB2YWx1ZSBtYXkgZXhpc3QKKyAgICAgICAgLy8gaW4gYSBub24taW5pdGlhbGl6ZWQgKGJ1dCBh
bGxvY2F0ZWQpIEpTIHJlZ2lzdGVyLgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgZXhhbXBs
ZSwKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWdpc3Rl
ckEgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgLy8gICAgIC4uLgorICAgICAgICAvLworICAg
ICAgICAvLyBJbiB0aGUgYWJvdmUgY2FzZSwgcmVnaXN0ZXJBIGlzIGFsbG9jYXRlZC4gQnV0IGl0
cyBjb250ZW50IG1heSBub3QgYmUgY29ycmVjdCBqcyB2YWx1ZS4KKyAgICAgICAgLy8gQXMgYSBy
ZXN1bHQsIEpTQ2VsbCBwb2ludGluZyB0byB0aGUgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24gbWF5
IGV4aXN0LgorICAgICAgICAvLyBQZXJmb3JtaW5nIGEgd3JpdGUgYmFycmllciAoJiBTbG90Vmlz
aXRvcidzIG1hcmtpbmcpIG9uIHRoZXNlIGluY29ycmVjdCBjZWxscyBjYXVzZXMgaW52YWxpZCBk
ZXJlZmVyZW5jZXMuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSB0ZXN0
IGEgZ2l2ZW4gY2VsbCBsaWtlIHBvaW50ZXIgaXMgdHJ1bHkgY2VsbC4KKyAgICAgICAgaWYgKHJh
d1ZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnZtKCkuaGVhcC5pc0xp
dmVDZWxsKHJhd1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9uLWNlbGwgdmFsdWUgbWF5IGJl
IHN0b3JlZC4gKGUuZy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQgdGFnIGluIDMyYml0IGVudmly
b25tZW50KS4KKyAgICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJlIG5vdCByZWNvZ25pemVkIGFz
IGEgY2VsbCwgd3JpdGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5vdCBjYXVzZSBhbnkgcHJvYmxl
bXMuCisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCByYXdW
YWx1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7Cisg
ICAgLy8gT25seSByZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEg
Z2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJl
cGxhY2VkLgorICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90
IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaW5kZXgpKSA9IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOworICAgICAgICByZWdpc3RlckF0
KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgR2Vu
ZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIC8vIFNp
bmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4g
c2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5y
ZWdpc3RlcnMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjljZjI2MmM3OTVhYTQ1ODdjNTU0
YjBiOTFhMWZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAorCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Cisg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xh
c3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxl
cjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0
cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNp
emVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiByZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9m
ZnNldE9mUmVnaXN0ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4mIHJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlcnMo
KVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlJlZ2lzdGVycygp
CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIoc2l6ZV90IGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBpbmRleCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemVGb3JSZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMpCisgICAgewor
ICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51bWJlck9mUmVnaXN0ZXJzICog
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisKK3ByaXZhdGU6CisgICAgR2Vu
ZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisgICAg
c2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitw
cm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JG
cmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3Y2QzZWQwMjVi
ZWE5MjdmNjA1MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKwor
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAi
R2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFy
Z3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250
RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+
Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8q
IGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQorewor
ICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1
cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcyM2Uz
ZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorI2Rl
ZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFs
RnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKwor
Y2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAg
IHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlOGYyZTMxYmQzMTFiOTJlNDI3
NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJs
ZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZl
MWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2
NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1
aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBl
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBT
b3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclByb3Rv
dHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAg
IEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdlbmVy
YXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7Cisg
ICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5lcmF0
b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRv
clByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJh
dG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0
b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAgR2Vu
ZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90eXBl
X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JU
aGlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjlhNmUwOTVjMzJhYWRjNTQ0NmEzNTVkODE3NWE5NTlkZDQ4NGNmOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMu
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9y
VGhpc19oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8g
aHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25h
bGxvY2F0ZQorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5l
d3RhcmdldAorLy8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRz
IFtbQ29uc3RydWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMg
dGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1
dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZv
bGxvd2luZywKKy8vCisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAg
IHlpZWxkIHRoaXMKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBn
ZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAg
IGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5l
dyBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQg
aXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8K
Ky8vIFRoZSBmb2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9y
RnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybmVzIGEgR2VuZXJh
dG9yIHRoYXQgZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXM6OkVtcHR5IGZsYWcuCisvLyBJbiB0
aGlzIGNhc2UsIHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9j
Y3Vycy4KK2VudW0gY2xhc3MgR2VuZXJhdG9yVGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwK
KyAgICBOb25FbXB0eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJk
NmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWEx
MWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlz
T2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAg
ICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVj
dCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBK
U09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3Rv
dHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwg
RG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51
bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0s
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisj
aW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dl
bmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikg
fTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVy
YXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5l
cmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVu
Y3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dl
bmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVy
YXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4
ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JG
dW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4g
Z2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9y
RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorewor
ICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3ZGVl
N2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVy
YXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlv
biA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJM
RShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZy
aWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZN
OworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFz
cyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAw
LAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07
CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNH
ZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29w
ZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29w
ZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2Fw
YWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5s
aW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24p
OworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpT
R2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisK
KyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJh
dG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJhYWRhZjc0MDJhNzdiYzBm
NTkuLjc2MjJiYjkyYTE5MTUxMWQ4MzA0ZWEwYjFkMDBiMzg5ODdlYmM4NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUsNyBA
QAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0LDYg
KzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZP
Ul9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9S
X0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JQ
cm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1Jf
REVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTEgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVF
cnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJh
bCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9y
U3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJU
eXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1
cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVycm9y
IikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
ZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBt
X29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0p
OwpAQCAtODE4LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAsNiArODYyLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0
OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2Rk
NDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBH
ZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNs
YXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vy
c29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlw
ZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBt
X3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1f
aXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxH
ZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xs
YXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBl
KiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0
b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9
CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVi
dWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0
cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBk
OTdhMWUwYjc3YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1NGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRl
ck9iamVjdC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+
IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAm
dm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJh
YmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1
dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJ
bmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRh
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4
Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCBjZWQzMTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5
YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXgg
ZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0Yzdm
ZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbApAQCAtNzE5LDcgKzcxOSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2Fi
bGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19B
cnJheS5mcm9tX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcy
Nyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJh
dG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0
YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19p
dGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMu
anMKQEAgLTc1Myw3ICs3NTMsNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRf
cmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5n
X3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19p
dGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJp
bmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMs
NyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93Lmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9p
bnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAt
IHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwog
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJv
dG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdl
bmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1
dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5k
X2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
c2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
c3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3Ry
aW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdfdmlh
X3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVu
dGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3By
ZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwK
IC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUs
NyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9z
dHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJh
eXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2Fs
bHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0
b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNf
aXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1
YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUy
NjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJs
ZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQn
KSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmpl
Y3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2Yg
U3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9
OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0g
MCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1l
dGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5p
dGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJs
ZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICog
Z2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNl
c19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIy
YTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpz
CkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewor
dmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFy
ciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJv
bCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30K
K2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsK
KyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2Rz
Wyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0
b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9
CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVy
YXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
CmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2Mw
YjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9m
IGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rp
b24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRo
b2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5p
dGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3Ig
PSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQo
KSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydy
ZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9
IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVy
YXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIg
Y2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZj
MWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAn
dW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307Citp
ZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7Cisg
IHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDog
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIu
bGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAn
dGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJs
ZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1
cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2FlZThkZjhiY2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3Vt
ZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJl
KGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgc2hv
dWxkQmUoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgcHJpbnQoSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7CisgICAgICAgICAgICB0aHJv
dyBlOworICAgICAgICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sK
KyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0
IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
YXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJh
NDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1
YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQor
ICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAg
ICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAg
ICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
ICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2
YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgp
LnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7
IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBn
ID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9u
ICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAg
IHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0Miku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhv
ZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMy
NTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBA
CitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwo
c2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgaW5zdGFu
Y2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9y
OiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJy
b3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9
IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJyb3Ip
ICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0
cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAg
ICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0KK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90
IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRh
eChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOwor
ICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMg
Km9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0
aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNs
YXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIz
MWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0
dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworY2xhc3MgQSB7CisgICAgKmdl
bigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAg
ICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAgc3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsK
KyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJu
IDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdl
bigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOwor
ICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3Vs
ZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBm
dW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2Vu
KCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4
YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2
NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkg
eworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJy
b3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJy
b3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlm
IChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7
CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjog
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBCIHsgfQor
CisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhpcycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30o
KSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0
aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAgKmdlbmVyYXRvcigpCisgICAg
eworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9y
KCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25z
dHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVj
dG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZi
MGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAg
KzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMi
KSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmlu
ZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7
IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5f
X3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4
Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEs
MTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5
aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4OThlNTkwOWFiYWYzODViZjIwODk5MzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rp
b24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigiTkciKTsKK30KKworZnVu
Y3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwordmFyIGcgPSBnZW4oKTsK
K2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4YmJh
ZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGdsb2JhbCA9IG5ldyBGdW5j
dGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpn
ZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQg
ZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsKKyAg
ICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0KKyAg
ICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2VuLmNh
bGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2Jq
ZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4o
KSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3IGdl
bigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQoKTsK
KyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsK
KyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUt
Zmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBj
Mzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2Fs
bC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhy
b3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNo
YWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIp
OwordmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRj
aCAoZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1
bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBk
M2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10
YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQorewor
ICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdlbigpOworc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1z
dXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
ck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3Ig
PSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAg
ICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24n
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICByZXR1cm4g
ZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBT
eW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAg
ICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRl
bmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVy
LmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQoKTsKKyAgICB9LCBgU3lu
dGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5k
cyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZEJlKGEu
Z2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7Cisg
ICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBhLmdl
bigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmlu
ZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIwZWQ1NjY4OGE2YTI5OGMuLjk4ZmZmNWNmNzM1
M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAg
LTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG4gPSBhcnJheUxlbmd0aCgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKSB7CkBAIC0xOTUsNyAr
MTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXgg
NDIxOTQxZjNhNDRhYzZkYzVkOWI2N2ZkMmNkZDg2ZjEyMDEzYzY0OC4uZjQ2ZTExOTczZTUyNGNh
NDI4NTZiMGQ3NjgzNzllMWE5ZjQ1OTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVh
dHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0z
NjQsNyArMzY0LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9DTEFTU19T
WU5UQVgpCi0jZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAwCisjZGVmaW5lIEVOQUJMRV9F
UzZfR0VORVJBVE9SUyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZfTU9EVUxF
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDEx
ZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysr
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dG
VU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxF
X0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZf
R0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJB
VE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJB
TF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQw
MzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
NDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNU
SU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5F
UkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JT
OwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVO
VF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUx
NzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQz
Y2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVO
QUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0g
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01P
RFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggOWNkODQ2NWMw
OWM5ZjE3ODYwNGM5YWIyOTI1YTcwYWI0N2M2M2UzYy4uMDJjYzc5OGIyMGJkNmU0NjI2M2JlMzlk
OTAxYThmZTk0Y2I5ZWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTM0LDcgKzM0LDcgQEAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TiBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiBQVUJMSUMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQT1JUIFBVQkxJQyBPTikKLVdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfR0VORVJBVE9SUyBQVUJM
SUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5F
UkFUT1JTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9FUzZfTU9EVUxFUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMRV9TWVNURU0gUFVCTElDIE9GRikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBkOTYyMjRkNDE3MWJkYmE3MTcwYzQ1ZDNk
ZDcyMTc1NDc3MTJmNTBkLi4wMGVkYmMwMTNiZmY2NmY3YTAzZmRkMjliNjMxZjQ2MjUwYmUyNDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw3ICs3Nyw3IEBAIG1hY3JvKFdF
QktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMiAiU3VwcG9ydCBFTUUgdjIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggIlRvZ2dsZSBFUzYg
YXJyb3cgZnVuY3Rpb24gc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggIlRvZ2dsZSBFUzYgY2xhc3Mgc3lu
dGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0VTNl9HRU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBP
RkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTICJUb2dn
bGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfRVM2X01PRFVMRVMgIlRvZ2dsZSBFUzYgbW9kdWxlcyBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYICJUb2dnbGUgRVM2IHRlbXBsYXRlIGxpdGVyYWwgc3ludGF4IHN1cHBv
cnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTFRFUlNf
TEVWRUxfMiAiVG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBSSVZBVEUgT0ZGKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQyZGIyMjg3
NzllMThhNTllODUwMzcxYjY1ZmMyM2VmNWJiMmRkOWQuLjZhMDgxNDM1YTJmYmZiNjg2MDkxNGNj
NWYyZWU0ZmI3YjJlN2NmYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQv
QmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTExLTIyICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgcnVuLXdlYmtpdC10ZXN0czogaHR0
cCBzZXJ2ZXIgZm9yIGltcG9ydGVkIFczQyB0ZXN0cyBkb2Vzbid0IHdvcmsgd2l0aCAtLWxheW91
dC10ZXN0cy1kaXJlY3Rvcnkgc3dpdGNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5ZDIzM2Q2OTFjNmI4OS4uNDYy
MTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3IEBAIEJFR0lOCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9
PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2VuZXJhdG9ycyIsIGRlc2Mg
PT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNT
dXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRlZmF1
bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24g
PT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVsZXMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4g
XCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDc5YTZiY2Y2NzU0ZTBmMTUxM2VkNjhlMTRhOGIwOTAxODIyNDQ4YWEuLjBkN2RlNGViMDhj
OWYwZTM0OTUxM2M5MWUwNjZjNmNkZDViZTFiNzkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQv
QmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIE5FVFdPUktfUFJPQ0VTUyBjb21w
aWxlIGZsYWcKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRM
aWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJhMWZhMDgzYjkzMjI5N2My
N2M0MjgwYjUuLmE2MjMzN2I3M2ZkNmM4OTc3MmM2Y2ZhMDE2NjhmODIxYTMzMGU4YTEgMTAwNjQ0
Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNl
bGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTExLTA1ICBOaWtvcyBBbmRy
b25pa29zICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAg
ICAgICAgIEFkZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3MgZm9yIGVuYWJsaW5nIFdl
YiBBbmltYXRpb25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4ZjdlZTUy
MWUwNGY5ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQx
NjZiZjVlNzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09O
U1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVS
QVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+
CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4K
ICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDkx
ZWU4MGZkZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2MWI3
Y2VjNmFjNWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3
ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMiAvPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgog
ICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266077</attachid>
            <date>2015-11-22 22:15:40 -0800</date>
            <delta_ts>2015-11-22 22:43:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123151524.patch</filename>
            <type>text/plain</type>
            <size>296343</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi40ZTIwYzgwMWRjZTNhNmNk
YmQ3ODhlYmE5NWIxNmIwNzcyMWMzMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDM0IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAg
ICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5n
IGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZl
L3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jpbmcg
aW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0g
dG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50
cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2Vz
IGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBm
b2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JTdGF0
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxldGVkOgorICAgICAgICAgICAgICAgICAg
ICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAg
ICAgICAgICAgIGNhc2UgRXhlY3V0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgLi4uOworCisgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICAgICAgb3Bf
c2F2ZShZaWVsZF8wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8wOgorICAgICAgICAgICAgICAgICAgICAgICAg
b3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3Vt
ZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
b3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8xOgorICAgICAgICAgICAgICAgICAgICAg
ICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJl
c3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1
cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIC4u
LiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxp
dmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBh
bmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3Rl
cnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZp
bGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0
ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQg
aW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5
LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdl
IGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJz
IHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VT
Y3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAg
ICAocmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2
YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OmVtaXRTdXBlckJhc2VG
b3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ollp
ZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc0xpdmVDZWxs
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc0F0b20pOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbCk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFs
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0
YSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0
YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJh
dGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6U2Nv
cGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xsZWN0
RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1v
ZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6Omlz
UHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVLZXkuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBwYXJz
ZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVZ
aWVsZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6
aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4
KToKKyAgICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0Zvcik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6cmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnJlZ2lzdGVyQXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZSZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvclJlZ2lz
dGVycyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Okdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJh
dG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXMuaDogQWRkZWQu
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6
SlNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZUltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQp
OgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRl
SXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgor
ICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRl
cmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAo
aXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmpl
Y3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZ192aWFfdGhyb3cuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAg
KGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1
bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50
cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnMSk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0U3ludGF4KToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvcik6CisgICAg
ICAgICh0ZXN0U3ludGF4RXJyb3IuQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5w
cm90b3R5cGUub2spOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYSk6CisgICAgICAgICh0ZXN0
U3ludGF4LkNvY29hLm9rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNz
LW1ldGhvZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocHJvdG90
eXBlLmdlbik6CisgICAgICAgIChzdGF0aWNHZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChC
KToKKyAgICAgICAgKEEpOgorICAgICAgICAoQy5wcm90b3R5cGUuZ2VuZXJhdG9yKToKKyAgICAg
ICAgKEMpOgorICAgICAgICAoVHlwZUVycm9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChvayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFi
bGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRo
aXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQu
CisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoQi5wcm90b3R5cGUuZ2VuKToKKyAg
ICAgICAgKEIpOgorICAgICAgICAoQS5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKEEpOgorCiA9
PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MGE1Nzk0YzA2
ZjRmYWIwOWZmMDNhNjQxNzgwZTNmMjZhYzNhZDhkLi4xN2I3ZTE1N2YwYzZjNjljN2M0ODY1YWEw
MDc2NzMyMmFkNjcxZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTExLTIyICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRo
aXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpm
b3JFYWNoU2V0Qml0KToKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNS0x
MS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
QVNTRVJUSU9OIEZBSUxFRDogdGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpID09ICcvJyBpbiBXZWJD
b3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMWEyM2UyMjhlN2RkYzBj
OGJkMGJlMDFmNTA2NzAwZDc2YzljMS4uMjc5YmU3YmJiYWE2MDE3YTI2NmViNWU4NjU2ZmI4M2My
YzY2NzZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTIyICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRo
aXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0y
MiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZv
bnQgc2VsZWN0aW9uIHNob3VsZCBub3QgY29uc3VsdCBmb250LXZhcmlhbnQgcHJvcGVydHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCAzYjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYw
Li4wNjFlYzBhMDBkZjU3Y2I1ZTEzNDgzMWNlOTQ2NTk5NmQ3NjVjOTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xICsxLDEwIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9n
LTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZTYzNzg4NzI2Mjg0YzBiYTNmMTVjOGEzYjU5
Y2MxZjdiMTYwZDNjLi5lOGE5YmVjMjdiNjg3YzgzYjhhYzUzNzIwNDU3YmFlOTQxMzJjNmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jh
c2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIyICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBBZGQgbWlzc2luZyBpbnNwZWN0b3IgZmlsZSB0byBHVEsrIGNvbXBpbGF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0Yzky
MWJlOTczYzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5
MzdkMzA5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpT
Qzo6cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZp
ZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3
NzE5ZDM2NDc1YjZiNjExZTgyOTYuLmQ3MDdlMzNiZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVj
Y2Q1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMs
MTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAg
ICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApA
QCAtNjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3Jk
LmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAK
ICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9P
QkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5
NSw2ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcwor
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1
NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3
YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3
IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
ID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lO
VEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7
CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVf
RVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklO
RyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggMmY2NWRiNTVhMWVlZDM2NDljZmUzM2Q3OGI5MjZjNjI1MTNh
OWY2OC4uZmRlNTdlOTM4ZGJkNGZhMmRiZTVjMTRkN2JjOGZiZTExNTE3MDFjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg0LDYgKzg0LDcgQEAgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0dlbmVyYXRvci5Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIw
LDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAor
ICAgIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAg
ICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCmluZGV4IDNlN2Y5OTRlMzA3YzQ2ZDAzYjc0Yjk3OWY1MWJlNjU2ZTU5YWMw
NDMuLjE4OTExOTQ3OTFmYjJkMDc1ZGJhZjdiMTU4N2ZmYzgzZTYzYmM3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzU2LDYgKzc1NiwxMCBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlw
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFy
ZURhdGEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JGcmFtZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk1
LDYgKzc5OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0RhdGVNYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNG
dW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0dsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ1
LDYgKzk1MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUu
bHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291
cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CkBAIC0xNTE1LDYgKzE1MjEsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBA
IC0xNjAxLDYgKzE2MDgsMTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5
cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhp
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1l
bnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
bmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiArMTY3Miw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTZkM2ZmMDBlMjUwM2Fj
YmMzNjc5MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMjdjYzM2ZGJiMTQ5MDU0OGQyODg1MWQzMDNhOTk3
NzY5ZGEwMmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwpAQCAtNjY2LDYgKzY2NiwxOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYgKzc1OSw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2ICsyNjI3LDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQ
cm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0yODEzLDYgKzI4MzEsMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
bmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JUaGlzLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgs
NiArMjk1MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rp
b24uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICsz
MzE4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xFcnJvclByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8Rmls
dGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5o
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkNzQ5MTZjY2NjMjZlZDNkODY0
ZGJkNTBmMGQ5MTYzMzkzMGFlMTMuLjI3ZGU0NTk2YTRiYmE5OWI0Y2I2YzYzNTBiNjBkNzJiMmQ3
ZTI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkg
QEAKIAkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2
NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJj
ZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi87IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICov
OyB9OworCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUy
IC8qIEdlbmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIx
QzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUy
IC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovOyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
OTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3
MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0
ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEw
OTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExM
SW50QXNzZW1ibHkuaCAqLzsgfTsKQEAgLTE5NjIsOCArMTk3NSw4IEBACiAJCUZFMEQ0QTA5MUFC
QTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDRBMDcxQUJBMjQz
NzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgKi87IH07CiAJ
CUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5
RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJh
dG9yLmNwcCAqLzsgfTsKLQkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0Eg
LyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMDExQkZCRTU1
RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVs
R2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11
bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyB9Owog
CQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQx
MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYz
NDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICov
OyB9OwpAQCAtMzI2Nyw2ICszMjgwLDIwIEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5l
cmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg0MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkx
ODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvci5wcm90
b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0
b3IucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE5MDFD
MDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRv
clByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01MDc3LDYgKzUxMDQsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZB
MkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3
MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5
RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMw
MjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYy
MTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2
MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3
MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCAqLywKQEAgLTUyMDUsNiArNTIzMyw3IEBACiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcy
MkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyog
U291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJj
ZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5j
cHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmgg
Ki8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwICovLApAQCAtNTMzNCw2ICs1MzYzLDE1IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2
MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yVGhpcy5oICovLAogCQkJCTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJn
dW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVy
aWNPZmZzZXQuaCAqLywKQEAgLTU0MzMsNiArNTQ3MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3
RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8q
IEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8q
IEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJ
CQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY1NDEsNiArNjU4MSw3IEBACiAJCQkJQTc1RUU5QjAx
OEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMx
NTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAy
QzM3MzMgLyogRnVuY3Rpb24ucHJvdG90eXBlLmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMw
MDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5
QTMwMDlEQjFFRiAvKiBHbG9iYWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNG
NTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8s
CkBAIC02OTUyLDYgKzY5OTMsNyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBE
RkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJC
MkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1
NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKQEAgLTcwMDEsNiArNzA0Myw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAw
Njc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjIxLDYgKzcyNjQsNyBAQAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJ
bnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURC
NUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0Ex
N0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ3LDYg
KzcyOTEsNyBAQAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRB
MjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0
Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEph
dmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTAsNiArNzQzNSw3IEBA
CiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMw
MjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDI2LDYgKzc0NzIsNyBAQAogCQkJ
CUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkx
MzU1MUI3OTRGOEEwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUzOTEzNTYxQjc5NEY4RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTc1OTgsNiArNzY0NSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0Yy
RjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVG
NUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzYzMCw2ICs3Njc4LDcg
QEAKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3Jr
bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0
cm9uZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUy
NiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1
MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3
OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODY0Nyw2
ICs4Njk2LDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFE
NzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg2NzMsNiArODcyMyw3IEBACiAJCQkJMEY3
NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFCRTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4
RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg4MTAsNiArODg2
MSw3IEBACiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0RDJGM0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFy
a1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkw
NTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlE
REYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04OTU2LDYgKzkwMDgsNyBAQAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlG
RiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3
MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRp
c2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdE
NjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUx
Qjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtODk2NCw2ICs5MDE3LDcgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1
MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZp
cnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBE
OTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2
YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBhMy4uNDhlZjdmZjNhOGViYTZiNDU4
OTY5MjJjMTdkNjRiMTA1MTRjOTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92
ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkg
OiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvciwKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNv
bnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVO
YW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5k
LCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92
ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1l
dGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5n
KCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNWU2OWM4M2ZjMGU4NWJmNDQxNWFiMTcxNzRmZWQxNGU1NTE4ZWMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5
cGUuanMKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4dChzZW50VmFsdWUpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7CisgICAg
bGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAoc3RhdGUgPT09IC0y
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIp
OworCisgICAgaWYgKHN0YXRlID09PSAtMSkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgdmFsdWUgPSB1bmRlZmluZWQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTI7ICAvLyBFeGVjdXRpbmcuCisgICAgICAg
ICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhp
cywgdGhpcywgc3RhdGUsIHNlbnRWYWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFs
TW9kZSAqLyAwKTsKKyAgICAgICAgICAgIGlmICh0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9PT0gLTIp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOworICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChlcnJv
cikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENvbXBsZXRl
ZC4KKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIHJldHVybihzZW50VmFsdWUpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7
CisgICAgbGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAoc3RhdGUg
PT09IC0yKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1
dGluZyIpOworCisgICAgaWYgKHN0YXRlID09PSAtMSkgeworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgdmFsdWUgPSBzZW50VmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTI7ICAvLyBFeGVjdXRpbmcuCisg
ICAgICAgICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJh
dG9yVGhpcywgdGhpcywgc3RhdGUsIHNlbnRWYWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6
UmV0dXJuTW9kZSAqLyAxKTsKKyAgICAgICAgICAgIGlmICh0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9
PT0gLTIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOworICAg
ICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNo
IChlcnJvcikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENv
bXBsZXRlZC4KKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBsZXQgc3RhdGUgPSB0aGlzLkBnZW5lcmF0b3JT
dGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1ZTsKKworICAgIGlmIChz
dGF0ZSA9PT0gLTIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMg
ZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IC0xKQorICAgICAgICB0aHJvdyBleGNl
cHRpb247CisKKyAgICB0cnkgeworICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAg
Ly8gRXhlY3V0aW5nLgorICAgICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwo
dGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgc3RhdGUsIGV4Y2VwdGlvbiwgLyogR2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlICovIDIpOworICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9y
U3RhdGUgPT09IC0yKSB7CisgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOyAgLy8gQ29tcGxldGVkLgorICAg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCAyOTkwZmFlMzU0ODk3OWZlYzdjYTE4NjY5MDkxYmIwNWUyYWM2MmU4Li41ZTZkNTlkZjEy
N2QyYmU3ZDJkMTMyY2QzMzBmM2E3YjhiZjI3Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6
IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAi
LCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2Fs
bCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxs
IiwgImxlbmd0aCIgOiA5IH0sCkBAIC0xMjksNyArMTMxLDkgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAotICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfQorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2Njg0NS4uMzc0MzZj
MDE1NjU0OWU5ZjdjMDFkYzQxYTAyZWUzZGQ4YjVhZmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDggKzcwLDkgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAg
ICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6
IAotICAgIGNhc2Ugb3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBv
cF9jb3B5X3Jlc3Q6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19m
dW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBv
cF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAg
Y2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Miw2ICsxNTQsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6
CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
YXJndW1lbnRzOiB7CkBAIC0yMzMsNiArMjM2LDE0IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNl
IG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjU1
LDYgKzI2Niw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxl
X2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ug
b3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzI3LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBvcF9uZXdf
ZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBv
cF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICs0MDQsMTUgQEAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5tX251bVZh
cnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZChpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRl
Zjk5ZWUuLjNjMTJkYjhhNzZlMzQ4Yjk3NGIwN2E2NDI4M2I5MjM5ZWVlMWRlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjk0LDYgKzEy
OTQsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9m
dW5jIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzExLDYgKzEzMTksMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVk
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYg
KzE1MTUsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3Bv
aW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUi
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0
b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQg
Y29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMTcyMCw2ICsxNzUwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVy
KQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlz
KTsKQEAgLTE4NzUsNiArMTkwNiwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICAgICAgICAgIGRlc3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSkgeworICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5ncm93KGNvdW50KTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2ldID0gdW5saW5r
ZWRDb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gQWxsb2NhdGUgbWV0YWRhdGEgYnVmZmVycyBmb3IgdGhlIGJ5dGVjb2Rl
CkBAIC0zMDQ5LDYgKzMwODYsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5r
TW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hyaW5r
VG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJl
Y2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0
YWJsZXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5k
ZXggYzFkZjE4N2MxMjIwZDJmN2YwMzI0YTJkMjVmOWI4M2MwNTJkODJlYy4uMWEwYjk4ZjBjZGIy
YzE1ZDYwMDJhZmM0OWE0MmFkYmEwM2JkYjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+
CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC0xNDEsNiArMTQyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRl
cnM7IH0KICAgICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsKIAorICAgIGlu
dCBudW1DYWxsZWVSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZVJlZ2lzdGVy
czsgfQorCiAgICAgaW50KiBhZGRyZXNzT2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gJm1fbnVt
UGFyYW1ldGVyczsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1QYXJhbWV0ZXJz
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKTsg
fQogCkBAIC02NTQsNiArNjU3LDEwIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURh
dGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5k
ZXhdOyB9CiAKKyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgor
ICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFzdEJpdFZlY3RvciB2
ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9CisgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGluZGV4KSB7IFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZFtpbmRleF07IH0KKwogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2Fj
aGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
ZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTkwMCw2ICs5MDcs
OCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNp
bXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5n
SnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZh
c3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisKICAgICAgICAgRXZh
bENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdk
NGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4
YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAog
CiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhl
Y3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdl
dCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUo
aW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBz
b3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlw
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoc291cmNlQ29kZUtleSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJj
ZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBz
Y29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJs
ZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclRE
WihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRo
aXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhl
Y3V0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4
dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRy
aWVzKQotICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZh
bFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291
cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAg
ICAgbV9jYWNoZU1hcC5zZXQoc291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRh
YmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAg
ICB9CkBAIC04MCwxNyArODcsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVj
dCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2
YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBj
YW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5
IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAg
ICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2
YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aCgpIAorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJj
ZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgp
CiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VD
b2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwg
U291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hl
TWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2
OWI1MGIxMDJhMTVkLi4zNWJmN2RmYjU5YWE2Zjk4OWE5MzQ1NjkwYzY5OGM2Y2M2ZDgyMjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApA
QCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhl
Y3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCisvLyBGSVhNRTogVGhlc2UgZmxhZ3Ms
IFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSBy
ZW9yZ2FuaXplZC4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBu
ZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlz
Q29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9u
ZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNl
c0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAs
IG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBt
X2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9wYXJz
ZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKKyAgICAgICAgQVNT
RVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcp
KTsKKyAgICAgICAgQVNTRVJUKG1fZ2VuZXJhdG9yVGhpcyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ2VuZXJhdG9yVGhpcykpOwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0FjdGl2YXRpb247IH0KQEAgLTQ4LDggKzU1LDEwIEBAIHN0
cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpcyBn
ZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4o
bV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Fycm93RnVuY3Rpb247IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01
Nyw4ICs2NiwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNT
dHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9y
VGhpcyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6
IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThi
NTc2Li4zYzMxOWQwNmUzOTk3ZWRlZjNkMzI3ODdiOWI5MzcyZmZlMjcxYTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTY1LDEwICs2NSwxMiBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkK
ICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24o
KSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5l
cmF0b3JUaGlzKCkpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uc3VwZXJCaW5kaW5nKCkpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGlu
ZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2Rl
KGluZm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBl
KGNvZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMx
NTZhN2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi5lMWIwOTViNmFkNjUyZTAwODdkOWE1
MzI3MTc1ODE4MGNmNjc2OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJl
c3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYs
NyArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9
CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VN
b2RlOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2Vu
ZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1f
Z2VuZXJhdG9yVGhpcyk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAog
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIyMyw2ICsyMjcsNyBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9jb25zdGFudEJ1ZmZlcnMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNo
cmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDQsNiArMjQ5LDExIEBAIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9
CiAKKyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgorICAgIHNp
emVfdCBudW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6
ZSgpIDogMDsgfQorICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFz
dEJpdFZlY3RvciB2ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9Cisg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGlu
ZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRl
Y2woVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG4pCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBzaXplID0gbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsKQEAgLTM4NywxMiArMzk3LDE0IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAx
OworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmly
c3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKQEAgLTQzNiw2ICs0NDgs
OCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBW
ZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAg
ICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0
aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5
YjYuLmRjNmQ4NjVmODIzNTcxMDZkZWY3ZDRjYTU1M2IyOWQ3NTA3ZmI5OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBACiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIFZN
JiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2Vy
TW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAgVW5saW5r
ZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFy
c2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIEpTUGFy
c2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRh
YmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNl
TW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgJnZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpLCBlcnJvciwgbnVsbHB0cik7CisgICAgICAgICZ2bSwgc291cmNl
LCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxl
LT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRy
KTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQo
KSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAg
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVz
ZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMoKSwgZXhlY3V0YWJsZS0+c3VwZXJC
aW5kaW5nKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMo
KSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcykKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBW
YXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKICAgICA6IEJhc2Uo
KnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5m
ZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtOTksNyArOTksOCBAQCBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2Rl
LT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dG
dW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JUaGlzKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihub2RlLT5zdXBlckJpbmRpbmcoKSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAg
IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7
CkBAIC0xODAsNyArMTgxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9y
KAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENv
ZGVGb3JDYWxsOgpAQCAtMTk2LDcgKzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2lu
ZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAK
LSAgICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1v
ZGUpOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTky
OTNmNDFiYTQyZDljMWY4Li44YjgyNzFhNmMzZjZjYzVkMjE5ZDQ2OWMxM2RlNTYzZjNiM2YyYmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJl
c3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC02NSwxMCArNjYsMTAgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9u
bWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdl
bmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFw
KSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRG
dW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXMsIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC04Miw2ICs4Myw4IEBAIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7
IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVy
YXRvclRoaXMpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1
bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05
NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9ja0ZvcigKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJF
cnJvciYsIGJvb2wpOworICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAK
ICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYs
IEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBHZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwog
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTgsNyArMTYwLDggQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9y
VGhpcyA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI5
MzcwYzhkMjg0YTM4NGYyMWUwZTc4OTI2ODU0NWM5MmIxOTgyM2IuLjhkMWU2YzIyN2FkYmVhODY5
ZDQ1N2ZjMjhhY2JhZjUxYWJlMDc2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpA
QCAtMjI3LDkgKzIyOCwzMyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUoKQogICAgICAgICB9CiAgICAgfQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IGNvZGVCbG9jay0+cGFyc2VNb2RlKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhl
VGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9z
aG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBu
ZWVkc0FyZ3VtZW50cyA9IGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9j
ay0+dXNlc0V2YWwoKTsKKworICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1l
bnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIg
Z2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwor
CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZSAmJiBuZWVkc0FyZ3VtZW50cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3Qg
cHJvdmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24g
cHJvdmlkZXMgImFyZ3VtZW50cyIuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVu
dHMgb2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQu
CisgICAgICAgIC8vIFRvIHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50
cyBhcyBhcmd1bWVudHMgb2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZl
cmVuY2UgaXQgZnJvbSBhIGdlbmVyYXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVu
Y3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVu
Y3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAg
ICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVy
ZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAu
Li4KKyAgICAgICAgLy8gICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAg
IC8vICAgIH0KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7Cisg
ICAgfQorCiAgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVu
Y3Rpb25Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgp
OwogICAgIApAQCAtMjU0LDE0ICsyNzksMzQgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1f
Y2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGlu
aXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5n
IGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlu
cyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JS
ZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVy
LCAmbV9wYXJhbWV0ZXJzWzFdKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvclRoaXMoKSA9PSBHZW5l
cmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlz
UmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBn
ZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ug
d291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcg
YmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mg
c3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAg
ZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5lcmF0b3IoZ2VuZXJh
dG9yU3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5h
bWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9u
TW9kZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5h
bWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJl
cyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0
dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAg
IGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxs
ZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91
bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFy
IiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Np
b25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVu
dmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFr
ZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywg
YW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJp
bmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsg
MSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldElu
ZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
YXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRl
cm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9y
ZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJl
IG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9v
bCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwzNSBAQCBQYXJzZXJF
cnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFy
Z2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0
aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2Vz
VGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6
IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAg
ICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAg
ICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAg
ICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgor
ICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25z
dHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAm
bV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NTIsOCBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rp
b25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAK
ICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6
ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBj
YWxsZWQKQEAgLTc5OSw2ICs4NTgsMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBr
bm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJh
bWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3Bh
cmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZv
ciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
YXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRl
cnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAg
ICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBh
dHRlcm4pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1l
dGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFy
TGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04NTUsNiAr
OTMwLDIxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdUZW1wb3JhcnkoKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0Zhc3RCaXRWZWN0b3IgQnl0ZWNvZGVHZW5lcmF0b3I6
OmxpdmVDYWxsZWVSZWdpc3RlcnMoKQoreworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7Cisg
ICAgRmFzdEJpdFZlY3RvciB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2l6ZShtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVy
SUQmIHJlZyA6IG1fY2FsbGVlUmVnaXN0ZXJzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQo
KSkKKyAgICAgICAgICAgIHZlY3Rvci5zZXQoaSk7CisgICAgICAgICsraTsKKyAgICB9CisgICAg
cmV0dXJuIHZlY3RvcjsKK30KKworCiBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpu
ZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFt
ZSkKIHsKICAgICAvLyBSZWNsYWltIGZyZWUgbGFiZWwgc2NvcGVzLgpAQCAtMjMxMiwxMiArMjQw
MiwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3Rl
cklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0
ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAg
ICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU2MSw2IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBF
bGVtZW50Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50
ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5j
dGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1p
dE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgo
KSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0Owot
fQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3Rl
cklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4
cCk7CkBAIC0yNDkzLDEzICsyNTY5LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0
dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29t
bW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bj
b2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
Q29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAg
IEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3
X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2st
PmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNl
TW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNjAwLDE4IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJh
c2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQog
ewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7
CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSog
ZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQor
ICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRv
clRoaXM6OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAg
IAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5j
X2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwog
ICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1NDAsNiArMjYyOSwxOSBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBk
c3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisg
ICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAg
ICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCkt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJu
IGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1
bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwg
ZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKQEAgLTM3NjYsNiArMzg2OCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7Cisg
ICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Cisg
ICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsK
KyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1
ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlz
T2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVs
KCk7CkBAIC0zODQyLDQgKzM5NjIsMjA4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBpbnQzMl90IGxpdmVDYWxs
ZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAg
IGVtaXRSZXR1cm4oYXJndW1lbnQpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
KyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChs
aXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworCisgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAvLyBSZXR1cm4uCisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCk7CisgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVy
LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsK
KyAgICAgICAgfQorICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAg
ICB9CisKKyAgICAvLyBUaHJvdy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7Cisg
ICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3JtYWwu
CisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91cyA9IG5ld1RlbXBv
cmFyeSgpOworICAgIGVtaXRMb2FkKHByZXZpb3VzLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsK
KyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50KTsK
KyAgICAgICAgICAgIGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBs
b29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gbmV4dEVsZW1lbnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbWl0TG9hZCh2YWx1ZS5n
ZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5leHRFbGVtZW50
LmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAg
ICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGludDMyX3QgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gbV9jb2RlQmxv
Y2stPmFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdpc3RlcnMoKSk7
CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKKyAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRl
eCk7CisgICAgICAgICAgICAgICAgZW1pdFJldHVybih2YWx1ZS5nZXQoKSk7CisKKyAgICAgICAg
ICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRP
cGNvZGUob3BfcmVzdW1lKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1v
ZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1
YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkp
KTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1
ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1l
dGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRl
cmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwg
cmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVy
bkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5
KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5l
d0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3Vs
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93
LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2RO
b3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRo
b2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRo
cm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVND
SUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlM
aXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhv
ZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQo
KSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQu
Z2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBz
dGF0ZSkKK3sKKyAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRlKSkpOworICAgIGVtaXRQdXRC
eUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVBy
aXZhdGVOYW1lLCBjb21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwpOwor
ICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQoreworICAgIGJlZ2luU3dpdGNoKHN0
YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJ
bmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0
Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVt
cFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0
Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGlu
dDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVt
cFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2Vu
ZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMg
YWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAg
ICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAg
ICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAg
ICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChz
d2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzhiNjU5YTMzNjg1YmIzYzcyNjQ3ZGNmYWZiOGQ1
ODIwNDIyYmE4Ni4uZTExMzczYzFjNzQ2YzMyNzk4YjhjNmVjMDZjNjEwN2IyYmVmMzZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBCeXRlY29kZUdlbmVyYXRvcl9o
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkxhYmVsLmgiCkBAIC0yODAsNiArMjgxLDggQEAKIAogICAgICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9
CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KKyAgICAgICAgR2VuZXJhdG9yVGhp
cyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmdlbmVyYXRvclRo
aXMoKTsgfQorICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3Ig
Z2VuZXJhdGUoKTsKIApAQCAtMjk3LDYgKzMwMCw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCog
c2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3Rl
cjsgfQorCiAgICAgICAgIC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSBy
ZWdpc3Rlci4gUmVnaXN0ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSBy
ZXF1aXJlIGEgbW9kaWZpZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAg
ICAvLyByZWdpc3RlciB3aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFi
bGUiLCBtZWFuaW5nIHRoYXQKQEAgLTQ5OSwxMCArNTA0LDggQEAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBs
ZW5ndGgpOyAvLyBzdG9wcyBhdCBmaXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCog
ZHN0LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwg
Q29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAgdm9pZCBl
bWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNv
ZGVJRCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYsNiArNTk5
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JO
ZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJz
VG9Ta2lwKTsKQEAgLTY0NCwxMiArNjQ4LDI0IEBACiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2go
UmVnaXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3
aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2Rl
KiosIExhYmVsKiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAor
ICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqKTsKKyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAg
ICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1sy
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAg
Q29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAg
ICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJv
ZmlsZUhvb2tzOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVy
biBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQor
CisgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2
Nyw2ICs2ODMsOCBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNj
b3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVt
aXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5j
dGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqKTsKKyAg
ICAgICAgRmFzdEJpdFZlY3RvciBsaXZlQ2FsbGVlUmVnaXN0ZXJzKCk7CiAKICAgICBwdWJsaWM6
CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSos
IGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRh
YmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03NTIsMTIgKzc3MCwyMiBAQAogICAgICAgICAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZh
cmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29u
c3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
dHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAg
ICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVy
YXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3Io
KSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6RW1wdHk7
CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIHJldHVybiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3Vy
Y2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRv
clRoaXMsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0
VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5Myw3
IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
UmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVy
SUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3Rl
cklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJh
bWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVm
YXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFy
YW1ldGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCop
PiYgY2FwdHVyZXMpOwogCkBAIC04MDQsNiArODMzLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCog
bV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1l
bnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlW
YWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9i
amVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1Rhcmdl
dFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI3LDYgKzg1Nyw3IEBACiAgICAgICAgIFZlY3Rv
cjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlv
blZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxG
dW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXpl
OwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2OGU1YmJkMGY1Mi4uMWViNDFh
MjM3OWI3MmUwMmRmNTBlZjRmZTliNDA0NjQxYzUxNjhhNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJM
YWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQK
IAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEsMTYg
QEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQq
IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0
YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJ
bmRleChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVO
YW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmpl
Y3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0Lmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAg
LTI1ODMsNyArMjU4OCwxMiBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwogCi0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9k
ZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBq
c1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBu
dWxscHRyOworICAgIGlmIChtX3ZhbHVlKQorICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVk
KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQo
KSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7
CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Niw5
NiBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJv
bEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhE
aWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRM
aW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3Is
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0
dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0
YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwor
ICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAg
ICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0
YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSog
ZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVu
Y0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nh
c3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5l
eHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJp
bmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3Ip
OworICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBo
b21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJu
IHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUg
YmxvY2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxv
Y2soKSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0
YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsK
LSAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2Nr
LT5pc1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxS
ZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0
b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8v
IEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3Ig
Y2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGlu
c3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVy
bk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9m
aWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBl
eHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1
c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3Rh
dGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0
RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBu
b3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90
IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgp
ID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9k
eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1
YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwor
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdp
c3RlcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJh
dG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdl
bmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExh
YmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiBy
ZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50
IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAg
ICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkg
eworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0
aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxv
Y2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNf
Y2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNl
cnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAg
ICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwOTMsMjQg
QEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5n
IEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3Iu
ZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7
CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcg
PSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJn
ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7
CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0
aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4
IDIwN2UwYjMzZTk4MjM5ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIwMGE5
MjAyNDYyYzAwOTgyYmI0MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgK
QEAgLTk2LDYgKzk2LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZh
c3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9
IDE2OwogCisgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIpOwor
CiAgICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCBp
c01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChj
b25zdCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRl
eCBmNGFjZjI1ZTYwZTE4OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5iOGY3ZDc2ZmZmY2Qw
MDA2NGU4ZGVjYjY1MWM5YWZhY2FiY2I3N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTcwLDYgKzcwLDM2IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFw
KGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAoraW5s
aW5lIGJvb2wgSGVhcDo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghcCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxvbmdpbmcgTWFya2Vk
QmxvY2sgYW5kIGZpbHRlciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4KKyAgICBUaW55Qmxv
b21GaWx0ZXIgZmlsdGVyID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAgICBN
YXJrZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHApOworICAgIGlm
IChmaWx0ZXIucnVsZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7Cisg
ICAgICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgp
LmNvbnRhaW5zKGNhbmRpZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gVGVzdCB0aGF0IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJZiBub3QsIHRoaXMg
cG9pbnRlciBpcyBub3QgcG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAoIU1h
cmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBUZXN0IHRoYXQgdGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1YWxs
eSBhbGxvY2F0ZWQgaW4gVk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQg
dGhlIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4KKyAgICBpZiAoIW1f
b2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHBvaW50ZXIgY2FuIGJlIHVzZWQgYXMgb25lIG9m
IGNlbGxzLiBOb3QgcG9pbnRpbmcgdG8gbWV0YWRhdGEsIG9yIG1pZGRsZSBvZiBjZWxscy4KKyAg
ICBpZiAoIWNhbmRpZGF0ZS0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBUaGUgY2VsbCBwb2ludGVyIGlzIG5vdCB6YXBwZWQuIEl0IG1lYW5zIHRoaXMgY2VsbCBp
cyBhY3R1YWxseSB1c2VkLgorICAgIHJldHVybiAhcmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0Nl
bGwqPihwKS0+aXNaYXBwZWQoKTsKK30KKwogaW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlKGNvbnN0
IHZvaWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+
aXNMaXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNl
OGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBACiAgICAgICAgIGJvb2wgdGVz
dEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpT
Q2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOworICAgICAgICBi
b29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lk
Kik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwpAQCAtMzg4LDcgKzM4
OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlubGluZSBib29sIE1h
cmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChN
YXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVy
ID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBG
aWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAg
ICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAg
IHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uZDE4
NTA0MjBhYmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUz
LDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayog
Y2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUq
IGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZh
bEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlH
ZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVy
U2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJs
b2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworCisgICAgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAo
Y2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlz
Q2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
PmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgdGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3Bl
Q2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxl
ZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQo
IWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdh
eXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2Fs
bGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNv
ZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHBy
b2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29k
ZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9j
aywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNv
ZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggYTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4uOTViYWIwNGQyM2E4
ZWJlOTVjY2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAgICAgREVGSU5FX09QKG9wX2No
ZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09Q
KG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9P
UChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVu
Y19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAg
IERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3Qp
CiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2
NzdlNzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NvcHlfcmVzdChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3Vt
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhw
KEluc3RydWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0Umln
aHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1p
dFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmND
b21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24o
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJl
KGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWdu
ZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
ZDQ5NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1
ZjBmMmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3Jl
Z2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2Nv
ZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRM
b2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5k
aWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50
SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMp
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25l
d19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2Vu
ZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
KyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24p
OworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4
LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVn
VDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRv
bmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhw
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHBy
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7
CkBAIC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2
OGEwZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3
MjNmNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4
OCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0
aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4
ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1
dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBl
OjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhl
Y3V0YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxl
KQogewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JG
dW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4g
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRp
YyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlz
SW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMo
RnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1
dGFibGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3Bl
cmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQog
ICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihl
eGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJl
dHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYx
NDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2
YjBiMDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcyYzczYjRlZWQ2
M2UzYjIwOGM1Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3NDk2YmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA0
MSw2ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3Bl
cmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVU
eXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8
IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNo
ZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xP
V19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNl
bmRpZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNv
ZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAg
ICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkp
OwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tl
ZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJh
bmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1
MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRh
YjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
ZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0
cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFiNWIyMGQ5N2NhZjAz
My4uMzY4ZDA4NzUyYTdjZmI3YWRjYWRkZTZmMGMzZTc5MWI1ZmNlNDIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTIyNyw2ICsxMjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQog
CiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAg
ICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0
NTgsNiArMTQ2NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxp
bnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAg
ICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3df
ZnVuY19leHApCkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBk
aXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWNjMjE2MmU4ZGYxMjQ5ZjU5N2Y4NmY1
MjJiNzBlMWU5NjA5YmUwMC4uMmI4NGNiYWYzN2VmMDQ2MGJkYjkxNmQyYmJkYWMwMmUwZDJiNGQ3
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5
ICszNDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICov
IGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wg
ZGVsZWdhdGUpCisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRl
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0
ZSk7CisgICAgICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlp
ZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlh
YmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1
Y3RvciwKQEAgLTM2NCwxMiArMzY2LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAK
LSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAg
ICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1
cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlv
bkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rp
b25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC04ODYsNiArODg4LDkgQEAgY2xh
c3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBub2RlLT5zZXRTdGFydE9mZnNldChvZmZz
ZXQpOwogICAgIH0KKworCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNB
cmd1bWVudHMoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU2NvcGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYz
MmM5ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5Mzg1ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3
OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1
MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAg
ICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1
bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEg
QEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBh
cmFtZXRlckNvdW50KQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9p
c0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmlu
ZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAg
ICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9p
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKIHsKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCAwYWEzMTFkYzExZDdmOGE4YjAxZmVjN2U0NGJkZTIxZmE1Nzhl
ZWNlLi4wYmYwMGI3YmU5MzdmNzk3OGE0NTYzNzNmYWRlMzFmNWM3NWY5ZDdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODE3LDcgKzE4MTcsNyBAQAogICAgICAgICAg
ICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsx
ODQyLDggQEAKIAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgICAgICBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1
cGVyQmluZGluZyk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fy
cm93RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAog
ICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5l
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY5LDggKzE4Njks
OCBAQAogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAg
ICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7
CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlz
QXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
fTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAg
ICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBh
cmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQxNDk4MjZjMzc5ZTQyY2Y1OWNlNTJhLi5i
ZjM3NzhlMzNiNjZiMTI4NDM2OGY3NmY0NTVkNTIyODNkMzA4ODkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5N
b2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3Ry
dWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2Rl
KQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEw
LDcgQEAKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VF
bGVtZW50cygwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5n
KQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQp
CiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNURFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBA
QAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBp
ZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0
aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25Q
YXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAg
ICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0y
NzMsOCArMjc3LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dG
dW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBz
b3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VN
b2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFy
c2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTMwMSw3ICszMDksMTQgQEAKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRW
YXJpYWJsZXMoKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAg
ICAgICAgIHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLSAg
ICAKKworICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICBzY29wZS0+Z2V0VXNl
ZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFi
bGVzLmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAg
ICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3Bl
LT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpA
QCAtMzExLDEwICszMjYsMTAgQEAKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0
ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykKICAgICAgICAgZmVhdHVyZXMg
fD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGlu
KSB7Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUt
PmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxvdyBidWlsdGlucyB0byB1c2Ug
bGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUg
OiB1c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzMs
NDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNv
dXJjZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250
ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdv
cmRTdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFy
dFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwor
ICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNl
dDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zm
c2V0OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGlu
Zm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZv
LnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGlu
Zm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBz
dGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVy
YXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlT
Y29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7
CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nh
c3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBw
YXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0
b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0K
KyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAg
ICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9r
ZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1u
OworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihz
dGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RU
b2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJj
ZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJ
dGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1
bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBp
cyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQzLDE0IEBACiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rp
b25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVp
bGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQg
c3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJv
ZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCks
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwg
cGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYyLDcgQEAKICAgICBlbHNlCiAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hl
Y2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9k
eSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3OCw4IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAi
Z2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1OCwzNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisK
KyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUp
OworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNl
UGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+
JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9u
VHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsK
QEAgLTE4MTMsMTIgKzE4OTksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAg
ICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENv
bHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJ
bmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNv
dW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2Rl
LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJh
bWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21T
b3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyAr
MTkxNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5t
X2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVk
SW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikK
KyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkK
ICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4
cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJv
ZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM4LDMzIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAg
ICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJz
ZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5
ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmlu
ZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2Rl
KTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291
cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1
bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAg
ICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAg
ICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3Vw
ZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVy
YXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNz
Iik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZv
LmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVT
dGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5u
b3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkp
OwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5j
dXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYg
ZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUt
PmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIp
OwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAg
LTE5MjksNyArMjAzMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VO
RVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9k
ZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFp
bElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2
ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAg
ICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3Rv
ciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBk
ZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsK
ICAgICAgICAgICAgIH0KQEAgLTI3MzEsNyArMjgzNCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewog
ICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmllcih0aGlzKTsKIAogI2lmIEVO
QUJMRShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlFTEQpKQorICAgIGlmIChtYXRj
aChZSUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVy
YXRvcigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOwog
I2VuZGlmCiAKQEAgLTI4MzYsNiArMjkzOSw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZh
aWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJh
bWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7
CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBK
U1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNT
RVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDcsMTQgQEAgc3RydWN0IExhYmVs
SW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAog
ICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBh
cmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24g
YXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICgh
YXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50
LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFy
Z3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5k
UG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0zMDQx
LDcgKzMxNDYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2Vu
VHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJz
ZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0
aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUg
PSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRo
b2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTksNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7
CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAg
ICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAg
ICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNl
bmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlv
bk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2Ug
ZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
RXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcy
NTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25C
b3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAg
ICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAg
ICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29w
ZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRh
cnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9k
ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAg
ICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgo
cmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9k
dWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAg
ICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBz
ZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29s
IGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5
OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7
IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVu
dHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBt
X2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29w
ZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAg
ICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFy
aWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBw
dHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsr
cHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFi
bGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29u
dGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwp
IHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50
cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAg
ICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVz
dGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1f
dXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBi
ZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5l
ciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkg
aW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVu
dHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rp
b25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAg
ICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAg
ICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxl
IGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwx
NCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24g
PSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1f
aGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAg
ICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0
b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1f
aXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQog
ICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0g
dHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lk
IHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJv
b2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6
IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJn
dW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7
CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFy
c2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
LCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBT
b3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2Rl
ID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1
MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNl
RWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVt
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZp
ZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAg
ICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0x
MTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0
cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBw
YXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVy
KiBtZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJv
b2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3Rh
cnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25C
b2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFy
c2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUg
VHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZv
cm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5z
aWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29u
dGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVC
dWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFz
dFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9u
JiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYg
aW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBv
cnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEy
MTUsNiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5F
VkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3Vy
Y2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEz
NjMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBt
X2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAg
ICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGlu
ZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRo
aXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRl
Y2xhcmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAg
ICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xh
c3MgUGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlz
TnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7
Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlz
VERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFt
ZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4
LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwg
c291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcs
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBu
YW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
aW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5Njdl
M2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3Vy
Y2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2Rl
LAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRl
ck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNG
dW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBA
QCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGlu
ZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMy
ZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAor
I2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENv
ZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUg
fTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2Rl
S2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29k
ZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQor
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5N
b2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0
ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8v
IHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisg
ICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygp
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAg
ICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxh
Z3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFt
ZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7
CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFp
dHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1
cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNl
Q29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZk
MWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBT
eW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Np
b24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNz
aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29s
KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0
LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
Ym9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50
LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNS
ZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBp
bnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQo
aW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwog
cHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9r
ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBm
MTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi4yYTI0NDJmYWE2ZWVhODE4
Mjg0NWZmYjE3YjIxYTJiOTkzODRjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUq
IGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJv
b3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVs
bHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290
Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVG
cm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFy
c2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8g
Z2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2Vu
ZXJhdG9yVGhpczo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4
ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmlu
Zygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXks
IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDhj
OGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4uOWI4YzE1MGRlMjBiODUzM2Ix
ZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2lu
Y2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTU2LDcxICs1Nyw2IEBACiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJv
dmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5
cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9Owot
Ci0gICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXko
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlw
ZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhp
c1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNv
ZGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9mbGFncygKLSAgICAgICAg
ICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMpCi0gICAgICAgICAgICB8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpCi0gICAgICAgICAgICB8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkKLSAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAgICAgICAgLCBtX2hhc2goc3Ry
aW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXko
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fc291cmNlQ29kZShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1
dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKLSAgICAv
LyBwcm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50Lgot
ICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmco
KTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKLSAgICAg
ICAgICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0gICAgICAgICAgICAmJiBtX2Zs
YWdzID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25h
bWUKLSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0cmluZygpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKLSAgICBTdHJpbmcgbV9uYW1l
OwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQgbV9oYXNoOwotfTsKLQotc3Ry
dWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBT
b3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7
IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJh
aXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJv
b2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0
dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0cnVjdCBTb3VyY2VDb2RlVmFs
dWUgewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4
ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4
MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAg
ICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdl
bmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRs
KSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVp
bnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2
NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4
dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJh
bWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRo
aXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0OTY0ZDQ0OTY0MzkxLi40NTZk
Yjc5MDIwMmRjMzlmZDE3ZmVjMzFlM2NhNDA0MTljY2U4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwzOCBAQCBzdGF0aWMg
Q29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYg
dm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJl
Z2lzdGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4K
KyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5l
cmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9u
IGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBn
ZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0g
bnVsbHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisgICAgaWYgKCF2YWx1
ZS5pc051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1
ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNp
YWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBi
ZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZnJhbWUg
PSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+
bnVtQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5l
cmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0
KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJh
dG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRl
eCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4
KSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7
CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsK
KyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5l
cmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKSk7CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2Fs
bGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsKKyAgICBFTkQo
KTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdmM2NjNGYxZjM3ZTYw
ZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0y
OTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1
YjRmNTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRhODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMs
NyBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJu
ICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOwor
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBj
aGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxN
b2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2Rl
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3Jh
bU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0
MGQzMjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5
LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9y
KAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAg
ICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9j
a0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7
CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRh
YmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwog
ICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9y
LmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
aW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uODhhMjRhZDZj
YWIyZDYyMDUyMTA0ZjAxMzAyZWRlMDIyYTQ0ZDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNl
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6
Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAg
IERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFs
c2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlz
OjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNl
OwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAg
ICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQo
KTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7
IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwx
MiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0
aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsg
fQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0
b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlm
aWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJy
ZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50
KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9Cisg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEw
MGNhYmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVlYTE0Yjk2MjZhNWExNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVD
TUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9u
TmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRp
b24sIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2Fn
ZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBv
c2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwg
cG9zaXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAogICAgIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAotICAg
IGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCisg
ICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwg
Ym9vbCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBp
cyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmlu
ZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9IG1h
a2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19
Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgKGlzR2VuZXJh
dG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAg
ICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJp
bmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1
bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwor
ICAgICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVD
TUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Ms
IGJvb2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3Ry
aW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBjb25z
dHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigp
LCBpc0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDIyZWNi
NTdiOTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRjZDIwYjc2MzFjMTc5ZmRl
MDJhYTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBjbGFzcyBG
dW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
QXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVjdCogY29uc3RydWN0
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CitK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBib29sIGlzR2VuZXJhdG9y
ID0gZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAK
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RG
OjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEpOworICAgIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJl
ciA9IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlZWM2NDdkNDZmOGEyZTdmY2ZiOGQzZjIxZDdhZDNhMjg4N2E4NGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
R2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9y
RnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0
ZXJzKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgLCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKQor
eworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsgKytpKQorICAgICAgICByZWdpc3RlckF0KGkpLmNs
ZWFyKCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0dl
bmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJl
ck9mUmVnaXN0ZXJzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQorICAgICAgICBu
ZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5l
cmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMobnVtYmVyT2ZS
ZWdpc3RlcnMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mUmVnaXN0ZXJz
KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHNhdmUgY2Fs
bGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAo
b3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIEFTU0VSVChs
aXZlQ2FsbGVlUmVnaXN0ZXJzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJz
KTsKKyAgICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRl
eCkgeworICAgICAgICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAgICAgLy8gU2luY2UgQyBz
dGFjayBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29ycmVjdCB2YWx1ZSBmb3Ig
YSBqcyB2YWx1ZSBtYXkgZXhpc3QKKyAgICAgICAgLy8gaW4gYSBub24taW5pdGlhbGl6ZWQgKGJ1
dCBhbGxvY2F0ZWQpIEpTIHJlZ2lzdGVyLgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgZXhh
bXBsZSwKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWdp
c3RlckEgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgLy8gICAgIC4uLgorICAgICAgICAvLwor
ICAgICAgICAvLyBJbiB0aGUgYWJvdmUgY2FzZSwgcmVnaXN0ZXJBIGlzIGFsbG9jYXRlZC4gQnV0
IGl0cyBjb250ZW50IG1heSBub3QgYmUgY29ycmVjdCBqcyB2YWx1ZS4KKyAgICAgICAgLy8gQXMg
YSByZXN1bHQsIEpTQ2VsbCBwb2ludGluZyB0byB0aGUgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24g
bWF5IGV4aXN0LgorICAgICAgICAvLyBQZXJmb3JtaW5nIGEgd3JpdGUgYmFycmllciAoJiBTbG90
VmlzaXRvcidzIG1hcmtpbmcpIG9uIHRoZXNlIGluY29ycmVjdCBjZWxscyBjYXVzZXMgaW52YWxp
ZCBkZXJlZmVyZW5jZXMuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSB0
ZXN0IGEgZ2l2ZW4gY2VsbCBsaWtlIHBvaW50ZXIgaXMgdHJ1bHkgY2VsbC4KKyAgICAgICAgaWYg
KHJhd1ZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnZtKCkuaGVhcC5p
c0xpdmVDZWxsKHJhd1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9uLWNlbGwgdmFsdWUgbWF5
IGJlIHN0b3JlZC4gKGUuZy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQgdGFnIGluIDMyYml0IGVu
dmlyb25tZW50KS4KKyAgICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJlIG5vdCByZWNvZ25pemVk
IGFzIGEgY2VsbCwgd3JpdGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5vdCBjYXVzZSBhbnkgcHJv
YmxlbXMuCisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBy
YXdWYWx1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7
CisgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1l
IGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJl
IHJlcGxhY2VkLgorICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpKSA9IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOworICAgICAgICByZWdpc3Rl
ckF0KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
R2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxs
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIC8v
IFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBj
YW4gc2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0
LT5yZWdpc3RlcnMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjljZjI2MmM3OTVhYTQ1ODdj
NTU0YjBiOTFhMWZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAor
CisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7
CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQg
Y2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21w
aWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYs
IHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiByZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSAr
IG9mZnNldE9mUmVnaXN0ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIHJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3Rl
cnMoKVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlJlZ2lzdGVy
cygpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIoc2l6ZV90IGluZGV4KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBpbmRleCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemVGb3JSZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMpCisgICAg
eworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51bWJlck9mUmVnaXN0ZXJz
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHBy
b3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisKK3ByaXZhdGU6CisgICAg
R2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisg
ICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0
b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3Y2QzZWQw
MjViZWE5MjdmNjA1MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsK
KworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4
ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywg
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3Ms
IC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQor
eworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcy
M2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAor
I2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVy
bmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsK
KworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwor
ICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlOGYyZTMxYmQzMTFiOTJl
NDI3NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdC
dWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19p
bmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3
NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
cHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFk
NDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90
eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclBy
b3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24g
MQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cg
ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdl
bmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7
CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5l
cmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVy
YXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5l
cmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAg
R2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90
eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JUaGlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjlhNmUwOTVjMzJhYWRjNTQ0NmEzNTVkODE3NWE5NTlkZDQ4NGNmOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRo
aXMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJh
dG9yVGhpc19oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3BhY2UgSlNDIHsKKwor
Ly8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rp
b25hbGxvY2F0ZQorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0
LW5ld3RhcmdldAorLy8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwg
aXRzIFtbQ29uc3RydWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVh
bnMgdGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4
ZWN1dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhl
IGZvbGxvd2luZywKKy8vCisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAg
ICAgIHlpZWxkIHRoaXMKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcg
PSBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAg
ICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9
IG5ldyBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChh
bmQgaXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQor
Ly8KKy8vIFRoZSBmb2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJh
dG9yRnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybmVzIGEgR2Vu
ZXJhdG9yIHRoYXQgZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXM6OkVtcHR5IGZsYWcuCisvLyBJ
biB0aGlzIGNhc2UsIHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9y
IG9jY3Vycy4KK2VudW0gY2xhc3MgR2VuZXJhdG9yVGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0
eSwKKyAgICBOb25FbXB0eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVk
ZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2
OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09i
amVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclBy
b3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVj
dCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250
RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQo
dm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlv
bikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBC
YXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dl
bmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBn
ZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdl
bmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAg
IGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0
b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQor
eworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3
ZGVlN2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5j
dGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVO
QUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNz
IFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBj
bGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUg
PSAwLAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAg
IH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMg
SlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAh
aW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rp
b24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rp
b25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7
CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2Vu
ZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJhYWRhZjc0MDJhNzdi
YzBmNTkuLjc2MjJiYjkyYTE5MTUxMWQ4MzA0ZWEwYjFkMDBiMzg5ODdlYmM4NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUw
LDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUs
NyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0
LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAg
IEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVf
Rk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0
b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9G
T1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTEgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0
ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVy
cm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlz
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAg
ICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwog
ICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVu
dW0pOwpAQCAtODE4LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAsNiArODYyLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJv
bE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2
Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzli
Y2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwog
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFz
cyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsK
IGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0
Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3Rv
dHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBl
PiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+
IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmll
cjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
b2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRl
cmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
OyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQo
KTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSog
ZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhh
NTBkOTdhMWUwYjc3YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1
NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5v
ZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVj
YWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3Mu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4
ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBl
U3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVE
YXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMs
IEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBjZWQzMTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3
YTg5YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5k
ZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0
YzdmZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbApAQCAtNzE5LDcgKzcxOSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFz
c2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0g
cGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3Rh
bmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVz
LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9k
c19BcnJheS5mcm9tX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcg
KzcyNyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0
ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5
X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5j
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJp
Y19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0
YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJs
ZXMuanMKQEAgLTc1Myw3ICs3NTMsNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0
ZWRfcmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVy
aW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJp
Y19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0
dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3
NjMsNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93
LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhf
Z2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJs
ZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0
aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMyw1NSArODAzLDU1IEBA
CiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5q
cwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9y
UHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUl
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
JUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFs
aXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Nv
bXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRo
YW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5n
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVf
c3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0
ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdf
dmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2Ff
cnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9y
X3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzEx
MDUsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFu
ZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9h
cnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5f
Y2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3Bl
cmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVy
aWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFh
NWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdi
OWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmlu
ZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVP
YmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBl
b2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJu
IHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGgg
PD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6
IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJv
bC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVy
YWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9u
ICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3Rh
bmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYy
OWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVz
LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykg
ewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0
KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5
bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsK
K30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAg
fTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRo
b2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRl
cmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7
Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdl
bmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5n
LmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMx
N2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlw
ZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVu
Y3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBt
ZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJv
bC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0
b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hp
ZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2Rz
WydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJs
ZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBp
dGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2
YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0
ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYy
MDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5Mzgy
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09
PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0
ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307
CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7
CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4
dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBh
cnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAor
ICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVy
YWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9City
ZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2FlZThkZjhiY2IxNjliNzU1NTY5ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFy
Z3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIHNob3Vs
ZEJlKGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAg
c2hvdWxkQmUoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgcHJpbnQoSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7CisgICAgICAgICAgICB0
aHJvdyBlOworICAgICAgICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uICpnZW4oYSwgYiwgYykK
K3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7
CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0gZ2VuKDEsIDIsIDMpOwor
bGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcy
OTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhh
Y3R1YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBj
KQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxk
IGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIx
IjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjQyfWApOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7Cisg
ICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgewor
ICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOwor
ICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAg
ICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIp
LnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgICJ1
c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZh
ciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0
aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQor
ICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0
MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVl
KSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1l
dGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdk
ZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4
IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7CisgICAgICAgIGV2
YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgaW5z
dGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVy
cm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4
RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkg
eworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiAr
IFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4RXJyb3IoYAorY2xhc3MgQ29jb2Egewor
ICAgICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0KK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJy5gKTsKKwordGVzdFN5
bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQy
OworICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICBzdGF0
aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3Mt
bWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFm
OWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAgLTAsMCArMSw2MiBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworY2xhc3MgQSB7CisgICAg
KmdlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOwor
ICAgICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAgc3RhdGljICpzdGF0aWNHZW4oKQorICAg
IHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0
dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgbGV0IGcgPSBh
LmdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYSA9IG5ldyBB
KCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBhLmdlbigp
OworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFs
dWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQgZyA9IEEuc3RhdGljR2Vu
KCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICB9LCBgVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IEEuc3RhdGlj
R2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNi
NzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCAr
MSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4o
KSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9IG5ldyBnZW4oKTsKK3No
b3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBCIHsg
fQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhpcycpOworICAgIGV2YWwoJ3RoaXMnKTsK
K30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgewor
ICAgICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkg
PT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5p
bml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAgKmdlbmVyYXRvcigpCisg
ICAgeworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJh
dG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCknKWApOworCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0
cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhk
ZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0w
LDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRo
aXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRl
ZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICoo
KSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzczNmM0MjM0ZTE4Nzkx
MGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAg
KzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAg
ICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9IG9rKCk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4OThlNTkwOWFiYWYzODViZjIwODk5MzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCArMSwxMiBAQAorZnVu
Y3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigiTkciKTsKK30KKwor
ZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwordmFyIGcgPSBnZW4o
KTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4
YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAgLTAsMCArMSw2NyBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewor
ICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAg
dHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JU
aHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JU
aHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChT
dHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGdsb2JhbCA9IG5ldyBG
dW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBs
ZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsK
KyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVu
Y2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0K
KyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2Vu
LmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlz
T2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpn
ZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3
IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQo
KTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7
fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZv
cmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NmNiNGY5N2Vl
MTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3Qt
Y2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAg
dGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJl
YWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0gbmV3IEVycm9yKCJP
SyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3coZXJyb3IpOworfSBj
YXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9PSBlcnJvcikKKyAg
ICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5l
dy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQor
eworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdlbigpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0
aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICByZXR1
cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KCks
IGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgewor
ICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBl
eHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1
cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQoKTsKKyAgICB9LCBg
U3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAg
ICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0
ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigp
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZEJl
KGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7
CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBh
LmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9y
IChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CmluZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIwZWQ1NjY4OGE2YTI5OGMuLjk4ZmZmNWNm
NzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgK
QEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG4gPSBhcnJheUxlbmd0
aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKSB7CkBAIC0xOTUs
NyArMTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5k
ZXggNDIxOTQxZjNhNDRhYzZkYzVkOWI2N2ZkMmNkZDg2ZjEyMDEzYzY0OC4uZjQ2ZTExOTczZTUy
NGNhNDI4NTZiMGQ3NjgzNzllMWE5ZjQ1OTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBA
IC0zNjQsNyArMzY0LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9DTEFT
U19TWU5UQVgpCi0jZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAwCisjZGVmaW5lIEVOQUJM
RV9FUzZfR0VORVJBVE9SUyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZfTU9E
VUxFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdm
NDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
KysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5B
QkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9F
UzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VO
RVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2
NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpA
QCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVf
RVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9H
RU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFU
T1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFM
X1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRh
NjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBA
IEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0g
RU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
ID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2
X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxF
X0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9
IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggOWNkODQ2
NWMwOWM5ZjE3ODYwNGM5YWIyOTI1YTcwYWI0N2M2M2UzYy4uMDJjYzc5OGIyMGJkNmU0NjI2M2Jl
MzlkOTAxYThmZTk0Y2I5ZWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTM0LDcgKzM0LDcg
QEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTiBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0RJUkVDVE9SWV9VUExPQUQgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQT1JUIFBVQkxJQyBPTikK
LVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfR0VORVJBVE9SUyBQ
VUJMSUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9H
RU5FUkFUT1JTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9FUzZfTU9EVUxFUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCBQVUJMSUMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMRV9TWVNURU0gUFVCTElDIE9G
RikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBkOTYyMjRkNDE3MWJkYmE3MTcwYzQ1
ZDNkZDcyMTc1NDc3MTJmNTBkLi4wMGVkYmMwMTNiZmY2NmY3YTAzZmRkMjliNjMxZjQ2MjUwYmUy
NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw3ICs3Nyw3IEBAIG1hY3Jv
KFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMiAiU3VwcG9ydCBFTUUgdjIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggIlRvZ2dsZSBF
UzYgYXJyb3cgZnVuY3Rpb24gc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggIlRvZ2dsZSBFUzYgY2xhc3Mg
c3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0VTNl9HRU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTICJU
b2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfRVM2X01PRFVMRVMgIlRvZ2dsZSBFUzYgbW9kdWxlcyBzdXBwb3J0
IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYICJUb2dnbGUgRVM2IHRlbXBsYXRlIGxpdGVyYWwgc3ludGF4IHN1
cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTFRF
UlNfTEVWRUxfMiAiVG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBSSVZBVEUgT0ZGKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQyZGIy
Mjg3NzllMThhNTllODUwMzcxYjY1ZmMyM2VmNWJiMmRkOWQuLjZhMDgxNDM1YTJmYmZiNjg2MDkx
NGNjNWYyZWU0ZmI3YjJlN2NmYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJ
bnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZl
YXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTExLTIyICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgcnVuLXdlYmtpdC10ZXN0czog
aHR0cCBzZXJ2ZXIgZm9yIGltcG9ydGVkIFczQyB0ZXN0cyBkb2Vzbid0IHdvcmsgd2l0aCAtLWxh
eW91dC10ZXN0cy1kaXJlY3Rvcnkgc3dpdGNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5ZDIzM2Q2OTFjNmI4OS4u
NDYyMTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3IEBAIEJFR0lOCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVmYXVsdCA9PiAxLCB2YWx1
ZSA9PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2VuZXJhdG9ycyIsIGRl
c2MgPT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGdlbmVyYXRv
cnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRl
ZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVsZXMgc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDc5YTZiY2Y2NzU0ZTBmMTUxM2VkNjhlMTRhOGIwOTAxODIyNDQ4YWEuLjBkN2RlNGVi
MDhjOWYwZTM0OTUxM2M5MWUwNjZjNmNkZDViZTFiNzkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMiAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJ
bnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZl
YXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dl
YktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIE5FVFdPUktfUFJPQ0VTUyBj
b21waWxlIGZsYWcKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJL
aXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJhMWZhMDgzYjkzMjI5
N2MyN2M0MjgwYjUuLmE2MjMzN2I3M2ZkNmM4OTc3MmM2Y2ZhMDE2NjhmODIxYTMzMGU4YTEgMTAw
NjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9C
YXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVy
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTExLTA1ICBOaWtvcyBB
bmRyb25pa29zICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1Pgog
CiAgICAgICAgIEFkZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3MgZm9yIGVuYWJsaW5n
IFdlYiBBbmltYXRpb25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJp
ZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJp
ZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4Zjdl
ZTUyMWUwNGY5ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMw
NWQxNjZiZjVlNzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VT
Nl9HRU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dF
TkVSQVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVT
IC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJp
ZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExp
YnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4
IDkxZWU4MGZkZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2
MWI3Y2VjNmFjNWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExp
YnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0z
Miw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8
L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMiAvPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VT
Nl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JT
PgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVf
RVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266078</attachid>
            <date>2015-11-22 22:43:15 -0800</date>
            <delta_ts>2015-11-23 00:36:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123154259.patch</filename>
            <type>text/plain</type>
            <size>296081</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi40ZTIwYzgwMWRjZTNhNmNk
YmQ3ODhlYmE5NWIxNmIwNzcyMWMzMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDM0IEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAg
ICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5n
IGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZl
L3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jpbmcg
aW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0g
dG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50
cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2Vz
IGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBm
b2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JTdGF0
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxldGVkOgorICAgICAgICAgICAgICAgICAg
ICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAg
ICAgICAgICAgIGNhc2UgRXhlY3V0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgLi4uOworCisgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICAgICAgb3Bf
c2F2ZShZaWVsZF8wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8wOgorICAgICAgICAgICAgICAgICAgICAgICAg
b3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3Vt
ZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1cm4p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
b3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBZaWVsZF8xOgorICAgICAgICAgICAgICAgICAgICAg
ICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJl
c3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBSZXR1
cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIC4u
LiBjb21wbGV0ZSBzZXF1ZW5jZSAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5jZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVy
IHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxp
dmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRvckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBh
bmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3Rl
cnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAgIEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZp
bGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4KKyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0
ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQg
aW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxsIGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5
LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJlc3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdl
IGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVycy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJz
IHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVyYXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VT
Y3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAg
ICAocmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2
YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OmVtaXRTdXBlckJhc2VG
b3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ollp
ZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc0xpdmVDZWxs
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc0F0b20pOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbCk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFs
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0
YSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0
YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJh
dGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6U2Nv
cGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xsZWN0
RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1v
ZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6Omlz
UHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVLZXkuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBwYXJz
ZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVZ
aWVsZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAg
ICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6
aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4
KToKKyAgICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0Zvcik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6cmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnJlZ2lzdGVyQXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZSZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvclJlZ2lz
dGVycyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6Okdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJh
dG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXMuaDogQWRkZWQu
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6
SlNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZUltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQp
OgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRl
SXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgor
ICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRl
cmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAo
aXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmpl
Y3QpOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZ192aWFfdGhyb3cuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAg
KGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1
bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50
cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnMSk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0U3ludGF4KToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvcik6CisgICAg
ICAgICh0ZXN0U3ludGF4RXJyb3IuQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5w
cm90b3R5cGUub2spOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYSk6CisgICAgICAgICh0ZXN0
U3ludGF4LkNvY29hLm9rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNz
LW1ldGhvZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocHJvdG90
eXBlLmdlbik6CisgICAgICAgIChzdGF0aWNHZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChC
KToKKyAgICAgICAgKEEpOgorICAgICAgICAoQy5wcm90b3R5cGUuZ2VuZXJhdG9yKToKKyAgICAg
ICAgKEMpOgorICAgICAgICAoVHlwZUVycm9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChvayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFi
bGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRo
aXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQu
CisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoQi5wcm90b3R5cGUuZ2VuKToKKyAg
ICAgICAgKEIpOgorICAgICAgICAoQS5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKEEpOgorCiA9
PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MGE1Nzk0YzA2
ZjRmYWIwOWZmMDNhNjQxNzgwZTNmMjZhYzNhZDhkLi4xN2I3ZTE1N2YwYzZjNjljN2M0ODY1YWEw
MDc2NzMyMmFkNjcxZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTExLTIyICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRo
aXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpm
b3JFYWNoU2V0Qml0KToKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNS0x
MS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
QVNTRVJUSU9OIEZBSUxFRDogdGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpID09ICcvJyBpbiBXZWJD
b3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMWEyM2UyMjhlN2RkYzBj
OGJkMGJlMDFmNTA2NzAwZDc2YzljMS4uMjc5YmU3YmJiYWE2MDE3YTI2NmViNWU4NjU2ZmI4M2My
YzY2NzZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTIyICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRo
aXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0y
MiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZv
bnQgc2VsZWN0aW9uIHNob3VsZCBub3QgY29uc3VsdCBmb250LXZhcmlhbnQgcHJvcGVydHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCAzYjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYw
Li4wNjFlYzBhMDBkZjU3Y2I1ZTEzNDgzMWNlOTQ2NTk5NmQ3NjVjOTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xICsxLDEwIEBACisyMDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9n
LTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZTYzNzg4NzI2Mjg0YzBiYTNmMTVjOGEzYjU5
Y2MxZjdiMTYwZDNjLi5lOGE5YmVjMjdiNjg3YzgzYjhhYzUzNzIwNDU3YmFlOTQxMzJjNmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jh
c2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIyICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBBZGQgbWlzc2luZyBpbnNwZWN0b3IgZmlsZSB0byBHVEsrIGNvbXBpbGF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0Yzky
MWJlOTczYzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5
MzdkMzA5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpT
Qzo6cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZp
ZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3
NzE5ZDM2NDc1YjZiNjExZTgyOTYuLmQ3MDdlMzNiZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVj
Y2Q1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMs
MTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAg
ICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApA
QCAtNjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3Jk
LmNwcAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAK
ICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9P
QkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5
NSw2ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcwor
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1
NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3
YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3
IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
ID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lO
VEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7
CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVf
RVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklO
RyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggMmY2NWRiNTVhMWVlZDM2NDljZmUzM2Q3OGI5MjZjNjI1MTNh
OWY2OC4uZmRlNTdlOTM4ZGJkNGZhMmRiZTVjMTRkN2JjOGZiZTExNTE3MDFjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg0LDYgKzg0LDcgQEAgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0dlbmVyYXRvci5Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIw
LDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAor
ICAgIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAg
ICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCmluZGV4IDNlN2Y5OTRlMzA3YzQ2ZDAzYjc0Yjk3OWY1MWJlNjU2ZTU5YWMw
NDMuLjE4OTExOTQ3OTFmYjJkMDc1ZGJhZjdiMTU4N2ZmYzgzZTYzYmM3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzU2LDYgKzc1NiwxMCBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlw
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFy
ZURhdGEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JGcmFtZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk1
LDYgKzc5OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0RhdGVNYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNG
dW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0dsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ1
LDYgKzk1MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUu
bHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291
cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CkBAIC0xNTE1LDYgKzE1MjEsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBA
IC0xNjAxLDYgKzE2MDgsMTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5
cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhp
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1l
bnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
bmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiArMTY3Miw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTZkM2ZmMDBlMjUwM2Fj
YmMzNjc5MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMjdjYzM2ZGJiMTQ5MDU0OGQyODg1MWQzMDNhOTk3
NzY5ZGEwMmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwpAQCAtNjY2LDYgKzY2NiwxOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYgKzc1OSw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2ICsyNjI3LDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQ
cm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0yODEzLDYgKzI4MzEsMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdl
bmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0
b3JUaGlzLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgs
NiArMjk1MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rp
b24uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICsz
MzE4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xFcnJvclByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8Rmls
dGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5o
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkNzQ5MTZjY2NjMjZlZDNkODY0
ZGJkNTBmMGQ5MTYzMzkzMGFlMTMuLjI3ZGU0NTk2YTRiYmE5OWI0Y2I2YzYzNTBiNjBkNzJiMmQ3
ZTI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkg
QEAKIAkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2
NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJj
ZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi87IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICov
OyB9OworCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUy
IC8qIEdlbmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIx
QzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUy
IC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovOyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
OTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3
MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0
ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEw
OTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExM
SW50QXNzZW1ibHkuaCAqLzsgfTsKQEAgLTE5NjIsOCArMTk3NSw4IEBACiAJCUZFMEQ0QTA5MUFC
QTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDRBMDcxQUJBMjQz
NzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgKi87IH07CiAJ
CUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5
RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJh
dG9yLmNwcCAqLzsgfTsKLQkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0Eg
LyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMDExQkZCRTU1
RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVs
R2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11
bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyB9Owog
CQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQx
MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYz
NDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICov
OyB9OwpAQCAtMzI2Nyw2ICszMjgwLDIwIEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5l
cmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg0MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkx
ODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvci5wcm90
b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0
b3IucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE5MDFD
MDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRv
clByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01MDc3LDYgKzUxMDQsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZB
MkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3
MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5
RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMw
MjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYy
MTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2
MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3
MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCAqLywKQEAgLTUyMDUsNiArNTIzMyw3IEBACiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcy
MkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyog
U291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJj
ZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5j
cHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmgg
Ki8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
Y3BwICovLApAQCAtNTMzNCw2ICs1MzYzLDE1IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2
MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yVGhpcy5oICovLAogCQkJCTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJn
dW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVy
aWNPZmZzZXQuaCAqLywKQEAgLTU0MzMsNiArNTQ3MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3
RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8q
IEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8q
IEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJ
CQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY1NDEsNiArNjU4MSw3IEBACiAJCQkJQTc1RUU5QjAx
OEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMx
NTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAy
QzM3MzMgLyogRnVuY3Rpb24ucHJvdG90eXBlLmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMw
MDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5
QTMwMDlEQjFFRiAvKiBHbG9iYWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNG
NTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8s
CkBAIC02OTUyLDYgKzY5OTMsNyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBE
RkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJC
MkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1
NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKQEAgLTcwMDEsNiArNzA0Myw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAw
Njc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjIxLDYgKzcyNjQsNyBAQAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJ
bnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURC
NUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0Ex
N0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ3LDYg
KzcyOTEsNyBAQAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRB
MjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0
Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEph
dmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTAsNiArNzQzNSw3IEBA
CiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMw
MjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDI2LDYgKzc0NzIsNyBAQAogCQkJ
CUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkx
MzU1MUI3OTRGOEEwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUzOTEzNTYxQjc5NEY4RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTc1OTgsNiArNzY0NSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0Yy
RjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVG
NUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzYzMCw2ICs3Njc4LDcg
QEAKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3Jr
bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0
cm9uZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclRoaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUy
NiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1
MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3
OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODY0Nyw2
ICs4Njk2LDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFE
NzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg2NzMsNiArODcyMyw3IEBACiAJCQkJMEY3
NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFCRTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4
RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg4MTAsNiArODg2
MSw3IEBACiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0RDJGM0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFy
a1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkw
NTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlE
REYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04OTU2LDYgKzkwMDgsNyBAQAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlG
RiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3
MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRp
c2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdE
NjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUx
Qjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtODk2NCw2ICs5MDE3LDcgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1
MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZp
cnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBE
OTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2
YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBhMy4uNDhlZjdmZjNhOGViYTZiNDU4
OTY5MjJjMTdkNjRiMTA1MTRjOTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92
ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkg
OiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvciwKICAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNv
bnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVO
YW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5k
LCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92
ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1l
dGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5n
KCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNWU2OWM4M2ZjMGU4NWJmNDQxNWFiMTcxNzRmZWQxNGU1NTE4ZWMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5
cGUuanMKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gbmV4dChzZW50VmFsdWUpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7CisgICAg
bGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAoc3RhdGUgPT09IC0y
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIp
OworCisgICAgaWYgKHN0YXRlID09PSAtMSkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgdmFsdWUgPSB1bmRlZmluZWQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTI7ICAvLyBFeGVjdXRpbmcuCisgICAgICAg
ICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJhdG9yVGhp
cywgdGhpcywgc3RhdGUsIHNlbnRWYWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFs
TW9kZSAqLyAwKTsKKyAgICAgICAgICAgIGlmICh0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9PT0gLTIp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOworICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChlcnJv
cikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENvbXBsZXRl
ZC4KKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIHJldHVybihzZW50VmFsdWUpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7
CisgICAgbGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAoc3RhdGUg
PT09IC0yKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1
dGluZyIpOworCisgICAgaWYgKHN0YXRlID09PSAtMSkgeworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgdmFsdWUgPSBzZW50VmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTI7ICAvLyBFeGVjdXRpbmcuCisg
ICAgICAgICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwodGhpcy5AZ2VuZXJh
dG9yVGhpcywgdGhpcywgc3RhdGUsIHNlbnRWYWx1ZSwgLyogR2VuZXJhdG9yUmVzdW1lTW9kZTo6
UmV0dXJuTW9kZSAqLyAxKTsKKyAgICAgICAgICAgIGlmICh0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9
PT0gLTIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOworICAg
ICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNo
IChlcnJvcikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENv
bXBsZXRlZC4KKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBsZXQgc3RhdGUgPSB0aGlzLkBnZW5lcmF0b3JT
dGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1ZTsKKworICAgIGlmIChz
dGF0ZSA9PT0gLTIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMg
ZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IC0xKQorICAgICAgICB0aHJvdyBleGNl
cHRpb247CisKKyAgICB0cnkgeworICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAg
Ly8gRXhlY3V0aW5nLgorICAgICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNhbGwo
dGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgc3RhdGUsIGV4Y2VwdGlvbiwgLyogR2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlICovIDIpOworICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9y
U3RhdGUgPT09IC0yKSB7CisgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0xOyAgLy8gQ29tcGxldGVkLgorICAg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCAyOTkwZmFlMzU0ODk3OWZlYzdjYTE4NjY5MDkxYmIwNWUyYWM2MmU4Li41ZTZkNTlkZjEy
N2QyYmU3ZDJkMTMyY2QzMzBmM2E3YjhiZjI3Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6
IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAi
LCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2Fs
bCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxs
IiwgImxlbmd0aCIgOiA5IH0sCkBAIC0xMjksNyArMTMxLDkgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3RvX2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAotICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfQorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2Njg0NS4uMzc0MzZj
MDE1NjU0OWU5ZjdjMDFkYzQxYTAyZWUzZGQ4YjVhZmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTcwLDggKzcwLDkgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAg
ICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6
IAotICAgIGNhc2Ugb3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBv
cF9jb3B5X3Jlc3Q6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19m
dW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBv
cF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAg
Y2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Miw2ICsxNTQsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6
CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
YXJndW1lbnRzOiB7CkBAIC0yMzMsNiArMjM2LDE0IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNl
IG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjU1
LDYgKzI2Niw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxl
X2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ug
b3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzI3LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBvcF9uZXdf
ZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBv
cF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICs0MDQsMTUgQEAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5tX251bVZh
cnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgdmVjdG9yID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZChpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICB2ZWN0b3IuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRl
Zjk5ZWUuLjNjMTJkYjhhNzZlMzQ4Yjk3NGIwN2E2NDI4M2I5MjM5ZWVlMWRlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjk0LDYgKzEy
OTQsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9m
dW5jIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzExLDYgKzEzMTksMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVk
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYg
KzE1MTUsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3Bv
aW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUi
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0
b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQg
Y29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMTcyMCw2ICsxNzUwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVy
KQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
UmVnaXN0ZXJzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlz
KTsKQEAgLTE4NzUsNiArMTkwNiwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICAgICAgICAgIGRlc3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoKSkgeworICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5ncm93KGNvdW50KTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2ldID0gdW5saW5r
ZWRDb2RlQmxvY2stPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gQWxsb2NhdGUgbWV0YWRhdGEgYnVmZmVycyBmb3IgdGhlIGJ5dGVjb2Rl
CkBAIC0zMDQ5LDYgKzMwODYsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5r
TW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2hyaW5r
VG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJl
Y2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0
YWJsZXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5k
ZXggYzFkZjE4N2MxMjIwZDJmN2YwMzI0YTJkMjVmOWI4M2MwNTJkODJlYy4uMWEwYjk4ZjBjZGIy
YzE1ZDYwMDJhZmM0OWE0MmFkYmEwM2JkYjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+
CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC0xNDEsNiArMTQyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRl
cnM7IH0KICAgICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsKIAorICAgIGlu
dCBudW1DYWxsZWVSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZVJlZ2lzdGVy
czsgfQorCiAgICAgaW50KiBhZGRyZXNzT2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gJm1fbnVt
UGFyYW1ldGVyczsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1QYXJhbWV0ZXJz
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKTsg
fQogCkBAIC02NTQsNiArNjU3LDEwIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURh
dGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5k
ZXhdOyB9CiAKKyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgor
ICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFzdEJpdFZlY3RvciB2
ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9CisgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGluZGV4KSB7IFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZFtpbmRleF07IH0KKwogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2Fj
aGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
ZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTkwMCw2ICs5MDcs
OCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNp
bXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5n
SnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZh
c3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQ7CisKICAgICAgICAgRXZh
bENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdk
NGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4
YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAog
CiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhl
Y3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdl
dCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUo
aW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBz
b3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlw
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoc291cmNlQ29kZUtleSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJj
ZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBz
Y29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJs
ZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclRE
WihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRo
aXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhl
Y3V0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4
dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRy
aWVzKQotICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZh
bFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291
cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAg
ICAgbV9jYWNoZU1hcC5zZXQoc291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRh
YmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAg
ICB9CkBAIC04MCwxNyArODcsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVj
dCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2
YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBj
YW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5
IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAg
ICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2
YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aCgpIAorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJj
ZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgp
CiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VD
b2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwg
U291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hl
TWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2
OWI1MGIxMDJhMTVkLi4zNWJmN2RmYjU5YWE2Zjk4OWE5MzQ1NjkwYzY5OGM2Y2M2ZDgyMjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApA
QCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhl
Y3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCisvLyBGSVhNRTogVGhlc2UgZmxhZ3Ms
IFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSBy
ZW9yZ2FuaXplZC4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBu
ZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlz
Q29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9u
ZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNl
c0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAs
IG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBt
X2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9wYXJz
ZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKKyAgICAgICAgQVNT
RVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcp
KTsKKyAgICAgICAgQVNTRVJUKG1fZ2VuZXJhdG9yVGhpcyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ2VuZXJhdG9yVGhpcykpOwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0FjdGl2YXRpb247IH0KQEAgLTQ4LDggKzU1LDEwIEBAIHN0
cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpcyBn
ZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4o
bV9nZW5lcmF0b3JUaGlzKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Fycm93RnVuY3Rpb247IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01
Nyw4ICs2NiwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNT
dHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9y
VGhpcyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6
IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThi
NTc2Li4zYzMxOWQwNmUzOTk3ZWRlZjNkMzI3ODdiOWI5MzcyZmZlMjcxYTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTY1LDEwICs2NSwxMiBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkK
ICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24o
KSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5l
cmF0b3JUaGlzKCkpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uc3VwZXJCaW5kaW5nKCkpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGlu
ZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2Rl
KGluZm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBl
KGNvZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMx
NTZhN2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi5lMWIwOTViNmFkNjUyZTAwODdkOWE1
MzI3MTc1ODE4MGNmNjc2OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJl
c3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYs
NyArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9
CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VN
b2RlOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2Vu
ZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1f
Z2VuZXJhdG9yVGhpcyk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAog
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIyMyw2ICsyMjcsNyBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9jb25zdGFudEJ1ZmZlcnMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zLnNo
cmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDQsNiArMjQ5LDExIEBAIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9
CiAKKyAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgorICAgIHNp
emVfdCBudW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6
ZSgpIDogMDsgfQorICAgIGludDMyX3QgYWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoRmFz
dEJpdFZlY3RvciB2ZWN0b3IpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLmFwcGVuZCh2ZWN0b3IpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaXplKCkgLSAxOyB9Cisg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW50IGlu
ZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICB1bnNpZ25lZCBhZGRGdW5jdGlvbkRl
Y2woVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG4pCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBzaXplID0gbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsKQEAgLTM4NywxMiArMzk3LDE0IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAx
OworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmly
c3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKQEAgLTQzNiw2ICs0NDgs
OCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBW
ZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAg
ICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZVJlZ2lzdGVy
c0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBvc2l0
aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5
YjYuLmRjNmQ4NjVmODIzNTcxMDZkZWY3ZDRjYTU1M2IyOWQ3NTA3ZmI5OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBACiBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIFZN
JiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2Vy
TW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAgVW5saW5r
ZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFy
c2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIEpTUGFy
c2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRh
YmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNl
TW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgJnZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpLCBlcnJvciwgbnVsbHB0cik7CisgICAgICAgICZ2bSwgc291cmNl
LCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxl
LT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRy
KTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQo
KSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAg
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVz
ZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXMoKSwgZXhlY3V0YWJsZS0+c3VwZXJC
aW5kaW5nKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMo
KSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcykKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBW
YXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKICAgICA6IEJhc2Uo
KnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5m
ZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtOTksNyArOTksOCBAQCBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2Rl
LT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dG
dW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JUaGlzKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihub2RlLT5zdXBlckJpbmRpbmcoKSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAg
IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7
CkBAIC0xODAsNyArMTgxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9y
KAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlz
QXJyb3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENv
ZGVGb3JDYWxsOgpAQCAtMTk2LDcgKzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2lu
ZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAK
LSAgICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1v
ZGUpOwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTky
OTNmNDFiYTQyZDljMWY4Li44YjgyNzFhNmMzZjZjYzVkMjE5ZDQ2OWMxM2RlNTYzZjNiM2YyYmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNv
ZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJl
c3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC02NSwxMCArNjYsMTAgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9u
bWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzIGdl
bmVyYXRvclRoaXMsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFw
KSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRG
dW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXMsIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC04Miw2ICs4Myw4IEBAIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7
IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRv
clRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVy
YXRvclRoaXMpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1
bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05
NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9ja0ZvcigKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJF
cnJvciYsIGJvb2wpOworICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAK
ICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYs
IEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBHZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwog
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTgsNyArMTYwLDggQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9y
VGhpcyA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI5
MzcwYzhkMjg0YTM4NGYyMWUwZTc4OTI2ODU0NWM5MmIxOTgyM2IuLjhkMWU2YzIyN2FkYmVhODY5
ZDQ1N2ZjMjhhY2JhZjUxYWJlMDc2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpA
QCAtMjI3LDkgKzIyOCwzMyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUoKQogICAgICAgICB9CiAgICAgfQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IGNvZGVCbG9jay0+cGFyc2VNb2RlKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhl
VGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9z
aG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBu
ZWVkc0FyZ3VtZW50cyA9IGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9j
ay0+dXNlc0V2YWwoKTsKKworICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1l
bnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIg
Z2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwor
CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZSAmJiBuZWVkc0FyZ3VtZW50cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3Qg
cHJvdmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24g
cHJvdmlkZXMgImFyZ3VtZW50cyIuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVu
dHMgb2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQu
CisgICAgICAgIC8vIFRvIHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50
cyBhcyBhcmd1bWVudHMgb2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZl
cmVuY2UgaXQgZnJvbSBhIGdlbmVyYXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVu
Y3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVu
Y3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAg
ICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVy
ZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAu
Li4KKyAgICAgICAgLy8gICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAg
IC8vICAgIH0KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7Cisg
ICAgfQorCiAgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVu
Y3Rpb25Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgp
OwogICAgIApAQCAtMjU0LDE0ICsyNzksMzQgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1f
Y2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGlu
aXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5n
IGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlu
cyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JS
ZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVy
LCAmbV9wYXJhbWV0ZXJzWzFdKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvclRoaXMoKSA9PSBHZW5l
cmF0b3JUaGlzOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlz
UmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBn
ZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ug
d291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcg
YmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mg
c3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAg
ZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5lcmF0b3IoZ2VuZXJh
dG9yU3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5h
bWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9u
TW9kZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5h
bWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJl
cyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0
dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAg
IGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxs
ZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91
bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFy
IiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Np
b25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVu
dmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFr
ZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywg
YW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJp
bmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsg
MSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldElu
ZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
YXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRl
cm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9y
ZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJl
IG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9v
bCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwzNSBAQCBQYXJzZXJF
cnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFy
Z2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0
aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2Vz
VGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJy
b3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6
IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAg
ICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAg
ICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAg
ICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgor
ICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25z
dHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAm
bV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NTIsOCBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rp
b25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAK
ICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6
ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBj
YWxsZWQKQEAgLTc5OSw2ICs4NTgsMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBr
bm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJh
bWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3Bh
cmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZv
ciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFt
ZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
YXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRl
cnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAg
ICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBh
dHRlcm4pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1l
dGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFy
TGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04NTUsNiAr
OTMwLDIxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdUZW1wb3JhcnkoKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0Zhc3RCaXRWZWN0b3IgQnl0ZWNvZGVHZW5lcmF0b3I6
OmxpdmVDYWxsZWVSZWdpc3RlcnMoKQoreworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7Cisg
ICAgRmFzdEJpdFZlY3RvciB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2l6ZShtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVy
SUQmIHJlZyA6IG1fY2FsbGVlUmVnaXN0ZXJzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQo
KSkKKyAgICAgICAgICAgIHZlY3Rvci5zZXQoaSk7CisgICAgICAgICsraTsKKyAgICB9CisgICAg
cmV0dXJuIHZlY3RvcjsKK30KKworCiBMYWJlbFNjb3BlUHRyIEJ5dGVjb2RlR2VuZXJhdG9yOjpu
ZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFt
ZSkKIHsKICAgICAvLyBSZWNsYWltIGZyZWUgbGFiZWwgc2NvcGVzLgpAQCAtMjMxMiwxMiArMjQw
MiwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3Rl
cklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0
ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAg
ICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU2MSw2IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBF
bGVtZW50Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50
ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5j
dGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1p
dE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgo
KSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0Owot
fQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3Rl
cklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4
cCk7CkBAIC0yNDkzLDEzICsyNTY5LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0
dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29t
bW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bj
b2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
Q29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAg
IEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3
X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2st
PmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNl
TW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNjAwLDE4IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJh
c2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQog
ewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7
CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSog
ZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQor
ICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRv
clRoaXM6OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAg
IAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5j
X2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwog
ICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1NDAsNiArMjYyOSwxOSBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBk
c3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisg
ICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAg
ICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCkt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJu
IGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1
bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwg
ZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKQEAgLTM3NjYsNiArMzg2OCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7Cisg
ICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7Cisg
ICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsK
KyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1
ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlz
T2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVs
KCk7CkBAIC0zODQyLDQgKzM5NjIsMjA4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICBpbnQzMl90IGxpdmVDYWxs
ZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAg
IGVtaXRSZXR1cm4oYXJndW1lbnQpOworCisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
KyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChs
aXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworCisgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAvLyBSZXR1cm4uCisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCk7CisgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVy
LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsK
KyAgICAgICAgfQorICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAg
ICB9CisKKyAgICAvLyBUaHJvdy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7Cisg
ICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3JtYWwu
CisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91cyA9IG5ld1RlbXBv
cmFyeSgpOworICAgIGVtaXRMb2FkKHByZXZpb3VzLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsK
KyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50KTsK
KyAgICAgICAgICAgIGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCks
IG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBs
b29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gbmV4dEVsZW1lbnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbWl0TG9hZCh2YWx1ZS5n
ZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5leHRFbGVtZW50
LmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAg
ICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGludDMyX3QgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gbV9jb2RlQmxv
Y2stPmFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdpc3RlcnMoKSk7
CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKKyAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRl
eCk7CisgICAgICAgICAgICAgICAgZW1pdFJldHVybih2YWx1ZS5nZXQoKSk7CisKKyAgICAgICAg
ICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRP
cGNvZGUob3BfcmVzdW1lKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1v
ZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1
YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkp
KTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1
ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1l
dGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRl
cmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwg
cmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVy
bkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5
KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5l
d0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3Vs
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93
LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2RO
b3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRo
b2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRo
cm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVND
SUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlM
aXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhv
ZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQo
KSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQu
Z2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBz
dGF0ZSkKK3sKKyAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRlKSkpOworICAgIGVtaXRQdXRC
eUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVBy
aXZhdGVOYW1lLCBjb21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwpOwor
ICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQoreworICAgIGJlZ2luU3dpdGNoKHN0
YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJ
bmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0
Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVt
cFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0
Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGlu
dDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVt
cFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2Vu
ZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMg
YWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAg
ICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAg
ICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAg
ICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChz
d2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzhiNjU5YTMzNjg1YmIzYzcyNjQ3ZGNmYWZiOGQ1
ODIwNDIyYmE4Ni4uZTExMzczYzFjNzQ2YzMyNzk4YjhjNmVjMDZjNjEwN2IyYmVmMzZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBCeXRlY29kZUdlbmVyYXRvcl9o
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkxhYmVsLmgiCkBAIC0yODAsNiArMjgxLDggQEAKIAogICAgICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9
CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KKyAgICAgICAgR2VuZXJhdG9yVGhp
cyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmdlbmVyYXRvclRo
aXMoKTsgfQorICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3Ig
Z2VuZXJhdGUoKTsKIApAQCAtMjk3LDYgKzMwMCw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCog
c2NvcGVSZWdpc3RlcigpIHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3Rl
cjsgfQorCiAgICAgICAgIC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSBy
ZWdpc3Rlci4gUmVnaXN0ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSBy
ZXF1aXJlIGEgbW9kaWZpZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAg
ICAvLyByZWdpc3RlciB3aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFi
bGUiLCBtZWFuaW5nIHRoYXQKQEAgLTQ5OSwxMCArNTA0LDggQEAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBs
ZW5ndGgpOyAvLyBzdG9wcyBhdCBmaXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCog
ZHN0LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwg
Q29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAgdm9pZCBl
bWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNv
ZGVJRCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYsNiArNTk5
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JO
ZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAg
ICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJz
VG9Ta2lwKTsKQEAgLTY0NCwxMiArNjQ4LDI0IEBACiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2go
UmVnaXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3
aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2Rl
KiosIExhYmVsKiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAor
ICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqKTsKKyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAg
ICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1sy
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAg
Q29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAg
ICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJv
ZmlsZUhvb2tzOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVy
biBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQor
CisgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2
Nyw2ICs2ODMsOCBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNj
b3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVt
aXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5j
dGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqKTsKKyAg
ICAgICAgRmFzdEJpdFZlY3RvciBsaXZlQ2FsbGVlUmVnaXN0ZXJzKCk7CiAKICAgICBwdWJsaWM6
CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSos
IGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRh
YmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03NTIsMTIgKzc3MCwyMiBAQAogICAgICAgICAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZh
cmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29u
c3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
dHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAg
ICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzIGdlbmVy
YXRvclRoaXMgPSBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3Io
KSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6RW1wdHk7
CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIHJldHVybiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3Vy
Y2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRv
clRoaXMsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0
VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5Myw3
IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
UmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVy
SUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3Rl
cklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJh
bWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChp
bnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVm
YXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFy
YW1ldGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCop
PiYgY2FwdHVyZXMpOwogCkBAIC04MDQsNiArODMzLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCog
bV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1l
bnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlW
YWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9i
amVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1Rhcmdl
dFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODI3LDYgKzg1Nyw3IEBACiAgICAgICAgIFZlY3Rv
cjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlv
blZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxG
dW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXpl
OwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2OGU1YmJkMGY1Mi4uNzk2ZDc0
N2NmZjA0NWY2NWM2M2FjOWVhMmQ3YmI3MzZkYWNlN2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJM
YWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQK
IAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEsMTYg
QEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQq
IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0
YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJ
bmRleChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVO
YW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmpl
Y3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0Lmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAg
LTI1ODQsNiArMjU4OSw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgZHN0ID0gMDsK
IAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5l
cmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVt
aXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1
cm5TdGF0ZW1lbnQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRv
ci5pc0luRmluYWxseUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQo
KSk7CkBAIC0yOTY2LDI2ICsyOTcyLDk2IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3Rh
cnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQo
KTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRv
ci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhp
cy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlz
RXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1l
bnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7Cisg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAg
ICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKKworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSB7
CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2Jq
ZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChn
ZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CiAKLSAg
ICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlv
biBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYm
IHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxh
c3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVt
ZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sg
JiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0
dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7
Ci0gICAgfQorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBv
YmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGll
cyBmb3IgZWFzZS4KKyAgICAgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxs
IGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFu
ZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
NDUKKworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yTmV4dFBy
aXZhdGVOYW1lLCBuZXh0LmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lz
dGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1l
LCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
CisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJ
ZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMo
KS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0
b21hdGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBS
ZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhp
c1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5j
dGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3Ig
dGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4K
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JS
ZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUsIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2Vu
ZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJl
dHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAg
ICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXR1cm4ocjApOwotICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlP
cChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2Rl
OjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAg
IFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdl
dCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
dGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGdlbmVy
YXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogeworICAgICAgICBlbWl0U3RhdGVtZW50c0J5
dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAg
U3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7
CisgICAgICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworCisgICAgICAgIC8vIENoZWNr
IGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2Vk
IG9mIGEgc2luZ2xlIGJsb2NrLgorICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmds
ZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0
U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVu
dCktPmxhc3RTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9j
ayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5C
bG9jayk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2Ug
bXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCisgICAgICAgIGlmICghcmV0dXJuTm9kZSkg
eworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rvcigp
ID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJv
ZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQg
ZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUg
dXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0g
bGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIH0K
IApAQCAtMzAxMywxMSArMzA4OSwyNCBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdp
c3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3Qg
YSBzdHViLiBXaGVuIGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1wbGVt
ZW50IGl0LgotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJO
b3QgaW1wbGVtZW50ZWQgeWV0LiIpKTsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVudCgp
KSB7CisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNV
bmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFs
dWUuZ2V0KCkpOworICAgIH0KKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3Vt
ZW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGVs
ZWdhdGVZaWVsZChhcmcuZ2V0KCksIHRoaXMpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmln
bm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIHZhbHVlLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IENsYXNzRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKaW5kZXggMjA3ZTBiMzNlOTgyMzllZTRiNDJhNTU1ZDQ5ZjQxYWQ3
NDc0ZTg4NS4uZTBmZWFkM2QyMjAwYTkyMDI0NjJjMDA5ODJiYjQxZmQ5ZjQwZWUzOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtOTYsNiArOTYsOCBAQCBjbGFzcyBIZWFwIHsKICAg
ICAvLyBvdXIgc2NhbiB0byBydW4gZmFzdGVyLiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c190aW1lQ2hlY2tSZXNvbHV0aW9uID0gMTY7CiAKKyAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCogb3BhcXVlUG9pbnRlcik7CisKICAgICBzdGF0aWMgYm9vbCBpc0xpdmUoY29uc3Qgdm9p
ZCopOwogICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
Ym9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oCmluZGV4IGY0YWNmMjVlNjBlMTg5MzhhNjhhN2I4ZGI5NTk1NGQ2
YTI1MDJiMjQuLmI4ZjdkNzZmZmZjZDAwMDY0ZThkZWNiNjUxYzlhZmFjYWJjYjc3ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtNzAsNiArNzAsMzYgQEAg
aW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2KQogICAgIHJldHVybiBoZWFw
KHYuYXNDZWxsKCkpOwogfQogCitpbmxpbmUgYm9vbCBIZWFwOjppc0xpdmVDZWxsKGNvbnN0IHZv
aWQqIHApCit7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBM
b29rIHVwIGJlbG9uZ2luZyBNYXJrZWRCbG9jayBhbmQgZmlsdGVyIG91dCBpZiBpdCBpcyBub3Qg
YWxsb2NhdGVkLgorICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBtX29iamVjdFNwYWNlLmJs
b2NrcygpLmZpbHRlcigpOworICAgIE1hcmtlZEJsb2NrKiBjYW5kaWRhdGUgPSBNYXJrZWRCbG9j
azo6YmxvY2tGb3IocCk7CisgICAgaWYgKGZpbHRlci5ydWxlT3V0KHJlaW50ZXJwcmV0X2Nhc3Q8
Qml0cz4oY2FuZGlkYXRlKSkpIHsKKyAgICAgICAgQVNTRVJUKCFjYW5kaWRhdGUgfHwgIW1fb2Jq
ZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIHBvaW50ZXIgaXMgQXRv
bUFsaWduZWQuIElmIG5vdCwgdGhpcyBwb2ludGVyIGlzIG5vdCBwb2ludGluZyB0byBhIGhlYWQg
b2YgYSBjZWxsLgorICAgIGlmICghTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRlc3QgdGhhdCB0aGUgZ2l2ZW4gY2FuZGlkYXRl
IE1hcmtlZEJsb2NrIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBpbiBWTSdzIEhlYXAuCisgICAgLy8g
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgY2FuZGlkYXRlIE1hcmtlZEJsb2NrIGRlZmluaXRl
bHkgZXhpc3RzLgorICAgIGlmICghbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5jb250YWlu
cyhjYW5kaWRhdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgcG9pbnRl
ciBjYW4gYmUgdXNlZCBhcyBvbmUgb2YgY2VsbHMuIE5vdCBwb2ludGluZyB0byBtZXRhZGF0YSwg
b3IgbWlkZGxlIG9mIGNlbGxzLgorICAgIGlmICghY2FuZGlkYXRlLT5pc0F0b20ocCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZSBjZWxsIHBvaW50ZXIgaXMgbm90IHphcHBl
ZC4gSXQgbWVhbnMgdGhpcyBjZWxsIGlzIGFjdHVhbGx5IHVzZWQuCisgICAgcmV0dXJuICFyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEpTQ2VsbCo+KHApLT5pc1phcHBlZCgpOworfQorCiBpbmxpbmUg
Ym9vbCBIZWFwOjppc0xpdmUoY29uc3Qgdm9pZCogY2VsbCkKIHsKICAgICByZXR1cm4gTWFya2Vk
QmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5pc0xpdmVDZWxsKGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZDViMTQ5MmFlN2Y1M2RlNmNhNjU1MTljNTcy
ZWI2MWVlYjM5ZTMwZS4uNTQ2OTcxY2U4ZjUzOGI5ZTMzNWNmZmZiMjg0NzMzYmQ5NjE1NGUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0xNTUsNiArMTU1
LDcgQEAKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChj
b25zdCB2b2lkKik7CisgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
Ym9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHZv
aWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1hcmtlZChjb25z
dCB2b2lkKik7CkBAIC0zODgsNyArMzg5LDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQq
IHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsKICAg
ICAgICAgc2l6ZV90IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHApOwpAQCAtMzk5LDcg
KzQwMCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXRvbU51
bWJlciA+PSBtX2VuZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50byBpbnZhbGlkIGNlbGxz
IG91dCBvZiB0aGUgcmFuZ2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KIAorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVD
ZWxsKGNvbnN0IHZvaWQqIHApCisgICAgeworICAgICAgICBpZiAoIWlzQXRvbShwKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxj
b25zdCBKU0NlbGwqPihwKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjNTQ3NTFjZDcyMGZmZmMxMWUxNWQz
NTI1NmIwNjM3NWMwYjZlOGFjLi5kMTg1MDQyMGFiZDVkZDZiMGUzMTk0NmQ5NjVkMDdjMDQwMWZi
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTE1Myw3ICsxNTMsMTYgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29k
ZUJsb2NrKCk7CiAgICAgSlNTY29wZSogY2FsbGVyU2NvcGVDaGFpbiA9IGNhbGxlckZyYW1lLT51
bmNoZWNrZWRSKGNhbGxlckNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKS5SZWdp
c3Rlcjo6c2NvcGUoKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9j
ay0+ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICBVbmxpbmtlZENvZGVCbG9j
ayogY2FsbGVyVW5saW5rZWRDb2RlQmxvY2sgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCk7CisKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Y29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgICAgICB0aGlzVERaTW9k
ZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2Rl
QmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAmJiBj
YWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Z2VuZXJhdG9yVGhpcygpID09IEdlbmVyYXRvclRoaXM6
OkVtcHR5KQorICAgICAgICB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsK
KworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UpKTsK
KyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNo
ZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBzb3VyY2VDb2RlLCB0
aGlzVERaTW9kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICBpZiAoIWV2YWwpIHsKICAgICAg
ICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CkBAIC0xNzEsOCArMTgw
LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAvLyBJZiB0
aGUgbGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2Vw
dGlvbnMuCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKIAot
ICAgICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkID8gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrIDogVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQ7Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRT
bG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpLCB0aGlzVERaTW9kZSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7Cisg
ICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNh
bGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCB0aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAgICAgICAgIGlm
ICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhNjFiNTdkNDYxNWY5YTkyZTliMzQzOTZlZDM4OGY3
OTZkODQ1MGQwLi45NWJhYjA0ZDIzYThlYmU5NWNjYjVhZGQyMGMyOGUyYzVhYzkzNjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTQsNiArMjE0LDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY29weV9yZXN0KQog
ICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNz
ZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jl
c3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjYwLDYgKzI2Miw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuYykKICAgICAg
ICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19n
ZW5lcmF0b3JfZnVuYykKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVuY19leHApIAogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkMjI1ODIzOWQyZWI3MzAzNTFkZGUxMTVlNjhh
NzViY2E0NzlkNDJkLi5mY2M4ZjMwNjY3N2U3NjZjMGQxZmNhNTM3ODc0MjI1ZGEyNTYzOGRhIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Myw2ICs0OTMsOCBAQAogICAgICAgICB2b2lk
IGVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9j
aGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsK
QEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZl
cihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQsNyBA
QAogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2ln
bmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAg
ICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRW
YXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAg
dm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCBkNDk0ODk2NTBlNjg1NDY1OWU1YTYwZGU3OGU2MzNlMWE1
MTgzODVhLi42ZWMxNWJiNDRiMzM0MDVmMGYyY2UyMzcwN2U0MTU0NjgzYWIxYWMxIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3OCwxNCAr
OTc4LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4
ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVn
VDAsIGZ1bmNFeGVjKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAgICAgICBB
U1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4
ZWMpOworICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1v
bihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0
cnVjdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29t
bW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJD
b21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKTsKQEAgLTEwMTgsMTEgKzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdG
dW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vsc2UgCiAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7CiAjZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQg
PT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7Cisg
ICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5z
dHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b24oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE0MDUsNiArMTQzMywxOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93
UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggZDg3M2ExZGRkNjU3YTI4OTY4YTBlNTFmOTA2MzZkMWRlMmZjZjgxNi4uY2FkOTM0Njlj
MWJjYmQyYjU3ZGNiNTIwMjNhYmU5ZjcyM2Y3NDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0Fycm93RnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaCIKQEAgLTk4NywyMyArOTg4LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhl
YywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
c2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRh
YmxlOjppbmZvKCkpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICBpZiAoaXNJbnZhbGlkYXRlZCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZVdpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKK30KKworZXh0ZXJuICJD
IiB7CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+
KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlND
ZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCiB7Ci0gICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRydWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVj
dXRhYmxlLCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVy
YXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKK0VuY29kZWRKU1Zh
bHVlIHN0YXRpYyBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rp
b25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSk7CkBAIC0xMDE5LDEyICsxMDM5LDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlCiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25F
eGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRo
aXNWYWx1ZSwgdHJ1ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21t
b24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKIH0K
ICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlz
VmFsdWUsIGZhbHNlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1v
bihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKIH0K
IAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCA5NjM4ZjE0NWM5ZDU1NzVmMWM5NTJlMjc1ZjU5NGE3NmIzMmE0Yjg4
Li4yNTQyNTUwMjI5ZGE0MWUxYWRkNDZiMGIwMjU4ZThlNDk5NWI5YjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzAxLDYgKzMwMSw4IEBACiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9m
aWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBz
aXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlND
ZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5l
cmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0
YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3Bl
KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc2NWYxOTc5
NTBlMzIzZjA1NjZlNzJjNzNiNGVlZDYzZTNiMjA4YzUuLjVmNWYyMTg0YzkzYjkyYzliMjNiZDIz
ZjdjN2QzNzkxNjc0OTZiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMDQxLDYgKzEwNDIsMTggQEAgaW5saW5lIEpTVmFsdWUgZ2V0
QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3Jp
cHQpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
QVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIWNvZGVCbG9j
ay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFzQWN0aXZhdGlvbigpKTsKKyAgICBKU1Nj
b3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6
c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2dGKCJDcmVh
dGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9y
RnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVy
YW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19m
dW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTA1Miw2ICsxMDY1LDE3IEBAIGlu
bGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUq
IHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29w
ZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVu
Y3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisKKyAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQogewogICAgIExMSU5U
X0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CmluZGV4IGUyNDQ4MjlmZGQxZTJmMTUwNmEzNWQxMGE0ZWI4MWZjYmUzMmM1MzEuLjI3MTMyNGIx
ODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFiNDU2NTk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05OSw2ICs5OSw4IEBACiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmOGUxMjhjY2Q5YTA0YTEx
YWNmOTkxY2JjMWI1YjIwZDk3Y2FmMDMzLi4zNjhkMDg3NTJhN2NmYjdhZGNhZGRlNmYwYzNlNzkx
YjVmY2U0MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjI3LDYgKzEyMjcsMTIgQEAgX2xsaW50X29wX25ld19m
dW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2dlbmVyYXRvcl9mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19h
cnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1OCw2ICsxNDY0LDExIEBAIF9sbGludF9vcF9uZXdfZnVu
Y19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQog
ICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisKIF9sbGludF9vcF9uZXdfYXJy
b3dfZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKQEAgLTE1NzMsNiArMTU4NCwxOCBAQCBf
bGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMykK
KworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBh
Y2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUyMmI3MGUxZTk2MDliZTAwLi4yYjg0Y2JhZjM3ZWYwNDYw
YmRiOTE2ZDJiYmRhYzAyZTBkMmI0ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaApAQCAtMzQxLDkgKzM0MSwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwg
bnVsbHB0ciwgLyogZGVsZWdhdGUgKi8gZmFsc2UpOwogICAgIH0KIAotICAgIFlpZWxkRXhwck5v
ZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSkKKyAgICBZaWVsZEV4cHJOb2RlKiBjcmVh
dGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YXJndW1lbnQsIGJvb2wgZGVsZWdhdGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2Nh
dGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgWWllbGRFeHByTm9kZSogbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRl
bGVnYXRlKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90
LCBlbmQpOworICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2Rl
KiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwg
RXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLApAQCAtMzY0LDEyICszNjYsMTIgQEAgY2xhc3Mg
QVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlv
biwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Ym9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQor
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAg
IG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmljdENvbnRl
eHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykK
QEAgLTg4Niw2ICs4ODgsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIG5v
ZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7CiAgICAgfQorCisKKyAgICB2b2lkIHByb3BhZ2F0
ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9CiAgICAgCiBwcml2YXRlOgogICAg
IHN0cnVjdCBTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4
IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAuLjViNmRjNDkzODVkYTc4
MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2Vk
VmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwg
bV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1
bW4pCkBAIC0xNjIsMTAgKzE2MiwxMSBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgICAg
ICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCiAgICAgICAgICwgbV9wYXJzZU1v
ZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0
KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJp
bmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dG
dW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogeworICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRjMTFkN2Y4
YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2UuLjBiZjAwYjdiZTkzN2Y3OTc4YTQ1NjM3M2ZhZGUz
MWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTcs
NyArMTgxNyw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJz
aW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsK
ICAgICAgICAgCkBAIC0xODQyLDggKzE4NDIsOCBAQAogCiAgICAgICAgIGludCBzdGFydFN0YXJ0
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJv
b2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0
OyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0
TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9m
ZnNldCkKQEAgLTE4NjksOCArMTg2OSw4IEBACiAgICAgICAgIGludCBtX2xhc3RMaW5lOwogICAg
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJ
blN0cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7
CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWdu
ZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0xOTMyLDcgKzE5MzIsNyBAQAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCi0gICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFlpZWxkRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDY4NzRiMjdlMzkwOTA3YzhlNDE0
OTgyNmMzNzllNDJjZjU5Y2U1MmEuLmJmMzc3OGUzM2I2NmIxMjg0MzY4Zjc2ZjQ1NWQ1MjI4M2Qz
MDg4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NCw3
ICsxOTQsNyBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIFBhcnNlcjxMZXhlclR5
cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFy
c2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCAKKyAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZywKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwg
VGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2Uo
JnNvdXJjZSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51
bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCiAgICAgLCBtX3BhcnNpbmdCdWlsdGlu
KGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCisgICAgLCBtX3N1
cGVyQmluZGluZyhzdXBlckJpbmRpbmcpCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQo
ZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKICAgICAsIG1fdGhpc1REWk1vZGUodGhpc1REWk1vZGUp
CiB7CkBAIC0yNDksNyArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
LSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5j
dGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8p
OwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAg
ICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUg
JiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3Myw4ICsyNzcsMTIgQEAKICAgICAgICAgICAgIHNvdXJj
ZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VF
bGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFy
c2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VF
bGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
b3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJp
Y3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNv
dXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9y
U3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpA
QCAtMzAxLDcgKzMwOSwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0
aW9ucyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkg
OiBjYXB0dXJlZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJs
ZUFzQ2FwdHVyZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFi
bGVzOworICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsK
KyAgICAgICAgaWYgKHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzLmltcGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSgpOworICAgIH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVh
dHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMg
fD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0zMTEsMTAgKzMyNiwxMCBAQAogICAgICAgICBmZWF0
dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkQXJndW1l
bnRzKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7CisKKwog
ICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFy
aWFibGVzOwotICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRv
IGFsbG93IGJ1aWx0aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUu
Z2V0KCkpOwpAQCAtNDU4LDYgKzQ3Myw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0
byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAg
IHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9z
aXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rv
a2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJl
ZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsK
KyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8ucGFyYW1ldGVyQ291
bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgdHlwZQorCisgICAgeworICAgICAg
ICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5lcmF0b3JG
dW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNv
bnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9yIik7Cisg
ICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1f
c3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAg
IGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0
YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3Rh
dGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0
aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4
dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1
cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElk
ZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQog
ewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3VtZW50ZWQgaGVyZToKQEAgLTE1ODksMTUgKzE2
NDMsMTQgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25Cb2R5KAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQorICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0g
RnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlwZTsK
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFD
RSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9j
YXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93
RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5M
b2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1
Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjA5LDcg
KzE2NjIsNyBAQAogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVt
ZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFu
ZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rp
b24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1
bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFt
ZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEo
c3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
c3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQpAQCAtMTYyNSw2ICsxNjc4LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgogICAgICAgICByZXR1cm4g
ImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBm
dW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTcw
Myw2ICsxNzU4LDM3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRl
eHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0
b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBnZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFy
YW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CisgICAg
YXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworCisgICAgLy8g
QGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOworCisgICAgLy8gQGdlbmVy
YXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclJl
c3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKwor
ICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVu
dHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
IGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVu
Y3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTgxMywxMiArMTg5OSwxMCBAQCBzdGF0aWMgY29u
c3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAg
ICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2Vu
Lm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7
Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBm
dW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAg
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwg
Y2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0
aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAg
IGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJp
bmRpbmcsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJvZHlUeXBl
ID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAgICBmdW5j
dGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAg
ICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJp
YWJsZUluZm8pOwpAQCAtMTgzMiw3ICsxOTE2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9sZXhlci0+
c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9u
SW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAg
ICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNh
Y2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE4NTQs
MTQgKzE5MzgsMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBsYXN0
RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7Ci0g
ICAgCi0gICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBz
dGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5
VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8gcGVy
Zm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VGdW5j
dGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3Rv
cktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRvUG9wU2Nv
cGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1
bmN0aW9uQm9keSgpOworCisgICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0b3IgaGFzIGEgInVzZSBz
dHJpY3QiIGRpcmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3JhcHBpbmcgaXQgc2hvdWxk
IGJlIHN0cmljdCBtb2RlLgorICAgICAgICBpZiAgKGdlbmVyYXRvckJvZHlTY29wZS0+c3RyaWN0
TW9kZSgpKQorICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3RyaWN0TW9kZSgpOworCisg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2NvcGUtPmhhc0RpcmVjdFN1
cGVyKCksICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rv
ciIpOworICAgICAgICBpZiAoZ2VuZXJhdG9yQm9keVNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygp
KQorICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5kaW5nID09
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1l
dGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JC
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0gZWxz
ZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5
KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShm
dW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rp
b25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9u
U2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwg
IiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlv
biBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlv
bkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0
cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTkyOSw3ICsyMDMyLDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1v
ZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkK
LSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsK
ICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA4MCw3ICsyMTgzLDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAgICAg
ICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAgIHBh
cnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlw
ZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3Ig
bmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjczMSw3ICsyODM0LDcg
QEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3NpZmllciBjbGFz
c2lmaWVyKHRoaXMpOwogCiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQotICAgIGlmIChtYXRj
aChZSUVMRCkpCisgICAgaWYgKG1hdGNoKFlJRUxEKSAmJiAhaXNZSUVMRE1hc2tlZEFzSURFTlQo
Y3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkpKQogICAgICAgICByZXR1cm4gcGFyc2VZaWVs
ZEV4cHJlc3Npb24oY29udGV4dCk7CiAjZW5kaWYKIApAQCAtMjgzNiw2ICsyOTM5LDcgQEAgc3Ry
dWN0IExhYmVsSW5mbyB7CiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQaGFzZSA9PSBG
dW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Np
b24gd2l0aGluIHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0
YXJ0UG9zaXRpb24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBTYXZlUG9pbnQg
c2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAtMjg0MywxMyAr
Mjk0NywxNCBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0ZSA9IGNvbnN1bWUoVElNRVMp
OworICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24o
KTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAgICAgICByZXN0b3JlU2F2ZVBv
aW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVZ
aWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZvdFN0YXJ0LCBhcmd1
bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KQEAgLTMwNDEsNyArMzE0Niw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2NhdGlvbiBt
ZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0
ID0gdG9rZW5TdGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0
aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGU7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIp
OwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMyOTQs
NyArMzM5OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5U
eXBlIHRva2VuKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAg
aWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJl
c3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTdiMGU4MWFlYTFkODljNGZlYzk0
NDc1N2M3ZjQ5NWVjNTA0NzczZS4uNzI1OWE1ZDQ3NTU2ZjQwNTNhNDBhYTNlYzM0MzU5ZTk2Nzkz
OGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzIsNiArMTcy
LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKGZhbHNlKQog
ICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAsIG1faXNWYWxp
ZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAg
ICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkKICAgICB7CkBA
IC0xOTIsNiArMTkzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNj
b3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5
KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2Rl
KHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRzKHJocy5t
X2hhc0FyZ3VtZW50cykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29wRGVwdGgpCiAg
ICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAgICAgLCBtX21v
ZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC0yNDYsNiArMjQ4LDEwIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0
aW9uTW9kZToKKyAgICAgICAgICAgIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlv
bk1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKQEAgLTI2OCw2ICsyNzQsOCBAQCBz
dHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29uc3QgeyByZXR1
cm4gbV9pc0Z1bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzR2VuZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0dlbmVyYXRvcjsgfQogCisgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQorCiAgICAgdm9pZCBzZXRJc0xleGljYWxTY29w
ZSgpIAogICAgIHsgCiAgICAgICAgIG1faXNMZXhpY2FsU2NvcGUgPSB0cnVlOwpAQCAtNDUwLDE2
ICs0NTgsMjAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwgPSB0cnVl
OwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9
IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKElk
ZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMu
YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBpZiAobmVzdGVk
U2NvcGUtPm1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVzdGVkU2NvcGUt
Pm1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgIGZvciAoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaW1wbCA6IG5lc3RlZFNjb3BlLT5tX3VzZWRW
YXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1fZGVjbGFyZWRW
YXJpYWJsZXMuY29udGFpbnMoaW1wbCkgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNhbFZhcmlhYmxl
cy5jb250YWlucyhpbXBsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICAvLyAiYXJndW1lbnRzIiByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlc29sdmVkIGF0
IGZ1bmN0aW9uIGJvdWRhcnkuCisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5pc0Z1
bmN0aW9uQm91bmRhcnkoKSAmJiBuZXN0ZWRTY29wZS0+aGFzQXJndW1lbnRzKCkgJiYgaW1wbCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKCpwdHIp
OworCisgICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpbXBsKTsKICAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IGEgZGVjbGFyZWQgdmFyaWFibGUgdGhhdCBpcyB1c2Vk
IGluIGFuIGlubmVyIHNjb3BlIHRvIGJlIHRob3VnaHQgb2YgYXMgY2FwdHVyZWQgaWYKICAgICAg
ICAgICAgICAgICAvLyB0aGF0IGlubmVyIHNjb3BlIGlzIGJvdGggYSBsZXhpY2FsIHNjb3BlIGFu
ZCBub3QgYSBmdW5jdGlvbi4gT25seSBpbm5lciBmdW5jdGlvbnMgYW5kICJjYXRjaCIgCiAgICAg
ICAgICAgICAgICAgLy8gc3RhdGVtZW50cyBjYW4gY2F1c2UgdmFyaWFibGVzIHRvIGJlIGNhcHR1
cmVkLgogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcyAmJiAo
bmVzdGVkU2NvcGUtPm1faXNGdW5jdGlvbkJvdW5kYXJ5IHx8ICFuZXN0ZWRTY29wZS0+bV9pc0xl
eGljYWxTY29wZSkpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRh
dGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNhbmRp
ZGF0ZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFBy
b3BhZ2F0ZSBjbG9zZWQgdmFyaWFibGUgY2FuZGlkYXRlcyBkb3dud2FyZHMgd2l0aGluIHRoZSBz
YW1lIGZ1bmN0aW9uLgpAQCAtNTUwLDE0ICs1NjIsMjIgQEAgc3RydWN0IFNjb3BlIHsKICAgICB7
CiAgICAgICAgIG1faXNGdW5jdGlvbiA9IHRydWU7CiAgICAgICAgIG1faXNGdW5jdGlvbkJvdW5k
YXJ5ID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAgICBzZXRJ
c0xleGljYWxTY29wZSgpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFsc2U7CiAgICAgfQog
CisgICAgdm9pZCBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHNldElz
RnVuY3Rpb24oKTsKKyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgfQorCiAgICAg
dm9pZCBzZXRJc0dlbmVyYXRvcigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CiAg
ICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IGZh
bHNlOwogICAgIH0KIAogICAgIHZvaWQgc2V0SXNNb2R1bGUoKQpAQCAtNTc5LDYgKzU5OSw3IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBtX2lzTGV4aWNhbFNjb3BlIDogMTsKICAgICBib29s
IG1faXNGdW5jdGlvbkJvdW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0cmljdE1vZGUg
OiAxOworICAgIGJvb2wgbV9oYXNBcmd1bWVudHMgOiAxOwogICAgIGludCBtX2xvb3BEZXB0aDsK
ICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjI3LDcgKzY0OCw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
LCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLAogICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCk7CiAg
ICAgflBhcnNlcigpOwogCkBAIC0xMTUwLDYgKzExNzEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAg
IH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNl
R2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1l
bnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYg
ZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVC
dWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2
ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRl
ZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTExOTAsNyArMTIxMiw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0
eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5lcmF0b3IpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0dGVy
U2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSwgdW5z
aWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kID0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCk7
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5j
dGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5
cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5
KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
Q29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVk
LCBTb3VyY2VQYXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRpb25M
aXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyaWFi
bGVEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0
aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0
U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0
LCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERvZXNOb3RI
YXZlSW5pdGlhbGl6ZXIpOwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVu
Y3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNl
TW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxk
ZXI+Jik7CiAKQEAgLTEzNDAsNiArMTM2Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50
cyogbV9zb3VyY2VFbGVtZW50czsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CisgICAgU3Vw
ZXJCaW5kaW5nIG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2luZCBtX2RlZmF1bHRD
b25zdHJ1Y3RvcktpbmQ7CiAgICAgVGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsKICAgICBWYXJp
YWJsZUVudmlyb25tZW50IG1fdmFyRGVjbGFyYXRpb25zOwpAQCAtMTQ2Myw3ICsxNDg3LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBW
TSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAorICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJp
bmRpbmcgc3VwZXJCaW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRp
b24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAogICAgIENvbnN0cnVjdG9y
S2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAogICAg
IFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCkBA
IC0xNDcyLDcgKzE0OTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgQVNTRVJUKCFzb3VyY2Uu
cHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIo
KS0+c291cmNlKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFy
c2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExD
aGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1v
ZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE0ODUsNyArMTUw
OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rv
ciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxV
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgUGFyc2VyPExl
eGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBw
YXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1v
ZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0g
cGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjli
ZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0
Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25N
b2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAg
IEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiAr
NjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBA
IC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNl
dHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNDlh
N2UxNzNiMjUwMGRhZmI1Zjg0YWE0YzJlNmY0MTY2NDlkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU291cmNlQ29kZUtleV9oCisjZGVmaW5lIFNvdXJjZUNvZGVLZXlfaAorCisjaW5jbHVk
ZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNvdXJjZUNvZGVLZXkg
eworcHVibGljOgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1
bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisgICAgewor
ICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgICAgIDogbV9z
b3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwg
bV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKSB8IChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkp
CisgICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQorICAgIHsKKyAgICB9
CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAg
ICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgewor
ICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQorCisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KKworICAgIC8vIFRv
IHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVj
dGVkIHRoYXQgc291cmNlCisgICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8g
bWFrZSB0aGlzIGVmZmljaWVudC4KKyAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
b3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hhc2gg
PT0gb3RoZXIubV9oYXNoCisgICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgo
KQorICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCisgICAgICAgICAgICAm
JiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisgICAgICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhl
ci5zdHJpbmcoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU291cmNlQ29kZSBtX3NvdXJjZUNv
ZGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworICAgIHVuc2ln
bmVkIG1faGFzaDsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwgY29u
c3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3N0cnVj
dCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VD
b2RlS2V5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24g
PSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5
JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOTU1MzZjM2M3NTY3MjI3MzUxYmM2OTA3MTgy
ZWQ1M2FiNmM3MTkxYi4uM2UwYzMwZmQxZDI1MTg2MjM1ZTJkYjAzODQ0MTRjNjFmODE1N2I4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4
MCwxMCArMTgwLDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWllbGRFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBDbGFz
c0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29s
LCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBj
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1
cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dG
dW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBz
ZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50
cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMzg1LDYgKzM4NSw4IEBAIGNsYXNz
IFN5bnRheENoZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9CiAg
ICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAKKyAgICB2b2lkIHByb3BhZ2F0
ZUFyZ3VtZW50c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3RvcEJpbmFyeUV4cHI7
CiAgICAgaW50IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5Y2RjN2Ni
ZWRmMGUuLjJhMjQ0MmZhYTZlZWE4MTgyODQ1ZmZiMTdiMjFhMmI5OTM4NGNiOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2so
Vk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAgICAgICAg
ICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAg
ICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZXJyb3Is
IG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOworICAgICAgICBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNU
RFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291
cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVy
cm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC0xODgsNyArMTg4LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVj
dXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24o
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVj
dG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMg
d2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlh
YmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2
bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJp
bGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgZW1wdHlURFpWYXJp
YWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9z
b3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4Y2ZlZjg0NjQ5ZDhmMDljMmZiMGI5NDg4MTExZTE2OTM2
YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2Y2RjODk1NzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5o
IgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlS2V5LmgiCiAj
aW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTYsNzEgKzU3LDYgQEAKIGNsYXNzIFNvdXJj
ZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAotY2xhc3MgU291cmNlQ29kZUtleSB7Ci1w
dWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rp
b25UeXBlLCBNb2R1bGVUeXBlIH07Ci0KLSAgICBTb3VyY2VDb2RlS2V5KCkKLSAgICB7Ci0gICAg
fQotCi0gICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1
aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKLSAgICAgICAg
OiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAg
ICAgLCBtX2ZsYWdzKAotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlw
ZSkgPDwgMykKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9k
ZSkgPDwgMikKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2Rl
KSA8PCAxKQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUp
KQotICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKLSAgICB7Ci0gICAg
fQotCi0gICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0g
ICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLQotICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLQotICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KLQotICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9Ci0KLSAgICAvLyBU
byBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBl
Y3RlZCB0aGF0IHNvdXJjZQotICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRv
IG1ha2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9oYXNo
ID09IG90aGVyLm1faGFzaAotICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3Ro
KCkKLSAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncwotICAgICAgICAgICAg
JiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3Ro
ZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VD
b2RlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgdW5zaWduZWQgbV9mbGFnczsKLSAgICB1bnNp
Z25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhh
c2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNv
bnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci19OwotCi1zdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNl
Q29kZUtleT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9u
ID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtl
eSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQotfTsK
LQogc3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgU291cmNlQ29kZVZhbHVlKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUzNTVkODdhM2IzM2IxLi5kZTA3ZjFj
NTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1
bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rpb24pIFwKICAgICBtYWNybyhJbmZp
bml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCkBAIC0zMjksNiAr
MzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDMyQXJy
YXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAgICBtYWNybyhnZW5lcmF0b3IpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yU3RhdGUpIFwK
KyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclZhbHVlKSBc
CisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvclJlc3VtZU1v
ZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkwZjY1YzI0ZDYzMmI2MjEwODlkZTVj
MWJiZDQ5NjRkNDQ5NjQzOTEuLjQ1NmRiNzkwMjAyZGMzOWZkMTdmZWMzMWUzY2E0MDQxOWNjZThk
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
RXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02
NDQsNiArNjQ1LDM4IEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhKiBz
ZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAgICAgRU5EKCk7CiB9CiAK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8vIE9ubHkgc2F2ZXMgdmFy
aWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiB8dGhpc3wsIHxzY29wZXwgcmVnaXN0ZXJz
IGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5j
bHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUg
dmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAg
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBH
ZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5l
cmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6
IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMg
R2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0
aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0o
KSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3RlcnMoKSk7CisgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRC
eUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICBpbnQg
bGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1lLT5z
YXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChs
aXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJh
dG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lz
dGVyc0luZGV4ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdp
c3RlcnNJbmRleCkpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMjI2MTg1YzRj
N2VhN2NjNmZjN2YzY2M0ZjFmMzdlNjBlYjcyZjE3YS4uZjAwZDg3MDVkNGU2N2ZlNGQ0MDU5YmRl
MTY4ZWU4OGY1N2RmNzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxpbmUgdm9pZCBkZWNvZGVS
ZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGE2MzJjNDhlMDMw
YjQxYjMzYjMzZGJhMTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0MmJjMTJlZTAyMTgzNGE4MmY4
MWYwZmM5NzliY2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJp
bmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwogfQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCkBAIC03Myw3ICs3
Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9k
ZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50
aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUs
IGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7
CiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUy
OTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQyMDYwMDY3MjI5YWE0MGFiNDdl
OWI0MDUyOTYyMWZlODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1
dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxl
LT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAg
ICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4
ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0
YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRh
YmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RM
aW5lKCksIApAQCAtNTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6
Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAg
ICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpO
b3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1
cm4gMDsKICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMyMzk3MTI2YjYw
ZmQ3YjBjMzQwYTA0Li44OGEyNGFkNmNhYjJkNjIwNTIxMDRmMDEzMDJlZGUwMjJhNDRkNmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NDgsNyAr
NDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBHZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1
MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAg
ICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZh
bHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0
TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhp
czo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBm
dW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2Rl
KCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAg
ICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUo
KTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0K
ICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7
IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0
MmZhNWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5iMGFiNmJmYzA5Mjk4NzAwOGMy
NTVkN2RiNWVhMTRiOTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENh
bGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9y
Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mIHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICBpZiAo
IWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rp
b25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5j
dGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1
bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlzR2VuZXJhdG9yKTsKIH0KIAog
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAg
IEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50
IG92ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBp
bnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIC8vIEhvdyB3
ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21w
YXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgp
KQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFt
ZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmco
IntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJp
bmcoKSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAg
ICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJp
bmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAi
XG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dl
bmVyYXRvcikgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJn
cy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7
CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChpc0dlbmVyYXRvcikKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9u
TmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAt
MTI2LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjaygKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9y
Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgQXJnTGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRvcikKIHsKLSAgICByZXR1cm4g
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRp
b24oKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJl
My4uMjc5NGNkMjBiNzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJmZDIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAt
NTYsMTIgKzU2LDEyIEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rp
b25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24m
KTsKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgYm9vbCBp
c0dlbmVyYXRvciA9IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBj
b25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVO
dW1iZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24m
LCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVlYzY0N2Q0NmY4YTJlN2ZjZmI4
ZDNmMjFkN2FkM2EyODg3YTg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRv
ckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMobnVt
YmVyT2ZDYWxsZWVSZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzOyArK2kpCisg
ICAgICAgIHJlZ2lzdGVyQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMpCit7CisgICAgR2VuZXJhdG9yRnJh
bWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAg
ICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6
ZUZvclJlZ2lzdGVycyhudW1iZXJPZlJlZ2lzdGVycykpKQorICAgICAgICBHZW5lcmF0b3JGcmFt
ZSh2bSwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKQor
eworICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgcmVnaXN0ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUg
YSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUg
cmVwbGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVSZWdpc3RlcnMubnVtQml0cygpIDw9IG1f
bnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFj
aFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIEpTVmFsdWUgcmF3VmFsdWUgPSBl
eGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgp
OworICAgICAgICAvLyBTaW5jZSBDIHN0YWNrIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVycG9zZSwg
YW4gaW5jb3JyZWN0IHZhbHVlIGZvciBhIGpzIHZhbHVlIG1heSBleGlzdAorICAgICAgICAvLyBp
biBhIG5vbi1pbml0aWFsaXplZCAoYnV0IGFsbG9jYXRlZCkgSlMgcmVnaXN0ZXIuCisgICAgICAg
IC8vCisgICAgICAgIC8vIEZvciBleGFtcGxlLAorICAgICAgICAvLworICAgICAgICAvLyAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlZ2lzdGVyQSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAv
LyAgICAgLi4uCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlLCByZWdp
c3RlckEgaXMgYWxsb2NhdGVkLiBCdXQgaXRzIGNvbnRlbnQgbWF5IG5vdCBiZSBjb3JyZWN0IGpz
IHZhbHVlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgSlNDZWxsIHBvaW50aW5nIHRvIHRoZSBp
bmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiBtYXkgZXhpc3QuCisgICAgICAgIC8vIFBlcmZvcm1pbmcg
YSB3cml0ZSBiYXJyaWVyICgmIFNsb3RWaXNpdG9yJ3MgbWFya2luZykgb24gdGhlc2UgaW5jb3Jy
ZWN0IGNlbGxzIGNhdXNlcyBpbnZhbGlkIGRlcmVmZXJlbmNlcy4KKyAgICAgICAgLy8gVG8gYXZv
aWQgdGhpcyBzaXR1YXRpb24sIHdlIHRlc3QgYSBnaXZlbiBjZWxsIGxpa2UgcG9pbnRlciBpcyB0
cnVseSBjZWxsLgorICAgICAgICBpZiAocmF3VmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAg
IGlmICghZXhlYy0+dm0oKS5oZWFwLmlzTGl2ZUNlbGwocmF3VmFsdWUuYXNDZWxsKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3RlIHRoYXQgaW52
YWxpZCBub24tY2VsbCB2YWx1ZSBtYXkgYmUgc3RvcmVkLiAoZS5nLiBhIHZhbHVlIHdpdGggYW4g
aW52YWxpZCB0YWcgaW4gMzJiaXQgZW52aXJvbm1lbnQpLgorICAgICAgICAvLyBCdXQgc2luY2Ug
dGhleSBhcmUgbm90IHJlY29nbml6ZWQgYXMgYSBjZWxsLCB3cml0ZSBiYXJyaWVycyAvIG1hcmtp
bmcgZG8gbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAgcmVnaXN0ZXJBdChpbmRleCku
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIHJhd1ZhbHVlKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5l
cmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgcmVnaXN0
ZXJzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNhbGxlZVJlZ2lzdGVy
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gcmVnaXN0ZXJBdChpbmRleCku
Z2V0KCk7CisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJl
IHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnJlZ2lzdGVycygpLCB0aGlzT2JqZWN0LT5tX251bWJl
ck9mQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDdj
NmJjNGViOWNmMjYyYzc5NWFhNDU4N2M1NTRiMGI5MWExZmNiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2Rl
ZmluZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3
dGYvRmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9y
RnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJM
RShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZy
aWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZN
OworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5l
cmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsK
KworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZ2lzdGVycygpCisgICAgeworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3
aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZSZWdpc3RlcnMoKSk7CisgICAgfQorCisg
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgcmVnaXN0ZXJBdChzaXplX3QgaW5kZXgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICAgICAgcmV0dXJuIHJlZ2lzdGVycygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihH
ZW5lcmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZS
ZWdpc3RlcihzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdp
c3RlcnMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyh1bnNpZ25lZCBu
dW1iZXJPZlJlZ2lzdGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlJlZ2lzdGVy
cygpICsgbnVtYmVyT2ZSZWdpc3RlcnMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3Rh
dGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICB2b2lk
IHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlUmVnaXN0
ZXJzKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJP
ZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVy
czsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTdjZDNlZDAyNWJlYTkyN2Y2MDUzNmEzOTliZWRjODM3MTJhMzk2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFs
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5l
cmF0b3IgKi8gdHJ1ZSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKSwgYXJncywgLyogaXNHZW5lcmF0b3IgKi8gdHJ1ZSkpOworfQorCitD
YWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9z
dDsKK30KKworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7Cisg
ICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3
YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAg
ICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
Kik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMzZmU4ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKwor
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAg
c3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAg
cmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFm
NDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3Rv
dHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpz
X2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5l
cmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRp
biAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIp
LCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBl
KHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0
b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNm
Yzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQ
cm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKwor
ICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclBy
b3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAg
IH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAh
ZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclRoaXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWE2ZTA5NWMzMmFhZGM1NDQ2YTM1
NWQ4MTc1YTk1OWRkNDg0Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpcy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzX2gKKyNkZWZpbmUgR2VuZXJhdG9yVGhpc19o
CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1mdW5jdGlvbmFsbG9jYXRlCisvLyBodHRwOi8vZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMt
Y29uc3RydWN0LWFyZ3VtZW50c2xpc3QtbmV3dGFyZ2V0CisvLyBXaGVuIHRoZSBmdW5jdGlvbiBp
cyBhIEdlbmVyYXRvckZ1bmN0aW9uLCBpdHMgW1tDb25zdHJ1Y3RvcktpbmRdXSBpcyBhbHdheXMg
ImRlcml2ZWQiLgorLy8gVGhpcyBtZWFucyB0aGF0IE9yZGluYXJ5Q2FsbEJpbmRUaGlzIGluIHNl
Y3Rpb24gOS4yLjIgaXMgbmV2ZXIgZXhlY3V0ZWQgZm9yIEdlbmVyYXRvckZ1bmN0aW9uLgorLy8g
U28sIHdoZW4gd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nLAorLy8KKy8vICAgICBmdW5jdGlvbiAq
Z2VuKCkKKy8vICAgICB7CisvLyAgICAgICAgeWllbGQgdGhpcworLy8gICAgIH0KKy8vCisvLyAg
ICAgeworLy8gICAgICAgICBsZXQgZyA9IGdlbigpOworLy8gICAgICAgICAvLyB8dGhpc3wgc2hv
dWxkIGJlIGdsb2JhbC4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vICAg
ICB7CisvLyAgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworLy8gICAgICAgICAvLyB8dGhpc3wg
aW4gZ2VuIHNob3VsZCBiZSBURFogKGFuZCBpdCB3b24ndCBiZSBmaWxsZWQpLgorLy8gICAgICAg
ICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gVGhlIGZvbGxvd2luZyBmbGFnIG1hbmFnZXMg
dGhpcyBzdGF0ZS4gV2hlbiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBjYWxsZWQgYXMgYSBjb25zdHJ1
Y3RvciwgaXQgcmV0dXJuZXMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlvbiBoYXMgR2VuZXJhdG9y
VGhpczo6RW1wdHkgZmxhZy4KKy8vIEluIHRoaXMgY2FzZSwgd2hlbiBhY2Nlc3NpbmcgfHRoaXN8
LCBhIFREWiByZWZlcmVuY2UgZXJyb3Igb2NjdXJzLgorZW51bSBjbGFzcyBHZW5lcmF0b3JUaGlz
IDogdW5zaWduZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9OworCit9CisKKyNlbmRp
ZiAvLyBHZW5lcmF0b3JUaGlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEw
Yi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNG
dW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCiAg
ICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3Rv
dHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNP
YmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Y2JjZTAyZDY2MjkwNWUwZWNi
NzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dl
bmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCit7Cit9CisKK0pT
R2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0mIHZt
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAg
IEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yRnVu
Y3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVuY3Rp
b24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rpb24t
PmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisK
K0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAg
SlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+
bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVyYXRv
ciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5l
cmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmYxMDcyYTUyMTY1ZGQxN2RlZTA5NjdkZWU3YjhhZTQ4OTBmMmQ0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApA
QCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0b3JG
dW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRzOwor
CitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Cisj
ZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90
IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJldHVybk1vZGUgPSAxLAorICAg
ICAgICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9yRnVu
Y3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVybiBz
aXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9u
KiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzcxZTRlYTA2ZTM4
NjU1YWM1YTcwYmFhZGFmNzQwMmE3N2JjMGY1OS4uNzYyMmJiOTJhMTkxNTExZDgzMDRlYTBiMWQw
MGIzODk4N2ViYzg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogI2lu
Y2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1f
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1
bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAtNDIw
LDYgKzQyNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3N5
bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3Rv
dHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90eXBl
RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBl
U3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC04MTgsNiArODI4LDggQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwog
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJl
KTsKQEAgLTg1MCw2ICs4NjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgzYWQzY2M3ODE4OTNiODRkODUxMDQuLjAzMjUz
MjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjMsNiArNjMsOCBAQAogY2xh
c3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKK2NsYXNzIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFs
Q29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7CkBAIC0yMjksNiArMjMxLDggQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
V3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRl
QmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFy
cmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJh
cnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQ
cm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1
cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5h
bWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29uc29sZVN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgs
OCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9y
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5l
cmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQo
KTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3
aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5n
ZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJl
KiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBz
dHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4
IDgwMGE3ODY5ZTU0Yjc1ZDVjOGQyOGE1MGQ5N2ExZTBiNzdiNTA2M2EuLjM3YjhhZmM3N2UyZDA5
ZTk1NTEzYmVmYjU4ZWU3ZGRmYzA2YzU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1
bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOwor
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIAogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRv
RXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRi
ODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQz
NjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNp
bmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMg
Ym9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9j
YXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVU
YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKKyAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0
aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywg
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkz
Y2E2MjllOGU2OGQyYjgxZTYuLjU1NzdhODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGlu
ZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9u
UmFyZURhdGFTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCBlMGJjM2Q1MWZiNmM3YThmMDg5YmE0ZDg3ZDRlNjRj
NmE5NzBiZTUwLi4xMWE0YmY0NjRlNjRjN2ZmMDdjZWZlNDcyMTQ5Njk0YzMyZDI4YjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC03MTksNyArNzE5LDcgQEAKIC0gcGF0
aDogZXM2L0FycmF5X2lzX3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwog
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJy
YXkuZnJvbV9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNf
aXRlcmFibGVzLmpzCkBAIC03MjcsNyArNzI3LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21faXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6
ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVu
Y3Rpb25fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5m
cm9tX21hcF9mdW5jdGlvbl9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rp
b25faW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtNzUzLDcgKzc1Myw3IEBACiAtIHBhdGg6
IGVzNi9kZXN0cnVjdHVyaW5nX25lc3RlZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rl
c3RydWN0dXJpbmdfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0
ZXJhYmxlcy5qcwpAQCAtNzYzLDcgKzc2Myw3IEBACiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3Bz
X2l0ZXJhdG9yX2Nsb3NpbmdfdGhyb3cuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9v
cHNfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRo
OiBlczYvZm9yLi5vZl9sb29wc193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5q
cwpAQCAtODAzLDU1ICs4MDMsNTUgQEAKIC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVy
dHlfdmFyaWFibGVzX2Z1bmN0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfJUdlbmVyYXRvclByb3RvdHlwZSUuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBl
JS5yZXR1cm4uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS50aHJvdy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX2Jhc2ljX2Z1bmN0aW9uYWxpdHkuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jYW50X3VzZV90aGlzX3dp
dGhfbmV3LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfY29ycmVjdF90aGlzX2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25f
ZXhwcmVzc2lvbnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5k
X2dlbmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRo
b2RzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRv
cl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hcnJheXMuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2FzdHJhbF9wbGFuZV9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9n
ZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X29uX25vbi1pdGVyYWJsZXNfaXNfYV9ydW50aW1lX2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9zcGFyc2VfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfb3BlcmF0b3JfcHJlY2VkZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xvc2lu
Zy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvTWFwX01hcFtTeW1ib2wuc3Bl
Y2llc10uanMKQEAgLTExMDUsNyArMTEwNSw3IEBACiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29w
ZXJhdG9yX3dpdGhfYXN0cmFsX3BsYW5lX3N0cmluZ3NfaW5fZnVuY3Rpb25fY2FsbHMuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9n
ZW5lcmF0b3JfaW5zdGFuY2VzX2luX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhf
Z2VuZXJhdG9yX2luc3RhbmNlc19pbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyaWNfaXRlcmFibGVzX2luX2Fy
cmF5cy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5q
cwppbmRleCBhOGI5YjUzY2NjZmFlMWE1YjVhNjZjMTNiZDIzZThjYWU1MjdhYWE0Li45YTgyMTMy
YTYwZmMwZTc5MTk3MmMwNDMxOGQwN2I5ZTI2MDA0YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlw
ZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVu
Y3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBt
ZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJv
bC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0
b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hp
ZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2Rz
WydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJs
ZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBp
dGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2
YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5j
ZXNfb2ZfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3NDUz
OTMyNmM4OTcyYjc0YTc2MWZmNGQ4ZjI5YjJhNWFlODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZjMTU0
NDRhM2I2NGViODZlNjNjNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBn
bG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9u
IF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9k
cyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRl
cmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0g
eworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCks
IGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0
dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7
fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0
b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0
ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xv
c2luZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKaW5kZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2OWFk
ZTQyZTgzYWViOGIwM2Q0Zi4uMzJkMzE3YzBiODBhZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRkZmFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCkBA
IC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFy
IGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwg
bWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAh
PT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fy
ci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAg
fSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0
aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3Jd
ID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisK
IGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmdfdmlhX3Rocm93LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKaW5kZXgg
NDRhMDY1YTk2YTFjOWRlN2UyNmMzNjIwNmMxY2IzNjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3ZjVj
ZGExZjkyNDhlOTU2YWZiYTU0MjkzODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFf
dGhyb3cuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKQEAgLTEsMyArMSwyNCBA
QAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhp
czsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7Citt
ZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24n
IHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwor
dmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1
ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJu
JzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2
YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigp
eyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVz
dCgpIHsKIAogdmFyIGNsb3NlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMt
ZnJvbS1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNiY2Q5YTdlMTg4MzcwNzBjYWVlOGRmOGJj
YjE2OWI3NTU1NjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKQEAgLTAsMCAr
MSwzMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTog
JHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcnJheShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoYWN0dWFsLmxlbmd0aCwgZXhwZWN0ZWQubGVuZ3Ro
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBzaG91bGRCZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBwcmludChKU09OLnN0cmluZ2lmeShh
Y3R1YWwpKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9Cit9CisKKwor
ZnVuY3Rpb24gKmdlbihhLCBiLCBjKQoreworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICByZXR1cm4gdGVzdDsKK30KKwor
bGV0IGcgPSBnZW4oMSwgMiwgMyk7CitsZXQge3ZhbHVlOiBmdW5jfSA9IGcubmV4dCgpOworc2hv
dWxkQmUoZnVuYygpLmxlbmd0aCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2
NDc4ZmEyM2U0YmUzM2FiYWFmMTQ0NzI5MmE0NTliN2I4NmQxYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5q
cwpAQCAtMCwwICsxLDEwNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkK
K3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEs
IDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwg
YykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
ICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0g
eWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcy
KDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFs
dWUpLCBgeyIwIjo0MiwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7
IjAiOjQyLCIxIjo0MiwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQy
LCIxIjo0MiwiMiI6NDJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIg
ZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlv
biAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVs
ZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGZ1bmN0aW9uICpnMShhLCBi
LCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlp
ZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2NWNl
YjFmNDM2YzAyZTM2ZDhiMGFjNWJhN2RlMzI1NTU3NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMt
c3ludGF4LmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIp
OworCisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhF
cnJvcihgCitjbGFzcyBDb2NvYSB7CisgICAgKmNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgfQor
fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29u
c3RydWN0b3InLmApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICAqb2soKQor
ICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CisKK3Rlc3RTeW50YXgoYAor
Y2xhc3MgQ29jb2EgeworICAgIHN0YXRpYyAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7
CisgICAgfQorfQorYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWY1
YTU0YTJkYzQxMjcwNzljMzFjZmQzMWY5YjMxY2Y1MGFkNmU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9k
cy5qcwpAQCAtMCwwICsxLDYyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitjbGFzcyBBIHsKKyAgICAqZ2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7
CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICBz
dGF0aWMgKnN0YXRpY0dlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5
aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfQoreworICAgIGxldCBhID0g
bmV3IEEoKTsKKyAgICBsZXQgZyA9IGEuZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOwor
fQoreworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgIGxldCBnID0gbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30KKworewor
ICAgIGxldCBnID0gQS5zdGF0aWNHZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
QSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBBLnN0YXRpY0dl
bigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgQS5zdGF0aWNHZW4oKScpYCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzliZDc4ZGY3NmEwY2I3NThiODFlZWFiMmMyNTViOWRhZDFiNDQ3NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWV2YWwtdGhpcy5qcwpAQCAtMCwwICsxLDY1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworZnVuY3Rpb24gKmdlbigpIHsKKyAgICB5aWVsZCBldmFsKCJ0aGlzIik7Cit9CisK
K3ZhciBnID0gbmV3IGdlbigpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcubmV4dCgpLnZh
bHVlOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuYCk7CisKK2NsYXNzIEIgeyB9CisKKyhmdW5jdGlvbigpIHsKKyAgICBldmFsKCd0aGlz
Jyk7CisgICAgZXZhbCgndGhpcycpOworfSgpKTsKKworY2xhc3MgQSBleHRlbmRzIEIgeworICAg
IGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBldmFsKCd0aGlzJyk7CisgICAg
fQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IEEoKTsKK30sIGBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBD
IHsKKyAgICAqZ2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHlpZWxkIGV2YWwoJ3RoaXMnKTsK
KyAgICB9Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGcgPSBuZXcgYy5nZW5lcmF0b3IoKTsKKyAgICBnLm5leHQoKTsKK30sIGBUeXBlRXJy
b3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYy5nZW5l
cmF0b3IoKScpYCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGxldCBnID0gYy5nZW5lcmF0b3IoKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYyk7
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNjk2YWU1ZmQxOWY5ZDhjOGIwOGRlNmIwZWQ2YTViYWU3NWFmZGRmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rp
b24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAo
bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5H
ZW5lcmF0b3JGdW5jdGlvbiwgJ3VuZGVmaW5lZCcpOwordmFyIGdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IgPSAoZnVuY3Rpb24gKigpIHsgfSkuY29uc3RydWN0b3I7CitzaG91bGRCZShnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUo
Z2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IsIGdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmY3NzM2YzQyMzRlMTg3OTEwYjhjYTYzNTNjYmY0NWIwZDYwMDZiOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1
bmN0aW9uLW5hbWUuanMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBvayA9IGZ1bmN0
aW9uICpnZW5lcmF0b3IoKQoreworICAgIHlpZWxkIGdlbmVyYXRvcjsKK307CisKK3ZhciBnID0g
b2soKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0
LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1y
ZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEyMTdmNzJjODdjMDg5
OGU1OTA5YWJhZjM4NWJmMjA4OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5q
cwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cg
bmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJs
ZSgpOworfQorCit2YXIgZyA9IGdlbigpOworZy5yZXR1cm4oIkhlbGxvIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ODBhZjZlMDc4OWRjMThiYmFkM2EwYWZiYmY1YWQ5YTg1ZWMxMzVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
dGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworCit2YXIgZ2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCBnbG9iYWwpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3
IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQo
KTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7
fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAg
ICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsK
KyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgfQorICAg
IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAg
ICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNP
YmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7Cisg
ICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVhYzBkOWEzZTQxODc5ZWRkZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9u
IHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0
aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2
YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhyb3duID0gbnVsbDsKK3RyeSB7Cisg
ICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNoIChlKSB7CisgICAgdGhyb3duID0gZTsKK30KK2lm
ICh0aHJvd24gIT09IGVycm9yKQorICAgIHVucmVhY2hhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5l
dy10YXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzYjJkZjk5YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2
ZWFiOGRiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpAQCAtMCwwICsxLDE1IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgeWllbGQgbmV3LnRhcmdldDsKK30KKwordmFy
IGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworCit2YXIg
ZzIgPSBuZXcgZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdp
dGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci13aXRoLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNi
ZjhkNmM4OTc3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRlc3QoKSB7CisgICAgICAgIHJldHVybiBldmFsKCdzdXBlcicpOworICAgIH0KKworICAgIHNo
b3VsZFRocm93KCgpID0+IHRlc3QoKSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlk
IGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAg
ICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIuZ2VuKCknKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGEu
Z2VuKCkubmV4dCgpOworICAgIH0sIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBp
bnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBC
IHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAg
ICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKK30oKSk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5k
cyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93
KCgpID0+IHsKKyAgICAgICAgbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBl
ZDU2Njg4YTZhMjk4Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRW
ZWN0b3IgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9y
RWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAg
dW5zaWduZWQgbiA9IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyArK2kpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZm
MTIwMTNjNjQ4Li5mNDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAh
ZGVmaW5lZChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5F
UkFUT1JTIDAKKyNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0
MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVk
MTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFT
X1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5F
UkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwog
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVO
VF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcx
MjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDlj
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJP
WFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
Tkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFT
U19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJ
TFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1Njhk
NTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZf
QVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwog
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZf
R0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQppbmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNj
Li4wMmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9E
UkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9GSUxFX1NZU1RFTSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4
IGQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2
ZjdhMDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UK
QEAgLTc3LDcgKzc3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCAiVG9nZ2xlIEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2Vu
ZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklW
QVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9n
Z2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVt
cGxhdGUgbGl0ZXJhbCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUg
TGV2ZWwgMiIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZDJkYjIyODc3OWUxOGE1OWU4NTAzNzFiNjVmYzIzZWY1YmIyZGQ5
ZC4uNmEwODE0MzVhMmZiZmI2ODYwOTE0Y2M1ZjJlZTRmYjdiMmU3Y2ZjOCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTUtMTEtMjIgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBydW4td2Via2l0LXRlc3RzOiBodHRwIHNlcnZlciBmb3IgaW1wb3J0ZWQgVzNDIHRlc3Rz
IGRvZXNuJ3Qgd29yayB3aXRoIC0tbGF5b3V0LXRlc3RzLWRpcmVjdG9yeSBzd2l0Y2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjZGViNTI1Y2Y5NGI1YThlMTIx
YmEyNGUzNzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNjNTMyOTliYzI3MWQ5Yjc3Zjc0OGFk
MzA3MDVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xODUs
NyArMTg1LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5U
QVgiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0
aW9uID0+ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBF
UzYgbW9kdWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVT
IiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzlhNmJjZjY3NTRlMGYxNTEzZWQ2OGUxNGE4
YjA5MDE4MjI0NDhhYS4uMGQ3ZGU0ZWIwOGM5ZjBlMzQ5NTEzYzkxZTA2NmM2Y2RkNWJlMWI3OSAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE1LTExLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMjAg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgTkVUV09SS19QUk9DRVNTIGNvbXBpbGUgZmxhZwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggMGM4YWYy
YWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4uYTYyMzM3YjczZmQ2Yzg5NzcyYzZj
ZmEwMTY2OGY4MjFhMzMwZThhMSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MTEtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3Jz
IGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3Bz
OgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6
CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5hbmRyb25pa29zLXdlYmtp
dEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgYW5kIGNvbXBpbGUg
dGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlvbnMgQVBJIGFuZCBtb2RlbC4KZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
cy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
cy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJlNGRmYTc5MjlkN2UzM2NjZGNmLi5i
MDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4OGVkIDEwMDY0NAotLS0gYS9XZWJL
aXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKKysrIGIv
V2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBA
IC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPC9FTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgog
ICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4KZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
c0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFmMTU4ZWM1ZWU0ODNkMDY5NmM3MWNl
NDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2OWExYTk4MzUzODBhOCAxMDA2NDQK
LS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fp
cm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPgog
ICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJB
VE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JT
PC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAg
IDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAg
PEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266080</attachid>
            <date>2015-11-23 00:36:47 -0800</date>
            <delta_ts>2015-11-23 02:53:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123173631.patch</filename>
            <type>text/plain</type>
            <size>295671</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi4xMmQ3Njc4YzRmZjk2NzBi
YTBhZTdhYmQ5ZGQyZGM5ZTg4NmVkYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDIzIEBACisyMDE1LTExLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisKKyAg
ICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93aW5n
IGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBzYXZl
L3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jpbmcg
aW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9pbW0g
dG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUgZW50
cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1ha2Vz
IGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRoZSBm
b2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JTdGF0
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5pdGlhbDoKKyAgICAgICAgICAgICAgICAgICAg
Li4uCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgc2VxdWVuY2UuCisgICAgICAgICAgICAg
ICAgICAgIC4uLgorCisKKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8wKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWll
bGRfMDoKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1l
TW9kZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIG9wX3Nh
dmUoWWllbGRfMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAgICAgICAg
ICAgICAgICBjYXNlIFlpZWxkXzE6CisgICAgICAgICAgICAgICAgICAgIG9wX3Jlc3VtZSgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cpCisg
ICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
QGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gUmV0dXJuKQorICAgICAgICAgICAgICAgICAgICAgICAg
Li4uCisgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBzZW50VmFs
dWUgPSBAZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBSZXN1bWUgc2VxdWVuY2Ugc2hvdWxkIG5vdCBiZSBlbWl0dGVkIHBlciB5aWVsZC4KKyAg
ICAgICAgICAgIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTU1Mi4KKworICAgICAgICAyLiBTdG9yZSBsaXZlIGZyYW1lIHJl
Z2lzdGVycyB0byBHZW5lcmF0b3JGcmFtZQorCisgICAgICAgIFRvIHNhdmUgYW5kIHJlc3VtZSBn
ZW5lcmF0b3IncyBzdGF0ZSwgd2Ugc2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGluIEdlbmVy
YXRvckZyYW1lLgorICAgICAgICBBbmQgd2hlbiByZXN1bWluZywgd2UgcmVmaWxsIHJlZ2lzdGVy
cyB3aXRoIHNhdmVkIG9uZXMuCisgICAgICAgIFNpbmNlIHNhdmVkIHJlZ2lzdGVyIGNvbnRhaW5z
IHNjb3BlIHJlZ2lzdGVyLCB8dGhpc3wgZXRjLiwgdGhlIGVudmlyb25tZW50IGluY2x1ZGluZyB0
aGUgc2NvcGUgY2hhaW4gd2lsbCBiZSByZWNvdmVyZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAg
V2hpbGUgc2F2aW5nIGFuZCByZXN1bWluZyBjYWxsZWUgcmVnaXN0ZXJzLCB3ZSBkb24ndCBzYXZl
IHBhcmFtZXRlciByZWdpc3RlcnMuCisgICAgICAgIFRoZXNlIHJlZ2lzdGVycyB3aWxsIGJlIHVz
ZWQgdG8gY29udHJvbCBnZW5lcmF0b3IncyByZXN1bWUgYmVoYXZpb3IuCisKKyAgICAgICAgMy4g
R2VuZXJhdG9yRnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5lcmF0
aW5nIEdlbmVyYXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQgYmUg
ZXZhbHVhdGVkIGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBsZSwK
KworICAgICAgICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBmdW5j
dGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHlpZWxkIGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7ICAv
LyBOb3csIGhlbGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMs
IHdlIGV2YWx1YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRlciB0
aGF0LCB3ZSBjcmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhpcyBj
YW4gYmUgZXhwbGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICogQVBJL0pTU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9y
LnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6
CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9G
aXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
TGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
dmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OnRyeUdldCk6CisgICAgICAgIChK
U0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hl
Ojppc0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpT
Qzo6RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnBh
cnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24p
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c3VwZXJC
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNocmlua1RvRml0KToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9mTGl2ZUNhbGxlZVJlZ2lz
dGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkTGl2ZUNh
bGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVP
YmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAv
SGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZlQ2VsbCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNBdG9t
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIv
QVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5j
dGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJz
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNl
RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNl
dElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAg
ICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJz
ZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENo
ZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpz
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAg
IChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVy
YXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZWdpc3Rl
ckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlw
ZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9y
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBs
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6
ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVM
b2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRl
c3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAg
KGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNl
c19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0
ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0
KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Ns
b3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5
bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdfdmlh
X3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGdl
bik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAo
dGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5
bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EucHJvdG90eXBlLm9r
KToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2Nv
YS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3RvdHlwZS5nZW4pOgor
ICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoQik6CisgICAgICAg
IChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6CisgICAgICAgIChDKToKKyAg
ICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJl
Zm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAg
ICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAg
KGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAo
dW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6CisgICAgICAgIChCKToK
KyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToKKwogPT0gUm9sbGVkIG92
ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5NGMwNmY0ZmFiMDlmZjAz
YTY0MTc4MGUzZjI2YWMzYWQ4ZC4uODY5ZjIyMDQ1NjY2NTljMzhlZjU0YWE5ODNjM2U3MDdjNTA2
ZmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zh
c3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNldEJp
dCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUtMTEtMTggIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBG
QUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2ViQ29yZTo6b3BlblRl
bXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1ZjFhMjNlMjI4ZTdkZGMwYzhiZDBiZTAxZjUw
NjcwMGQ3NmM5YzEuLjEzZDQwMTBmOTQyZWU0MDg1OTVkNDU0MmQxZjliZDFlOWQ2MjgwOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjIgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IHNlbGVjdGlv
biBzaG91bGQgbm90IGNvbnN1bHQgZm9udC12YXJpYW50IHByb3BlcnR5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggM2I5OWY0ODgxOTFjYTIzMDYxZWQyMGQ3OGU4NzEzMzFkNDUxZTQ2MC4uMTU3NTdhYmZl
Mzg1ZTk0YTNmZGQ2N2QwYzFkNmMyYjY5Yzg1YzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSAr
MSwxMCBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3Ig
RVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIx
ID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggY2U2Mzc4ODcyNjI4NGMwYmEzZjE1YzhhM2I1OWNjMWY3YjE2MGQz
Yy4uMTE0ZjFlZTdjZmJiN2Q2YzkwNDczMjYzNWRhMjEzYTQ0ZGNhODI5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE1LTExLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBw
b3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG1pc3Np
bmcgaW5zcGVjdG9yIGZpbGUgdG8gR1RLKyBjb21waWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggM2I3Yjc2YmYzYTQ0NGM5MjFiZTk3M2M1NzZj
MTlmNjkyZThkMjMyZC4uMmYzNzQyMzAwOTdiNTA4MjU4M2Y4NDQyN2I5MjU3OTM3ZDMwOTMwNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpT
Qzo6UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCAKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDMwZmZlMzBjOTIyZThkZjQwNzcxOWQzNjQ3NWI2
YjYxMWU4Mjk2Li5kNzA3ZTMzYmQzMWExMDAzYzc1MWM3ZDg4YjBlNzAwNDFlY2NkNWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjMsNiArNTYzLDEwIEBAIHNldChK
YXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNw
cAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUv
SWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTYwMiw2ICs2
MDYsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9K
U0RhdGVNYXRoLmNwcAogICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBy
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cAogICAgIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5jcHAKQEAgLTczNyw2ICs3NDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9T
T1VSQ0VTCiAgICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTExOTUsNiArMTIwMSw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMKKyAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1
NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0
OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVf
Q0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9F
UzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJM
RV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVT
ID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVN
UExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDJmNjVkYjU1YTFlZWQzNjQ5Y2ZlMzNkNzhiOTI2YzYyNTEzYTlmNjguLmZkZTU3
ZTkzOGRiZDRmYTJkYmU1YzE0ZDdiYzhmYmUxMTUxNzAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04NCw2ICs4NCw3IEBAIEphdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0FycmF5LnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVu
Y3Rpb24ucHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5l
cmF0b3IuUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9i
YWxPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVD
VF9MVVRfSEVBREVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQ
cm90b3R5cGUubHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5s
dXQuaCBcCiAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCAzZTdmOTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi4xODkxMTk0
NzkxZmIyZDA3NWRiYWY3YjE1ODdmZmM4M2U2M2JjNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsx
NjA4LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvblByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxGdW5jdGlvblJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0
LmgiIC8+CkBAIC0xNjYwLDYgKzE2NzIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGE2ZDNmZjAwZTI1MDNhY2JjMzY3OTBhMzZl
NmVlNDM3YTkzNGJmYTguLjI3Y2MzNmRiYjE0OTA1NDhkMjg4NTFkMzAzYTk5Nzc2OWRhMDJjZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTY2Niw2ICs2NjYsMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25SYXJlRGF0YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZyYW1lLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0
dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTc0Nyw2ICs3NTksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xv
YmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTI2MTIsNiArMjYyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
Q29kZUtleS5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+
CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgx
Myw2ICsyODMxLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUmFyZURhdGEuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJh
bWUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90
b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpcy5oIj4K
KyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yOTE4LDYgKzI5NTEsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMyODIsNiArMzMxOCw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90
b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVk
IFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8
RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDc0OTE2Y2NjYzI2ZWQzZDg2NGRiZDUwZjBkOTE2
MzM5MzBhZTEzLi4yN2RlNDU5NmE0YmJhOTliNGNiNmM2MzUwYjYwZDcyYjJkN2UyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMyw2ICsxMjAzLDE5IEBACiAJCTcwOUZC
ODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2
OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZB
IC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFD
MDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
OyB9OworCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi87IH07CisJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOTgxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBC
NzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0
b3JUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlCMUMwMjRBNDYwMDI0
ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBC
NzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0Uw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8q
IEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBE
QzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlBMDkxQkU3RDY5RTAw
NUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5
LmggKi87IH07CkBAIC0xOTYyLDggKzE5NzUsOCBAQAogCQlGRTBENEEwOTFBQkEyNDM3MDAyRjU0
QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAv
KiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OwogCQlGRTEyMjAyNzFC
RTdGNThDMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklU
QWRkR2VuZXJhdG9yLmggKi87IH07CiAJCUZFMTIyMDI4MUJFN0Y1OTEwMDM5RTZGMiAvKiBKSVRB
ZGRHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi87
IH07Ci0JCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZC
QzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAv
KiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgKi87IH07CisJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTAw
MUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxQzBGRkQx
QjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
MUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8q
IEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTElu
dENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKQEAgLTMy
NjcsNiArMzI4MCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg2MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg5
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQ
cm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEIxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2VuZXJhdG9yVGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4
RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJhdG9yLnByb3RvdHlw
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBE
RTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTA3Nyw2ICs1MTA0LDcgQEAKIAkJCQk5OTZCNzMwODFCRDlGQTJDMDAzMzFCODQg
LyogRGF0ZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4
NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcw
MDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVBNzEwRDE5RjZERjgx
MDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBA
IC01MjA1LDYgKzUyMzMsNyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1
bHRUeXBlLmggKi8sCiAJCQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNvdXJjZUNvZGUu
Y3BwICovLAogCQkJCTY1RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VDb2RlLmggKi8s
CisJCQkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLywKIAkJ
CQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovLAogCQkJ
CTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICovLAogCQkJCUU0
OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLywKQEAg
LTUzMzQsNiArNTM2MywxNSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5j
dGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5j
dGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVu
Y3Rpb25SYXJlRGF0YS5oICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgKi8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBCNzkxODcxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3
MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAq
LywKKwkJCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCAqLywKKwkJCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBl
LmggKi8sCisJCQkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCAq
LywKIAkJCQkwRkUwNTAxMTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICov
LAogCQkJCTBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oICovLAogCQkJCTBGRTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0Lmgg
Ki8sCkBAIC01NDMzLDYgKzU0NzEsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAv
KiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNG
dW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9u
SW5saW5lcy5oICovLAorCQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5l
cmF0b3JGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmggKi8sCkBAIC02NTQxLDYgKzY1ODEsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFB
RDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1
bmN0aW9uLnByb3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgxRTIgLyog
R2VuZXJhdG9yLnByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVEOUEzMDA5REIxRUYg
LyogR2xvYmFsT2JqZWN0LmpzICovLAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEEx
QTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLApAQCAtNjk1Miw2
ICs2OTkzLDcgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExv
b3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZH
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERG
R05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBC
NzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03MDAxLDYgKzcwNDMsNyBAQAogCQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBE
RkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwODU2MTlB
MjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAv
KiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0
MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzIyMSw2ICs3MjY0LDcgQEAKIAkJCQlBNTBFNEI2
MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VD
b2RlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyog
SW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0
IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNBMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzI0Nyw2ICs3MjkxLDcgQEAK
IAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
YXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNG
QTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29y
ZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzkwLDYgKzc0MzUsNyBAQAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgx
RTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkIx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlw
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQyNiw2ICs3NDcyLDcgQEAKIAkJCQlGRTE4N0EwMjFC
RkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYw
NiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NTFCNzk0RjhB
MDBFREFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU2
MUI3OTRGOEYwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
NTk4LDYgKzc2NDUsNyBAQAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRG
dW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkY2MTg0RUFCMjQw
MDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUQxQzAy
NEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MzAsNiArNzY3OCw3IEBACiAJCQkJQkMx
OEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25n
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFB
IC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2NDcsNiArODY5Niw3IEBA
CiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2
OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3MEI3OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZDMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04NjczLDYgKzg3MjMsNyBAQAogCQkJCTBGNzY2RDI4MTVBOEND
MUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2
NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkxRTE2ODc4
RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzcxMkUy
MTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElW
YWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODEwLDYgKzg4NjEsNyBAQAogCQkJ
CTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0ND
QSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcw
MDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIz
QTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
ODk1Niw2ICs5MDA4LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2
X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAv
KiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkx
MDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTYxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlu
a2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0
QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTg5NjQsNiArOTAxNyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlh
YmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAw
QkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgxNmI0YTVkMzBiNTIw
YjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMuLjQ4ZWY3ZmYzYThlYmE2YjQ1ODk2OTIyYzE3ZDY0
YjEwNTE0Yzk5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlz
UGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAot
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZXJyb3IsCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3Rvcktp
bmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsK
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0
QWJpbGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGR1bW15VERaVmFy
aWFibGVzLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFi
bGUtPnNldE5hbWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAg
cmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVlNjlj
ODNmYzBlODViZjQ0MTVhYjE3MTc0ZmVkMTRlNTUxOGVjMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0w
LDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2Z1bmN0aW9uIG5leHQoc2VudFZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIGxldCBzdGF0ZSA9IHRoaXMuQGdlbmVyYXRvclN0YXRlOworICAgIGxldCBkb25lID0g
ZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYgKHN0YXRlID09PSAtMikKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKworICAgIGlm
IChzdGF0ZSA9PT0gLTEpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIHZhbHVlID0g
dW5kZWZpbmVkOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlz
LkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAgLy8gRXhlY3V0aW5nLgorICAgICAgICAgICAgdmFsdWUg
PSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHN0
YXRlLCBzZW50VmFsdWUsIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUgKi8gMCk7
CisgICAgICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9yU3RhdGUgPT09IC0yKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsKKyAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAg
ICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTE7ICAvLyBDb21wbGV0ZWQuCisgICAgICAg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBkb25lLCB2
YWx1ZSB9OworfQorCitmdW5jdGlvbiByZXR1cm4oc2VudFZhbHVlKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIGxldCBzdGF0ZSA9IHRoaXMuQGdlbmVyYXRvclN0YXRlOworICAgIGxldCBk
b25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYgKHN0YXRlID09PSAtMikKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKwor
ICAgIGlmIChzdGF0ZSA9PT0gLTEpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIHZh
bHVlID0gc2VudFZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICB0aGlzLkBnZW5lcmF0b3JTdGF0ZSA9IC0yOyAgLy8gRXhlY3V0aW5nLgorICAgICAgICAgICAg
dmFsdWUgPSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRo
aXMsIHN0YXRlLCBzZW50VmFsdWUsIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUg
Ki8gMSk7CisgICAgICAgICAgICBpZiAodGhpcy5AZ2VuZXJhdG9yU3RhdGUgPT09IC0yKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsKKyAgICAgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
KyAgICAgICAgICAgIHRoaXMuQGdlbmVyYXRvclN0YXRlID0gLTE7ICAvLyBDb21wbGV0ZWQuCisg
ICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBk
b25lLCB2YWx1ZSB9OworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgbGV0IHN0YXRlID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7CisgICAg
bGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAoc3RhdGUgPT09IC0y
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIp
OworCisgICAgaWYgKHN0YXRlID09PSAtMSkKKyAgICAgICAgdGhyb3cgZXhjZXB0aW9uOworCisg
ICAgdHJ5IHsKKyAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMjsgIC8vIEV4ZWN1dGlu
Zy4KKyAgICAgICAgdmFsdWUgPSB0aGlzLkBnZW5lcmF0b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVy
YXRvclRoaXMsIHRoaXMsIHN0YXRlLCBleGNlcHRpb24sIC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6
OlRocm93TW9kZSAqLyAyKTsKKyAgICAgICAgaWYgKHRoaXMuQGdlbmVyYXRvclN0YXRlID09PSAt
MikgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAg
dGhpcy5AZ2VuZXJhdG9yU3RhdGUgPSAtMTsgIC8vIENvbXBsZXRlZC4KKyAgICAgICAgdGhyb3cg
ZXJyb3I7CisgICAgfQorICAgIHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMjk5MGZh
ZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFjNjJlOC4uNWU2ZDU5ZGYxMjdkMmJlN2QyZDEz
MmNkMzMwZjNhN2I4YmYyN2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwgImxlbmd0aCIg
OiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAi
bGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3Ro
IiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgi
IDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90
b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0KKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGE2
MTMyYzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4ODZlNWQ2NjY4NDUuLjM3NDM2YzAxNTY1NDllOWY3
YzAxZGM0MWEwMmVlM2RkOGI1YWZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC03MCw4ICs3MCw5IEBAIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxsOgogICAgIGNhc2Ugb3Bf
am5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3BfaW5jOiAKLSAgICBjYXNl
IG9wX2NvcHlfcmVzdDogeworICAgIGNhc2Ugb3BfaW5jOgorICAgIGNhc2Ugb3BfY29weV9yZXN0
OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Cisg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU0LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ug
b3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czog
ewpAQCAtMjMzLDYgKzIzNiwxNCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBs
YXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIHZlY3Rv
ciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxv
Y2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI1NSw2ICsyNjYsNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoK
ICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgorICAg
IGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgog
ICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzE1LDYgKzMyNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAg
Y2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6Cisg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9j
YWxsX3ZhcmFyZ3M6CkBAIC0zOTAsNyArNDA0LDE1IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KQog
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47Ci0gICAg
fSB9CisgICAgfQorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCBmY2E2MzAxNDkxODI2YmVlMTAwMTI0YzJmNmFlNDJmMThkZWY5OWVlLi4zYzEy
ZGI4YTc2ZTM0OGI5NzRiMDdhNjQyODNiOTIzOWVlZTFkZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI5NCw2ICsxMjk0LDE0IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuYyIpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzE5LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBj
YWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2ICsxNTE1LDIwIEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZl
Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJh
dG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50
IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGxpdmVDYWxs
ZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCks
IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3Bl
cmFuZDsKQEAgLTE3MjAsNiArMTc1MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAg
bV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0
YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3Ro
ZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0
WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOwog
ICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0xODc1
LDYgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBk
ZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKCkpIHsKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZFtpXSA9IHVubGlua2VkQ29kZUJsb2Nr
LT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBieXRlY29kZQpAQCAtMzA0OSw2
ICszMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5r
TW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAg
ICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdv
dWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdj
MTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMuLjFhMGI5OGYwY2RiMmMxNWQ2MDAyYWZj
NDlhNDJhZGJhMDNiZGIwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
ICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
MTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGlu
dCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAg
dm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVl
UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVSZWdpc3RlcnM7IH0KKwogICAg
IGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRlcnM7
IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0KIApAQCAtNjU0
LDYgKzY1NywxMCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJp
bmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5k
KFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJu
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisg
ICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBpbnQzMl90
IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNy
ZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0
ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBSRUxFQVNFX0FTU0VSVCht
X3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWll
bGRbaW5kZXhdOyB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2Fj
aGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC05MDAsNiArOTA3LDggQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFi
bGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4g
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9y
PiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOworCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUg
bV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1OGMw
NmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBmOGJlZGIwNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAKIAogICAgIGNsYXNz
IEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRy
eUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0
Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUgdGhpc1RE
Wk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNDYWNo
ZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29u
dGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0
cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtl
eShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0
aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJj
ZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRo
aXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUq
IHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7
CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZh
cmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0
YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNl
KSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAg
ICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwg
JnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3Vy
Y2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykKLSAgICAg
ICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwoKSwgV3JpdGVCYXJyaWVy
PEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAg
ICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNj
b3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykgeworICAgICAgICAg
ICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VD
b2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6
OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIG1fY2FjaGVN
YXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+
dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQpAQCAtODAs
MTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKSB8fCBzY29w
ZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3Vy
Y2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFi
bGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpT
U2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJZiBldmFsKCkgaXMgY2Fs
bGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwgd2UgY2FuJ3Qgc291bmRs
eSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElmIHRoZSBldmFsKCkgb25seSBoYXMgYWNjZXNz
IHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQuCiAgICAgICAgICAgICBy
ZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAgICAgICAgICAgICAmJiBldmFsU291cmNlLmxl
bmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSAKKyAg
ICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxTb3VyY2UubGVuZ3RoKCkp
IDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKQogICAgICAgICAg
ICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUoc2NvcGUpOwogICAgICAgICB9CiAgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPj4g
RXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlQ29kZUtleSwgV3Jp
dGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291cmNlQ29kZUtleUhhc2gsIFNvdXJjZUNvZGVL
ZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hl
TWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1
ZC4uMzViZjdkZmI1OWFhNmY5ODlhOTM0NTY5MGM2OThjNmNjNmQ4MjIwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI2LDIxICsy
NiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxlSW5mb19oCiAjZGVmaW5lIEV4ZWN1dGFibGVJbmZv
X2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXMuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2Rl
cyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQu
CisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0
aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9y
LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0
aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1
Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0
aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAg
ICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3Ry
dWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVp
bHRpbkZ1bmN0aW9uKQorICAgICAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZ2VuZXJhdG9yVGhpcykpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVu
Y3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQorICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNl
TW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CisgICAgICAgIEFTU0VSVChtX3N1cGVy
QmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CisgICAgICAg
IEFTU0VSVChtX2dlbmVyYXRvclRoaXMgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRv
clRoaXMpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC00OCw4ICs1NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhp
cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9y
VGhpcyk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
LSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0
aW9uOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CisgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAtNTcsOCArNjYsMTAg
QEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6
IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lz
QnVpbHRpbkZ1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwog
ICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJy
b3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOworICAgIFNv
dXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uM2MzMTlk
MDZlMzk5N2VkZWYzZDMyNzg3YjliOTM3MmZmZTI3MWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCAr
NjUsMTIgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkK
LSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBt
X2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpcygp
KSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVy
QmluZGluZygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQog
ICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNl
TW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkK
ICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3
NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uZTFiMDk1YjZhZDY1MmUwMDg3ZDlhNTMyNzE3NTgxODBj
ZjY3NjhlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgog
I2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJ
bmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDEs
NiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2LDcgKzExOCw3IEBA
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0Nv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wg
dXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAg
ICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxT
Y29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDQsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRo
aXMpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNo
cmlua1RvRml0KCkKICAgICB7CkBAIC0yMjMsNiArMjI3LDcgQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3Rh
bnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ0LDYgKzI0OSwxMSBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBh
ZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsg
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8g
TGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBzaXplX3QgbnVtYmVy
T2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEg
PyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkLnNpemUoKSA6IDA7IH0K
KyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3Ig
dmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBBU1NF
UlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNB
dFlpZWxkW2luZGV4XTsgfQorCiAgICAgdW5zaWduZWQgYWRkRnVuY3Rpb25EZWNsKFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBuKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1f
ZnVuY3Rpb25EZWNscy5zaXplKCk7CkBAIC0zODcsMTIgKzM5NywxNCBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzIDogMTsKKyAgICB1bnNp
Z25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAg
ICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAg
IFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJl
czsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCkBAIC00MzYsNiArNDQ4LDggQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAg
ICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOwor
CiAgICAgICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHBy
ZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li5kYzZkODY1
ZjgyMzU3MTA2ZGVmN2Q0Y2E1NTNiMjlkNzUwN2ZiOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25L
aW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlv
bikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBl
cnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFy
c2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
OwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0
cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0
YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBm
dW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJz
ZU1vZGUoKSwgZXJyb3IsIG51bGxwdHIpOworICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJs
ZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBp
ZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcs
NyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0
aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAg
CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxl
SW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBm
dW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rp
b25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3Rv
cktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0
aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5p
c1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBl
eGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBw
YXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
R2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBl
cnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
CitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZp
cm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAs
IG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0
eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25N
b2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkK
KyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhp
cykpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3Vw
ZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNj
b3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcg
KzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVj
aWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rp
b24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewog
ICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoK
QEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVy
cm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5
YzFmOC4uOGI4MjcxYTZjM2Y2Y2M1ZDIxOWQ0NjljMTNkZTU2M2YzYjNmMmJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgog
I2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJ
bmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUs
MTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJp
ZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlz
LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3Vy
Y2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
LCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0cmlj
dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVu
Y3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0
aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsg
fQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAgdW5zaWduZWQgdW5s
aW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlv
bk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTgsNyBA
QCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3Io
CiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29s
KTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCom
IGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEyOCw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJp
bGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVz
OyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4m
JiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYs
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9y
VGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdDsKIApAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RB
YmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNp
Z25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1f
aXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwor
ICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiOTM3MGM4ZDI4NGEz
ODRmMjFlMGU3ODkyNjg1NDVjOTJiMTk4MjNiLi44ZDFlNmMyMjdhZGJlYTg2OWQ0NTdmYzI4YWNi
YWY1MWFiZTA3NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdp
c3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKQEAgLTIyNyw5ICsy
MjgsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2st
PnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1f
c2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERl
YnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVu
dHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFs
KCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1
bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBm
dW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYgbmVl
ZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFy
Z3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJh
cmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2Vu
ZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAgICAv
LyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1l
bnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZy
b20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4o
YSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJldHVy
biB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAgICAg
ICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhl
IGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAgICAg
IC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9Cisg
ICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAg
IGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+
dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAKQEAg
LTI1NCwxNCArMjc5LDM0IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lz
dGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXplUGFy
YW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNy
ZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNl
ZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBh
ZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fcGFyYW1l
dGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6
RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsK
KworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3Rh
dGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2Ug
dG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRo
ZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9y
IGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIoKSk7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVy
YXRvclN0YXRlTGFiZWwoKTsKKyAgICB9CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3Bl
KGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsK
KyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5
bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
ICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25O
b2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5
bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1
bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIs
IG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncykgewogICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0g
YWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1l
bnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2Ug
aGF2ZQpAQCAtMjcxLDE5ICszMTYsNiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUg
Y29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1
cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3Rl
ZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNl
cnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFs
aXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVy
biA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQ
YXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRl
cik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1l
dGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxp
emVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBp
bnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNB
bnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAgIGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1MDgsMzUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVy
ID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7Cisg
ICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBj
b2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25U
aGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5l
cmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAgIC8vIEZJWE1FOiBFbWl0IHRvX3Ro
aXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAg
ICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
a2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisKKyAgICAgICAgZW1pdE1vdmUo
bV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICBlbWl0Q3Jl
YXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgLy8gfHRo
aXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KKyAgICAgICAgZW1p
dExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkg
ewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lz
dGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTUyLDggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90
aGlzUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxs
ICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFy
YW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03
OTksNiArODU4LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXpl
TmV4dFBhcmFtZXRlcigpCiAgICAgcmV0dXJuICZwYXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKK3sKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQg
YWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAg
IC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdy
b3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisg
ICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5k
ZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5z
aXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZp
cnN0OworICAgICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0
UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAg
IH0KK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZp
cm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwpAQCAtODU1LDYgKzkzMCwyMSBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3VGVtcG9yYXJ5KCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVl
UmVnaXN0ZXJzKCkKK3sKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIEZhc3RCaXRW
ZWN0b3IgdmVjdG9yOworICAgIHZlY3Rvci5yZXNpemUobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgp
KTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBt
X2NhbGxlZVJlZ2lzdGVycykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAg
ICAgICB2ZWN0b3Iuc2V0KGkpOworICAgICAgICArK2k7CisgICAgfQorICAgIHJldHVybiB2ZWN0
b3I7Cit9CisKKwogTGFiZWxTY29wZVB0ciBCeXRlY29kZUdlbmVyYXRvcjo6bmV3TGFiZWxTY29w
ZShMYWJlbFNjb3BlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUpCiB7CiAgICAg
Ly8gUmVjbGFpbSBmcmVlIGxhYmVsIHNjb3Blcy4KQEAgLTIzMTIsMTIgKzI0MDIsMTIgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0
aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRl
VGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1NjEsNiBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUq
IGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwg
bV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19
Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5h
bChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3Bf
bmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5
MywxMyArMjU2OSwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1Jl
Z0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9
CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3Rl
cklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdp
c3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bj
b2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5j
X2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+
bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlv
bkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgewor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAg
ICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7Cisg
ICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAg
IAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOwpAQCAtMjUxMiwxNyArMjYwMCwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJO
b2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0
TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXRO
ZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0Owog
fQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Cisg
ICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9j
b2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXND
bGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0
eSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0
TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAg
IGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4g
ZHN0OwogfQogCkBAIC0yNTQwLDYgKzI2MjksMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIK
ICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0
aW9uKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0
T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bj
b2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2Fs
bEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7
CkBAIC0zNzY2LDYgKzM4NjgsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
TmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdp
c3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7Cisg
ICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxs
QXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0
TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVt
aXRNb3ZlKG5leHRBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAg
ICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3Vt
ZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgp
KTsKKyAgICB9CisgICAgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5l
d0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3Jh
cnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVy
cm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiIpKTsKKyAgICAgICAgZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQor
ICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRv
ckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzg0
Miw0ICszOTYyLDIwOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3RQ
YXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7CisgICAgaW50MzJfdCBsaXZlQ2FsbGVlUmVnaXN0ZXJz
SW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNh
bGxlZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKyAgICBlbWl0UmV0dXJu
KGFyZ3VtZW50KTsKKworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9w
Y29kZShvcF9yZXN1bWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJl
Z2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJl
Z2lzdGVyc0luZGV4KTsKKworICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3Jt
YWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJl
bCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwg
dGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOwor
ICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdp
c3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7Cisg
ICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0K
KyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisgICAg
Ly8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJv
dyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRM
YWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkK
K3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsKKyAg
ICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgeworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CisgICAgICAg
ICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAgICAgICAg
ICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZv
dEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBu
ZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVt
ZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5k
ZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisK
KyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BI
aW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZl
Q2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAg
ICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAg
ICAgICAgICAgIGVtaXRSZXR1cm4odmFsdWUuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1p
dEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jl
c3VtZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVt
aXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCks
IG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhy
b3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bf
c3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgp
KTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRv
clJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gUmV0dXJuLgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhv
ZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLnJldHVybktleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkp
LCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1
cm5Bcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0
LmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJn
dW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5k
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVl
bmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihB
U0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJh
dG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5S
ZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3Bl
cyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJu
U2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9u
ZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChs
b29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0
dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJ
bkZpbmFsbHlCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29w
ZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJl
dHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dN
ZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwg
dGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0Lmdl
dCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50
cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAg
ICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVs
ZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRN
b3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUu
Z2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdl
dCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkp
OworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKwordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7Cisg
ICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwg
Y29tcGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7
CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFi
ZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVy
YXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNo
SW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5k
R2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJ
bmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0
YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNv
ZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZh
dWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCArIDMpOworCisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJs
ZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRj
aEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4g
PSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDAp
OworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5z
aXplKCk7ICsraSkgeworICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBj
bGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBs
YWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQo
IW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBU
YWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVz
cywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDM4YjY1OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYu
LmUxMTM3M2MxYzc0NmMzMjc5OGI4YzZlYzA2YzYxMDdiMmJlZjM2YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJl
bC5oIgpAQCAtMjgwLDYgKzI4MSw4IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9y
VGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCk7IH0KKyAg
ICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5zdXBlckJpbmRpbmcoKTsgfQogCiAgICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7
CiAKQEAgLTI5Nyw2ICszMDAsOCBAQAogCiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0
ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJl
Z2lzdGVycyByZXR1cm5lZCBieQogICAgICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1v
ZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0
ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAgaXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmlu
ZyB0aGF0CkBAIC00OTksMTAgKzUwNCw4IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdB
cnJheShSZWdpc3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8g
c3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5j
dGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWdu
ZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0
aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIApAQCAtNTk2LDYgKzU5OSw3IEBACiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSogbm9kZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFs
dWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFs
dWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKICAgICAgICAgdm9pZCBl
bWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1l
dGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CkBA
IC02NDQsMTIgKzY0OCwyNCBAQAogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQq
LCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMy
X3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCog
ZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9p
ZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Cisg
ICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVu
ZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNv
ZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsg
fQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRF
bWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjgzLDgg
QEAKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzY29wZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1bmN0
aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSwgYm9vbCBpc0NhcHR1cmVkKTsKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHByZXNz
aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKik7CisgICAgICAgIEZhc3RC
aXRWZWN0b3IgbGl2ZUNhbGxlZVJlZ2lzdGVycygpOwogCiAgICAgcHVibGljOgogICAgICAgICB2
b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9w
dGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9
IG51bGxwdHIpOwpAQCAtNzUyLDEyICs3NzAsMjIgQEAKICAgICAgICAgICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRl
clREWih2YXJpYWJsZXNVbmRlclREWik7CiAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBm
bGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxk
IGJlIHJlb3JnYW5pemVkLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTU0NwogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IG1ldGFkYXRhLT5wYXJzZU1vZGUoKTsKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKLSAg
ICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8
IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJp
bGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSAmJiBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCisg
ICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdDsKKworICAgICAgICAgICAgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzID0g
R2VuZXJhdG9yVGhpczo6Tm9uRW1wdHk7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yVGhpcyA9IEdlbmVyYXRvclRoaXM6OkVtcHR5OwogCi0gICAgICAg
ICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Nj
b3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmls
aXR5LCB2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFk
YXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCB2YXJp
YWJsZXNVbmRlclREWik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1Vu
ZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTc2NSw2ICs3OTMsNyBAQAogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1l
bnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdz
KE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQq
IHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZy
ZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmls
ZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAor
ICAgICAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYpOwog
ICAgICAgICB2b2lkIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRh
YmxlQ29uc3RhbnRJbmRleCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlvblBhcmFtZXRlcnMmLCBG
dW5jdGlvbk5vZGUqLCBTeW1ib2xUYWJsZSosIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoVW5pcXVlZFN0cmluZ0ltcGwqKT4mIGNhcHR1cmVz
KTsKIApAQCAtODA0LDYgKzgzMyw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIG1fdG9wTW9zdFNj
b3BlIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2FyZ3VtZW50c1JlZ2lzdGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2dlbmVyYXRvclJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3Rl
ciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3Rl
ciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7
IG51bGxwdHIgfTsKQEAgLTgyNyw2ICs4NTcsNyBAQAogICAgICAgICBWZWN0b3I8U3dpdGNoSW5m
bz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNv
bnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOworICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4g
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5
cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJp
YWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwg
RnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAg
Ym9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDMx
MmE4YzdhY2UwNDE1NjA4YmQzNzQ3ZGVkYTc4NjhlNWJiZDBmNTIuLjc5NmQ3NDdjZmYwNDVmNjVj
NjNhYzllYTJkN2JiNzM2ZGFjZTdjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5o
IgpAQCAtMTQ1LDcgKzE0Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVy
SUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8
fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
KQorICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5l
cmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVy
SUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKLXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJC
YXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0
ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
cikKIHsKICAgICBSZWdpc3RlcklEIGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFj
azo6Q2FsbGVlKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2Jq
ZWN0UHJpdmF0ZU5hbWUpOworfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3Qg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVl
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0
aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhv
bWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1
ODksNyBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXRO
b2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3Qs
IGpzVW5kZWZpbmVkKCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5S
ZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFs
bHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2
NiwyNiArMjk3Miw5NiBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZz
ZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29k
ZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0
dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2Rl
KCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7
CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJU
KGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHBy
ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVy
YXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBu
ZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sg
Zm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQg
b2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0
ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50
SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RT
dGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0
ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBz
dGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBz
dG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2Uu
CisgICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2Ug
SlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBD
KysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwg
bmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoMCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9y
LmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkg
aW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCog
cjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
IDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5T
dGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmls
ZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdl
bmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5l
cmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1l
bnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNh
dXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChz
dGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgp
LCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3Iu
Z2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4g
Z2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0
ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9k
ZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdl
dCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwu
Z2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJh
dG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50
c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAg
ICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5l
cmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5v
ZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBS
ZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1
cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmds
ZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQt
PmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudElu
QmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3Rh
dGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0
YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5v
ZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21h
dGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAg
ICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0
ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24g
aW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3Vy
Y2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNh
bGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMs
MTEgKzMwODksMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWll
bGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hl
biBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAg
ICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVu
dGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAg
ICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxk
KGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsK
KyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQo
YXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5n
ZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCmluZGV4IDIwN2UwYjMzZTk4MjM5ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUw
ZmVhZDNkMjIwMGE5MjAyNDYyYzAwOTgyYmI0MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKQEAgLTk2LDYgKzk2LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNj
YW4gdG8gcnVuIGZhc3Rlci4gCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNr
UmVzb2x1dGlvbiA9IDE2OwogCisgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1
ZVBvaW50ZXIpOworCiAgICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFu
ZFNldE1hcmtlZChjb25zdCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElu
bGluZXMuaAppbmRleCBmNGFjZjI1ZTYwZTE4OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5i
OGY3ZDc2ZmZmY2QwMDA2NGU4ZGVjYjY1MWM5YWZhY2FiY2I3N2Y4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTcwLDYgKzcwLDM2IEBAIGlubGluZSBIZWFw
KiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgp
KTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorewor
ICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxv
bmdpbmcgTWFya2VkQmxvY2sgYW5kIGZpbHRlciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4K
KyAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0
ZXIoKTsKKyAgICBNYXJrZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9y
KHApOworICAgIGlmIChmaWx0ZXIucnVsZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRp
ZGF0ZSkpKSB7CisgICAgICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJs
b2NrcygpLnNldCgpLmNvbnRhaW5zKGNhbmRpZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gVGVzdCB0aGF0IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJ
ZiBub3QsIHRoaXMgcG9pbnRlciBpcyBub3QgcG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4K
KyAgICBpZiAoIU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBUZXN0IHRoYXQgdGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9j
ayBpcyBhY3R1YWxseSBhbGxvY2F0ZWQgaW4gVk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgdGhlIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4K
KyAgICBpZiAoIW1fb2JqZWN0U3BhY2UuYmxvY2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHBvaW50ZXIgY2FuIGJlIHVz
ZWQgYXMgb25lIG9mIGNlbGxzLiBOb3QgcG9pbnRpbmcgdG8gbWV0YWRhdGEsIG9yIG1pZGRsZSBv
ZiBjZWxscy4KKyAgICBpZiAoIWNhbmRpZGF0ZS0+aXNBdG9tKHApKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBUaGUgY2VsbCBwb2ludGVyIGlzIG5vdCB6YXBwZWQuIEl0IG1lYW5z
IHRoaXMgY2VsbCBpcyBhY3R1YWxseSB1c2VkLgorICAgIHJldHVybiAhcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBKU0NlbGwqPihwKS0+aXNaYXBwZWQoKTsKK30KKwogaW5saW5lIGJvb2wgSGVhcDo6
aXNMaXZlKGNvbnN0IHZvaWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9j
a0ZvcihjZWxsKS0+aXNMaXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUz
MGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBACiAgICAg
ICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNM
aXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCop
OworICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtl
ZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwpA
QCAtMzg4LDcgKzM4OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVf
dCBhdG9tTnVtYmVyID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9l
bmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhl
IHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2
b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxs
Kj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVj
MGI2ZThhYy4uZDE4NTA0MjBhYmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAg
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwog
ICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihj
YWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3Bl
KCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2Rl
Q2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNv
dXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVu
bGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwor
CisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERa
TW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKKyAg
ICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3Vy
Y2VDb2RlIHNvdXJjZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4
ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQo
Y2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUs
IGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFs
dWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwg
cGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAg
ICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCktPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNU
RFpNb2RlOjpBbHdheXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAg
ICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJh
bWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNh
bGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1v
ZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4u
OTViYWIwNGQyM2E4ZWJlOTVjY2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAgICAgREVG
SU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlf
YnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9P
UChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQy
ZC4uZmNjOGYzMDY2NzdlNzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2Nv
cHlfcmVzdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWco
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiAr
NTQzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAg
dm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAg
ICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQg
ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVu
Y0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9u
Q2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJl
c29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcywgdW5zaWduZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggZDQ5NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVj
MTViYjQ0YjMzNDA1ZjBmMmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBy
ZWdUMCk7CiAjZW5kaWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2Rl
QmxvY2stPmZ1bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhl
Yyk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0g
b3BfbmV3X2Z1bmMpCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24s
IGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29k
ZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50
SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBt
X3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29k
ZSk7CkBAIC0xMDE4LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21t
b24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9u
LCByZWdUMywgcmVnVDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7
CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9Cisg
ICAgfQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJ
bnN0cnVjdGlvbik7CkBAIC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29w
eV9yZXN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNh
MWRkZDY1N2EyODk2OGEwZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2Rj
YjUyMDIzYWJlOWY3MjNmNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBA
IC05ODcsMjMgKzk4OCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VS
VChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhl
Y3V0YWJsZSksIHNjb3BlKSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
RnVuY3Rpb25UeXBlOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAg
IHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rp
b25FeGVjdXRhYmxlKQogewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRz
KEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5j
dGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVl
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0
aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248
SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFs
c2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sK
KyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMg
b3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Nj
b3BlKiBzY29wZQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRy
dWUpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxz
ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggOTYzOGYxNDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIy
OWRhNDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3Rh
dGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJh
dG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2
ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3YzdkMzc5MTY3
NDk2YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExM
SU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2Rl
QmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0
aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUg
PSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7Cisj
aWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rp
b24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3Bl
KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7
CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1
ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1
YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4
ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihw
Y1szXS51Lm9wZXJhbmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0
ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhi
NzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFi
NWIyMGQ5N2NhZjAzMy4uMzY4ZDA4NzUyYTdjZmI3YWRjYWRkZTZmMGMzZTc5MWI1ZmNlNDIxYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTIyNyw2ICsxMjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoKICAgICBk
aXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0
b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19h
cnJheSkKQEAgLTE0NTgsNiArMTQ2NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBkaXNwYXRj
aCg0KQogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhw
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfYXJyb3dfZnVuY19leHApCkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50X29wX2Fz
c2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50
X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWNjMjE2MmU4ZGYx
MjQ5ZjU5N2Y4NmY1MjJiNzBlMWU5NjA5YmUwMC4uMmI4NGNiYWYzN2VmMDQ2MGJkYjkxNmQyYmJk
YWMwMmUwZDJiNGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKQEAgLTM0MSw5ICszNDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxwdHIsIC8q
IGRlbGVnYXRlICovIGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZ
aWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJn
dW1lbnQsIGJvb2wgZGVsZWdhdGUpCisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWllbGQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBi
b29sIGRlbGVnYXRlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3Vt
ZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7Cisg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAg
ICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xh
c3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25O
b2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2NCwxMiArMzY2LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIg
ewogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAg
ICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dG
dW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFy
ZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
CiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9y
S2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
QXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
UGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC04ODYsNiAr
ODg4LDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBub2RlLT5zZXRTdGFy
dE9mZnNldChvZmZzZXQpOwogICAgIH0KKworCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNV
c2UoKSB7IHVzZXNBcmd1bWVudHMoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU2Nv
cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2
NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5Mzg1ZGE3ODM1OGMyNzliYzA4
MDBiZjg5YTBhNjU3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApA
QCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhW
ZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAK
LSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1
bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYy
LDEwICsxNjIsMTEgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3Rv
cjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBtX3BhcmFt
ZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAg
ICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAg
LCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKICAg
ICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0
b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCiAg
ICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAwYWEzMTFkYzExZDdmOGE4YjAxZmVjN2U0
NGJkZTIxZmE1NzhlZWNlLi4wYmYwMGI3YmU5MzdmNzk3OGE0NTYzNzNmYWRlMzFmNWM3NWY5ZDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODE3LDcgKzE4MTcsNyBA
QAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApA
QCAtMTg0Miw4ICsxODQyLDggQEAKIAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJp
Y3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgICAg
ICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJC
aW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25z
dHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2ln
bmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0x
ODY5LDggKzE4NjksOCBAQAogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAgU291cmNl
UGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNBcnJv
d0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAKICAgICAgICAgdmly
dHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQxNDk4MjZjMzc5ZTQy
Y2Y1OWNlNTJhLi5iZjM3NzhlMzNiNjZiMTI4NDM2OGY3NmY0NTVkNTIyODNkMzA4ODkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2Vy
KAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
CiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCkBA
IC0yMTAsNiArMjEwLDcgQEAKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAg
ICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9k
ZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9zdXBlckJpbmRpbmco
c3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kKGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNURFpNb2RlKQogewpAQCAtMjQ5
LDcgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBm
YWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsK
KyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUp
CisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rp
b25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAg
bV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJv
cigpKSB7CkBAIC0yNzMsOCArMjc3LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9
IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29u
dGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAg
ICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29u
dGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlRWxlbWVu
dHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50
cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0Zv
clN0cmljdE1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTMwMSw3ICsz
MDksMTQgQEAKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29w
ZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRW
YXJpYWJsZXMpCiAgICAgICAgIHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVk
KGVudHJ5KTsKLSAgICAKKworICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICBz
Y29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlm
ICh1c2VkVmFyaWFibGVzLmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5p
bXBsKCkpKQorICAgICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAg
ICB9CisKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAg
ICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1v
ZGVGZWF0dXJlOwpAQCAtMzExLDEwICszMjYsMTAgQEAKICAgICAgICAgZmVhdHVyZXMgfD0gTW9k
aWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykKICAgICAg
ICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCisKICAgICBWZWN0b3I8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmIChtX3Bh
cnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAg
ICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxvdyBidWls
dGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKTsKQEAg
LTQ1OCw2ICs0NzMsNDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3Rl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxl
bWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBm
dW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
c3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0
ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBp
bmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
cjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5z
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8g
Z2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdl
bmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250
ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2Rl
KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BT
Y29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1
bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGlu
ZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBm
YWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9m
ZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9
IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNv
bnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0
YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3Rh
dGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVs
ZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0
YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYg
ZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBU
aGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQzLDE0IEBACiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgK
ICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1
bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBw
YXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlv
bkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9k
eVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBz
dXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYyLDcgQEAK
ICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4
Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlv
bkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5u
b3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5k
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUs
NiArMTY3OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3Ii
OworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAg
ICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1OCwz
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZv
cm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJh
dG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JT
dGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQor
ICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJp
bmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFs
dWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVj
bGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRl
cnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisg
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4g
cGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVt
ZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1
cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rp
b25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VN
b2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIgKzE4OTksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAK
ICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZv
LmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAg
ICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8t
PnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBl
ID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZv
LT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNo
ZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+
cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BT
Y29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
QEAgLTE4MzIsNyArMTkxNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1i
ZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zm
c2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJy
b3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5p
c0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJy
b3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25C
b2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM4LDMz
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VN
b2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFt
ZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1
bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlv
biwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0
aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5n
RnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNv
bnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBl
Y3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRl
ckNvdW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVy
YXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlT
Y29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7
CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHko
KTsKKworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJl
Y3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3Qg
bW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fu
bm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAg
ICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBk
ZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBU
cmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
ZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAog
ICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZv
LmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5
LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJp
Y3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rp
b25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBz
dHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlO
YW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUt
PmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIp
OwogICAgIH0KQEAgLTE5MjksNyArMjAzMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVO
QUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBh
cnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAg
ICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05h
bWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25E
ZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9u
Iik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1l
bnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAg
ICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAg
aXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAg
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25z
dHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3MzEsNyArMjgzNCw3IEBAIHN0cnVjdCBM
YWJlbEluZm8gewogICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmllcih0aGlz
KTsKIAogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlFTEQpKQor
ICAgIGlmIChtYXRjaChZSUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29w
ZSgpLT5pc0dlbmVyYXRvcigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9u
KGNvbnRleHQpOwogI2VuZGlmCiAKQEAgLTI4MzYsNiArMjkzOSw3IEBAIHN0cnVjdCBMYWJlbElu
Zm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJz
ZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBw
YXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDcsMTQgQEAg
c3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxv
Y2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJl
ZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9p
bnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxk
KGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRp
b24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQo
bG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwg
bGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CkBAIC0zMDQxLDcgKzMxNDYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5h
cnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3Rh
cnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0g
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRo
b2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTksNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikK
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1l
KFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0
aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJD
YW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVl
YzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBt
X2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2Rl
KHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29w
RGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5
Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9p
c0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1
bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1Zh
bGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVu
dHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1f
c3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURh
dGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6Cisg
ICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsK
KwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAg
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3Bl
IHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5j
dGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7
IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAg
ICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29w
ZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0
OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0
ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2Rl
Y2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxW
YXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNv
bnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMo
aW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
Ly8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBi
b3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5k
YXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAg
ICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5l
ciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAg
Ly8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVu
Y3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAg
IC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAg
ICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3Bl
LT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUp
KQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0
cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChp
bXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xv
c2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlv
bi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBt
X2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7
CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2Nv
cGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQg
c2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7
CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNH
ZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lz
R2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9
CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rp
b25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBi
b29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1f
c3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJs
aWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAg
ICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJT
dHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIo
KTsKIApAQCAtMTE1MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJj
ZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRl
bWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwg
dW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9y
dGVkIH07CkBAIC0xMTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxk
ZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25z
dCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVl
QnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRl
ck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBh
cnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBh
cmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRl
ciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFy
c2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUg
Ym9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQg
eyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRp
b25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5n
UGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpT
VGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1Rl
eHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRp
b25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxp
emVyKTsKQEAgLTEyMTUsNiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhU
cmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wg
bmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5F
VkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBG
dW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBA
IC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92
aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNl
RWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBt
X3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JL
aW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNzIFBhcnNl
ciB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9k
ZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsx
NDk2LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgp
LmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0
b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJp
bmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNl
ci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFs
d2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJz
ZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBz
dXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4
NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51
bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBH
ZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2Rl
LAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5s
aW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQog
ICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAt
ODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEw
Nyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBk
YWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJj
ZUNvZGVLZXlfaAorI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1v
ZGVzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoK
KyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUs
IE1vZHVsZVR5cGUgfTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAg
ICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShz
b3VyY2VDb2RlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9k
ZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAs
IG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291
cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9z
b3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VD
b2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9y
eSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNv
dXJjZQorICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBl
ZmZpY2llbnQuCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29k
ZS50b1N0cmluZygpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtl
eSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1f
aGFzaAorICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAg
ICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09
IG90aGVyLm1fbmFtZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0
cmluZyBtX25hbWU7CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7
Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNv
ZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29k
ZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4gewor
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29k
ZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5k
aWYgLy8gU291cmNlQ29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5
MWIuLjNlMGMzMGZkMWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwx
MCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0
eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYp
IHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1w
dHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlp
ZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9u
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwg
UHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlv
bkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQs
IGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBi
b29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJp
bmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9u
Qm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhD
aGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25O
YW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVy
biBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVj
a2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0
U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNV
c2UoKSB7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBt
X3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAppbmRleCBmMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi4yYTI0
NDJmYWE2ZWVhODE4Mjg0NWZmYjE3YjIxYTJiOTkzODRjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhl
Y3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAg
ICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsx
NjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxF
QVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21H
bG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhh
cyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5k
ZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERa
VmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwg
bWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNv
bnN0cnVjdCwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzKTsKICAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5h
ZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3Nv
dXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmgKaW5kZXggNDhjOGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4uOWI4YzE1
MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRl
ICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgIlN0
cm9uZy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KQEAgLTU2LDcxICs1Nyw2IEBACiBjbGFzcyBTb3VyY2VDb2RlOwogY2xh
c3MgU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGljOgotICAg
IGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9k
dWxlVHlwZSB9OwotCi0gICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQotICAgIFNv
dXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwK
LSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNU
RFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9zb3VyY2VD
b2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9mbGFn
cygKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMpCi0g
ICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpCi0g
ICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkKLSAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAgICAgICAg
LCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQotICAgIFNv
dXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1f
c291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2ZSBtZW1v
cnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBz
b3VyY2UKLSAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMg
ZWZmaWNpZW50LgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNv
ZGUudG9TdHJpbmcoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVL
ZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5t
X2hhc2gKLSAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0gICAgICAg
ICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1fbmFtZSA9
PSBvdGhlci5tX25hbWUKLSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0cmluZygp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKLSAgICBT
dHJpbmcgbV9uYW1lOwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQgbV9oYXNo
OwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VD
b2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNvdXJjZUNv
ZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0g
ICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNv
ZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0cnVjdCBT
b3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNGNm
NjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1MTJkY2Nh
YjliMDI0OGYzZmQ4MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAgbWFjcm8o
RXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXAor
ICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAg
ICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwxMyBAQAog
ICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBcCiAgICAg
bWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAgbWFjcm8o
Z2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAgIG1hY3Jv
KGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBcCiAKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0OTY0ZDQ0
OTY0MzkxLi40NTZkYjc5MDIwMmRjMzlmZDE3ZmVjMzFlM2NhNDA0MTljY2U4ZGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxp
bmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYgKzY0NSwz
OCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNo
ZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmVzIHZhcmlhYmxlcyBhbmQg
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gfHRoaXN8LCB8c2NvcGV8IHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7Cisg
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Cisg
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPih2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2Vu
ZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZy
YW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAg
ICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5j
b2RlQmxvY2soKS0+bnVtQ2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAg
ICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNP
YmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgaW50IGxpdmVDYWxsZWVS
ZWdpc3RlcnNJbmRleCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+c2F2ZShleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJl
Z2lzdGVyc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEp
LmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgp
KTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdm
M2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdk
ZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Nh
dmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2Ri
YTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRhODJmODFmMGZjOTc5YmNk
YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApA
QCAtNjMsNyArNjMsNyBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsK
IH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMsNyArNzMsNyBAQCBib29s
IGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxN
b2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7Cisg
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmICgh
bW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVj
MDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFm
ZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3
Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxp
bmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2Us
IGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBl
eGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5w
YXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKQEAg
LTU1Niw3ICs1NTYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwg
bV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEw
NC4uODhhMjRhZDZjYWIyZDYyMDUyMTA0ZjAxMzAyZWRlMDIyYTQ0ZDZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNs
YXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
ICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2Vu
ZXJhdG9yVGhpczo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xh
c3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAg
ICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCks
IHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBH
ZW5lcmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4
ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXM6Ok5vbkVtcHR5
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0
ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7
IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVj
dEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBj
b25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90
IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBh
cmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0
ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uYjBhYjZiZmMwOTI5ODcwMDhjMjU1ZDdkYjVlYTE0
Yjk2MjZhNWExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
bikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZp
ZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3Np
dGlvbiYgcG9zaXRpb24sIGJvb2wgaXNHZW5lcmF0b3IpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxl
ZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBz
b3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUs
IHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBpc0dlbmVyYXRvcik7CiB9CiAKIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Ms
IAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxp
bmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRl
TGluZU51bWJlciwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5
IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUw
LgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCks
ICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24g
IiwgKGlzR2VuZXJhdG9yKSA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAg
ICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCAoaXNHZW5lcmF0b3IpID8g
IioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1
bmN0aW9uICIpOworICAgICAgICBpZiAoaXNHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5n
KCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgs
OSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2so
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIGJvb2wgaXNHZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFu
b255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAg
IHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpLCBpc0dlbmVyYXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
CmluZGV4IDIyZWNiNTdiOTNmNjliZmM5ZjhiMWIzMDZmYjRjNDJhMGE2N2QyZTMuLjI3OTRjZDIw
Yjc2MzFjMTc5ZmRlMDJhYTk1NzBkMTBmZWFiZmQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1Niwx
MiBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
fTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBB
cmdMaXN0Jik7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBib29s
IGlzR2VuZXJhdG9yID0gZmFsc2UpOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGJvb2wgaXNHZW5lcmF0b3Ig
PSBmYWxzZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3RyaW5n
JiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEp
OworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJy
aWRlTGluZU51bWJlciA9IC0xLCBib29sIGlzR2VuZXJhdG9yID0gZmFsc2UpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZWM2NDdkNDZmOGEyZTdmY2ZiOGQzZjIxZDdhZDNh
Mjg4N2E4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsK
KworR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9m
Q2FsbGVlUmVnaXN0ZXJzKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgLCBtX251bWJlck9mQ2FsbGVlUmVnaXN0ZXJzKG51bWJlck9mQ2FsbGVl
UmVnaXN0ZXJzKQoreworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVyczsgKytpKQorICAgICAgICByZWdp
c3RlckF0KGkpLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwg
c2l6ZV90IG51bWJlck9mUmVnaXN0ZXJzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQg
PQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JSZWdpc3Rl
cnMobnVtYmVyT2ZSZWdpc3RlcnMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJl
ck9mUmVnaXN0ZXJzKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycykKK3sKKyAgICAvLyBP
bmx5IHNhdmUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9y
IGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgor
ICAgIEFTU0VSVChsaXZlQ2FsbGVlUmVnaXN0ZXJzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgeworICAgICAgICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAgICAg
Ly8gU2luY2UgQyBzdGFjayBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29ycmVj
dCB2YWx1ZSBmb3IgYSBqcyB2YWx1ZSBtYXkgZXhpc3QKKyAgICAgICAgLy8gaW4gYSBub24taW5p
dGlhbGl6ZWQgKGJ1dCBhbGxvY2F0ZWQpIEpTIHJlZ2lzdGVyLgorICAgICAgICAvLworICAgICAg
ICAvLyBGb3IgZXhhbXBsZSwKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWdpc3RlckEgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgLy8gICAgIC4uLgor
ICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgYWJvdmUgY2FzZSwgcmVnaXN0ZXJBIGlzIGFs
bG9jYXRlZC4gQnV0IGl0cyBjb250ZW50IG1heSBub3QgYmUgY29ycmVjdCBqcyB2YWx1ZS4KKyAg
ICAgICAgLy8gQXMgYSByZXN1bHQsIEpTQ2VsbCBwb2ludGluZyB0byB0aGUgaW5jb3JyZWN0IG1l
bW9yeSByZWdpb24gbWF5IGV4aXN0LgorICAgICAgICAvLyBQZXJmb3JtaW5nIGEgd3JpdGUgYmFy
cmllciAoJiBTbG90VmlzaXRvcidzIG1hcmtpbmcpIG9uIHRoZXNlIGluY29ycmVjdCBjZWxscyBj
YXVzZXMgaW52YWxpZCBkZXJlZmVyZW5jZXMuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0
dWF0aW9uLCB3ZSB0ZXN0IGEgZ2l2ZW4gY2VsbCBsaWtlIHBvaW50ZXIgaXMgdHJ1bHkgY2VsbC4K
KyAgICAgICAgaWYgKHJhd1ZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMt
PnZtKCkuaGVhcC5pc0xpdmVDZWxsKHJhd1ZhbHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9uLWNl
bGwgdmFsdWUgbWF5IGJlIHN0b3JlZC4gKGUuZy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQgdGFn
IGluIDMyYml0IGVudmlyb25tZW50KS4KKyAgICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJlIG5v
dCByZWNvZ25pemVkIGFzIGEgY2VsbCwgd3JpdGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5vdCBj
YXVzZSBhbnkgcHJvYmxlbXMuCisgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVjLT52
bSgpLCB0aGlzLCByYXdWYWx1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6
OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVS
ZWdpc3RlcnMpCit7CisgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAv
LyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRl
cnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOworICAg
ICAgICByZWdpc3RlckF0KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdlbmVy
YXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMg
YSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyh0aGlzT2JqZWN0LT5yZWdpc3RlcnMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZVJl
Z2lzdGVycyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjljZjI2
MmM3OTVhYTQ1ODdjNTU0YjBiOTFhMWZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJh
dG9yRnJhbWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRW
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3Mg
REZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUq
IGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNo
YXIqPih0aGlzKSArIG9mZnNldE9mUmVnaXN0ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4mIHJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHJl
dHVybiByZWdpc3RlcnMoKVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZlJlZ2lzdGVycygpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJh
bWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIoc2l6
ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBp
bmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZSZWdp
c3RlcnMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51bWJl
ck9mUmVnaXN0ZXJzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUoRXhl
Y1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisKK3By
aXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdp
c3RlcnMpOworCisgICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU3Y2QzZWQwMjViZWE5MjdmNjA1MzZhMzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgi
CisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAg
Ly8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRy
dWUpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJn
TGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0Nv
bnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhj
M2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0
UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rp
b24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlOGYy
ZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRl
ICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9
OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAz
NDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+
KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90
b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYs
IFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2Zi
Mzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKwor
I2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJh
dG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2Vu
ZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2lu
IGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisq
LworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30K
KworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+
KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gK
KyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMg
R2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3By
aXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2Vu
ZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JUaGlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JUaGlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlhNmUwOTVjMzJhYWRjNTQ0NmEzNTVkODE3NWE5NTlk
ZDQ4NGNmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclRoaXMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR2VuZXJhdG9yVGhpc19oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3Bh
Y2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1h
cmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0
b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4K
Ky8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4y
IGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdl
IGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8vCisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAg
ICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAg
ICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9i
YWwuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAg
ICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91
bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7
CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUu
IFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJl
dHVybmVzIGEgR2VuZXJhdG9yIHRoYXQgZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXM6OkVtcHR5
IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVm
ZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0gY2xhc3MgR2VuZXJhdG9yVGhpcyA6IHVuc2lnbmVk
IHsKKyAgICBFbXB0eSwKKyAgICBOb25FbXB0eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJh
dG9yVGhpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBh
NWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAg
ICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkt
PmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAg
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXRE
aXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVh
MmUyZDE5ODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJv
cGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5l
cmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5j
dGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2Nv
cGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVj
dCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1
bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1
cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRl
KHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24i
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rp
b24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2
NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAor
I2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNH
ZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3Mg
SklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0
aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAg
ZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
CisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAg
IE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dN
b2RlID0gMgorICAgIH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVh
dGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShz
aXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGlu
ZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2Vu
ZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1w
bChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJh
YWRhZjc0MDJhNzdiYzBmNTkuLjc2MjJiYjkyYTE5MTUxMWQ4MzA0ZWEwYjFkMDBiMzg5ODdlYmM4
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpA
QCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0Rv
bGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFU
RV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFt
ZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Cisg
ICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRF
X1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTEg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
QVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxp
dGVyYWwoIlVSSUVycm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iq
IGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3Rvciwg
RG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1
Y3RvciwgRG9udEVudW0pOwpAQCAtODE4LDYgKzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAs
NiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4
ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2
OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9u
Q29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90
b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsK
IGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVn
RXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0
b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAg
IFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwog
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYy
LDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0Owog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
UmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclBy
b3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAg
IFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVi
dWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAg
LTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1
NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1
OGVlN2RkZmMwNmM1NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5v
ZGU+KAogICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1v
ZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7CiAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0
ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRl
ICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxl
QXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAg
aW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBG
dW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Cisg
ICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJu
YWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQzMTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhk
MmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGlu
ZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVU
YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3Ry
dWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4u
MTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE5LDcgKzcxOSw3IEBACiAtIHBhdGg6IGVzNi9BcnJh
eV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVy
aWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9z
dGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5q
cwpAQCAtNzI3LDcgKzcyNyw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19B
cnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVy
YXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVu
Y3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNl
c19vZl9pdGVyYWJsZXMuanMKQEAgLTc1Myw3ICs3NTMsNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1
Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5n
X3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMK
QEAgLTc2Myw3ICs3NjMsNyBAQAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9j
bG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9m
X2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2Vu
ZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4u
b2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMyw1
NSArODAzLDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxl
c19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0
b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNp
Y19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29t
cHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3Rf
dGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25z
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3Jf
bWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2Vz
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9h
c3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2lu
c3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRl
cmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNl
X2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBA
IC0xMTA1LDcgKzExMDUsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRo
X2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2lu
c3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9p
bnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3Nw
cmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThi
OWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5
NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwg
PT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3Jl
YXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7
fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3Ip
IHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBu
ZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6
IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10s
CisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0
ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0K
K3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9y
ID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJh
Ymxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3
NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2
ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNf
b2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAn
dW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307Citp
ZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7Cisg
IHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDog
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIu
bGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAn
dGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJs
ZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1
cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChm
dW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVy
YXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhi
MDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0
IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0
aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsK
K21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlv
bicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7
Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZh
bHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1
cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsK
K3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9u
KCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0
ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3Zp
YV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmEx
YzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1
NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBl
b2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5j
dGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1l
dGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9s
Lml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRv
ciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlm
dCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNb
J3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxl
ID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0
ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZh
ciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2FlZThkZjhiY2IxNjliNzU1NTY5
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFj
dHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIHNob3VsZEJlKGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgc2hvdWxkQmUoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgcHJpbnQoSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7Cisg
ICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uICpn
ZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0gZ2Vu
KDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1bmMo
KS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNlNGJl
MzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAsMCAr
MSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
OiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgewor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAg
ICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlp
ZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAw
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6
NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6
NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIi
OjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwg
YykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAx
LCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIs
IGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQg
YXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
IH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRo
b2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMwMmUz
NmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpA
QCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7
CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBp
ZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVs
bDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlm
IChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4RXJyb3IoYAorY2xh
c3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0KK30KK2AsIGBTeW50
YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJy5g
KTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkKKyAgICB7CisgICAg
ICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29h
IHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30K
K2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0MTI3
MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAgLTAs
MCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVy
cm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworY2xh
c3MgQSB7CisgICAgKmdlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5
aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAgc3RhdGljICpzdGF0
aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsK
KyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7Cisg
ICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBs
ZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9
IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQgZyA9
IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
NDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICB9
LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAn
bmV3IEEuc3RhdGljR2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5
YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1
bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9IG5l
dyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30sIGBS
ZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwor
CitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhpcycpOworICAgIGV2
YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3Rv
cigpCisgICAgeworICAgICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hv
dWxkVGhyb3coKCkgPT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAgKmdl
bmVyYXRvcigpCisgICAgeworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQorfQor
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0g
bmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlv
biBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCknKWAp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IGMu
Z2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1
bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFlNWZk
MTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVj
dG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlv
bigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVu
Y3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0g
KGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzcz
NmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1l
LmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2VuZXJh
dG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9IG9rKCk7CitzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9y
ZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4OThlNTkwOWFiYWYz
ODViZjIwODk5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCAr
MSwxMiBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigi
TkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwor
dmFyIGcgPSBnZW4oKTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgw
YWY2ZTA3ODlkYzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAg
LTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGds
b2JhbCA9IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgZ2xvYmFsKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAg
IH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxl
LmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAg
IGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQg
dGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAg
IGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
ICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRo
aXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAg
ICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1i
ZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJs
ZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkK
K3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0g
bmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3co
ZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9
PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdl
bigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2Ji
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVu
Y3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAg
ICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0
dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQo
KTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0
aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAg
IGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxk
IHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOwor
ICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1
cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAg
ICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgICAgIG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBh
IGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5oCmluZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIwZWQ1NjY4OGE2YTI5
OGMuLjk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG4g
PSBhcnJheUxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytp
KSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKaW5kZXggNDIxOTQxZjNhNDRhYzZkYzVkOWI2N2ZkMmNkZDg2ZjEyMDEzYzY0OC4u
ZjQ2ZTExOTczZTUyNGNhNDI4NTZiMGQ3NjgzNzllMWE5ZjQ1OTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCkBAIC0zNjQsNyArMzY0LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0VTNl9DTEFTU19TWU5UQVgpCi0jZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAwCisj
ZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVO
QUJMRV9FUzZfTU9EVUxFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEy
OWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsK
IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05f
U1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRB
WDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVO
QUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1
N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxF
X0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwot
RU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxF
X0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7
CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4
ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00
Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVS
QVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7
CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UK
aW5kZXggOWNkODQ2NWMwOWM5ZjE3ODYwNGM5YWIyOTI1YTcwYWI0N2M2M2UzYy4uMDJjYzc5OGIy
MGJkNmU0NjI2M2JlMzlkOTAxYThmZTk0Y2I5ZWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAg
LTM0LDcgKzM0LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTiBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQT1JU
IFBVQkxJQyBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZf
R0VORVJBVE9SUyBQVUJMSUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9FUzZfTU9EVUxFUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCBQVUJM
SUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMRV9TWVNU
RU0gUFVCTElDIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBkOTYyMjRkNDE3
MWJkYmE3MTcwYzQ1ZDNkZDcyMTc1NDc3MTJmNTBkLi4wMGVkYmMwMTNiZmY2NmY3YTAzZmRkMjli
NjMxZjQ2MjUwYmUyNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw3ICs3
Nyw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAiU3VwcG9ydCBFTUUgdjIiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVggIlRvZ2dsZSBFUzYgYXJyb3cgZnVuY3Rpb24gc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggIlRvZ2ds
ZSBFUzYgY2xhc3Mgc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9H
RU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X01PRFVMRVMgIlRvZ2dsZSBFUzYgbW9k
dWxlcyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYICJUb2dnbGUgRVM2IHRlbXBsYXRlIGxpdGVy
YWwgc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiAiVG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBS
SVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGQyZGIyMjg3NzllMThhNTllODUwMzcxYjY1ZmMyM2VmNWJiMmRkOWQuLjcwOTgxZWM2
MTUyZTg2ZjE2YjEyNDI1N2U2Y2M0NTc3MzA4NzZlYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yMyAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJ
bXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVu
YWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTEx
LTIyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgcnVuLXdl
YmtpdC10ZXN0czogaHR0cCBzZXJ2ZXIgZm9yIGltcG9ydGVkIFczQyB0ZXN0cyBkb2Vzbid0IHdv
cmsgd2l0aCAtLWxheW91dC10ZXN0cy1kaXJlY3Rvcnkgc3dpdGNoCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5ZDIz
M2Q2OTFjNmI4OS4uNDYyMTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3IEBA
IEJFR0lOCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVmYXVs
dCA9PiAxLCB2YWx1ZSA9PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2Vu
ZXJhdG9ycyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9
PiBcJGdlbmVyYXRvcnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VO
RVJBVE9SUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAog
CiAgICAgeyBvcHRpb24gPT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVsZXMg
c3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDc5YTZiY2Y2NzU0ZTBmMTUxM2VkNjhlMTRhOGIwOTAxODIyNDQ4
YWEuLjMzOGFhNTAyMjQ2ZmFhMWFmZjUwZGZiZjA1ZTdkYmVmY2I1NWNlNDkgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yMyAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJ
bXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVu
YWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIE5FVFdP
UktfUFJPQ0VTUyBjb21waWxlIGZsYWcKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFu
Z2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJh
MWZhMDgzYjkzMjI5N2MyN2M0MjgwYjUuLmVkMzdmMzk5ODEwZjM0YTcxNDlhNzZlY2JiZjVmMGVi
YThiMzIyZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTIzICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxl
bWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxl
IHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAg
KiB3aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTEx
LTA1ICBOaWtvcyBBbmRyb25pa29zICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fu
b24uY29tLmF1PgogCiAgICAgICAgIEFkZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3Mg
Zm9yIGVuYWJsaW5nIFdlYiBBbmltYXRpb25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9X
ZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9X
ZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5k
ZXggMGQ3NGE4ZjdlZTUyMWUwNGY5ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1
ZTBiNzBmY2E1YzMwNWQxNjZiZjVlNzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVz
L3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIs
NyBAQAogICAgIDxFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAg
ICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5F
TkFCTEVfRVM2X0dFTkVSQVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxF
X0VTNl9NT0RVTEVTIC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9X
ZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9w
cyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJv
LnByb3BzCmluZGV4IDkxZWU4MGZkZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1
YjA4ZmY4MTBmN2U2MWI3Y2VjNmFjNWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktp
dExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisr
KyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJv
LnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+
CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMiAvPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAg
ICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklM
RV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266083</attachid>
            <date>2015-11-23 02:53:22 -0800</date>
            <delta_ts>2015-11-24 02:15:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151123195306.patch</filename>
            <type>text/plain</type>
            <size>297517</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi5kZDgxMmU0ZjQwZTY2ZmYw
NGZmMmRkZWIwYzNiNWUxZTM5NjBkYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDI2IEBACisyMDE1LTExLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisgICAg
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTYwCisK
KyAgICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9sbG93
aW5nIGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRoZSBz
YXZlL3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0b3Jp
bmcgaW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRjaF9p
bW0gdG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBvbmUg
ZW50cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWduIG1h
a2VzIGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVzIHRo
ZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBnZW5l
cmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1l
TW9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0b3JT
dGF0ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5pdGlhbDoKKyAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgc2VxdWVuY2UuCisgICAgICAgICAg
ICAgICAgICAgIC4uLgorCisKKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8wKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2Ug
WWllbGRfMDoKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVz
dW1lTW9kZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0
b3JWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIG9w
X3NhdmUoWWllbGRfMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAgICAg
ICAgICAgICAgICBjYXNlIFlpZWxkXzE6CisgICAgICAgICAgICAgICAgICAgIG9wX3Jlc3VtZSgp
OworICAgICAgICAgICAgICAgICAgICBpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cp
CisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gUmV0dXJuKQorICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBzZW50
VmFsdWUgPSBAZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBSZXN1bWUgc2VxdWVuY2Ugc2hvdWxkIG5vdCBiZSBlbWl0dGVkIHBlciB5aWVsZC4K
KyAgICAgICAgICAgIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU1Mi4KKworICAgICAgICAyLiBTdG9yZSBsaXZlIGZyYW1l
IHJlZ2lzdGVycyB0byBHZW5lcmF0b3JGcmFtZQorCisgICAgICAgIFRvIHNhdmUgYW5kIHJlc3Vt
ZSBnZW5lcmF0b3IncyBzdGF0ZSwgd2Ugc2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGluIEdl
bmVyYXRvckZyYW1lLgorICAgICAgICBBbmQgd2hlbiByZXN1bWluZywgd2UgcmVmaWxsIHJlZ2lz
dGVycyB3aXRoIHNhdmVkIG9uZXMuCisgICAgICAgIFNpbmNlIHNhdmVkIHJlZ2lzdGVyIGNvbnRh
aW5zIHNjb3BlIHJlZ2lzdGVyLCB8dGhpc3wgZXRjLiwgdGhlIGVudmlyb25tZW50IGluY2x1ZGlu
ZyB0aGUgc2NvcGUgY2hhaW4gd2lsbCBiZSByZWNvdmVyZWQgYXV0b21hdGljYWxseS4KKyAgICAg
ICAgV2hpbGUgc2F2aW5nIGFuZCByZXN1bWluZyBjYWxsZWUgcmVnaXN0ZXJzLCB3ZSBkb24ndCBz
YXZlIHBhcmFtZXRlciByZWdpc3RlcnMuCisgICAgICAgIFRoZXNlIHJlZ2lzdGVycyB3aWxsIGJl
IHVzZWQgdG8gY29udHJvbCBnZW5lcmF0b3IncyByZXN1bWUgYmVoYXZpb3IuCisKKyAgICAgICAg
My4gR2VuZXJhdG9yRnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5l
cmF0aW5nIEdlbmVyYXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQg
YmUgZXZhbHVhdGVkIGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBs
ZSwKKworICAgICAgICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBm
dW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHlpZWxkIGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7
ICAvLyBOb3csIGhlbGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRo
aXMsIHdlIGV2YWx1YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRl
ciB0aGF0LCB3ZSBjcmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhp
cyBjYW4gYmUgZXhwbGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICogQVBJL0pTU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJh
dG9yLnByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVy
bik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5r
VG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
YWRkTGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29k
ZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OnRyeUdldCk6CisgICAgICAg
IChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNh
Y2hlOjppc0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoK
KyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86
OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmdlbmVyYXRvclRoaXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c3Vw
ZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNocmlua1RvRml0
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51bWJlck9mTGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkTGl2
ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6bGl2ZUNhbGxlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtl
RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhv
bWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNMaXZlQ2VsbCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNB
dG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1v
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAq
IHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpG
dW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6
OnNldElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAg
ICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1Q
YXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRh
eENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRh
YmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAg
ICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3Ip
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Okdl
bmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZWdp
c3RlckF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXJz
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JSZWdpc3RlcnMpOgor
ICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3Rv
dHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzLmg6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJh
dG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAq
IHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAg
ICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxl
T2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3Rh
bmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAg
KGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9y
X2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAg
ICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdf
dmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJs
ZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVkLgorICAgICAg
ICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVz
dFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EucHJvdG90eXBl
Lm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5D
b2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2Rz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3RvdHlwZS5nZW4p
OgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoQik6CisgICAg
ICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6CisgICAgICAgIChDKToK
KyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9k
cy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxs
LmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAg
IChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhy
b3ctYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgor
ICAgICAgICAoZ2VuKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1z
dXBlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJv
dG90eXBlLmdlbik6CisgICAgICAgIChBKToKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9n
LTIwMTUtMTEtMjEgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5NGMwNmY0ZmFiMDlmZjAzYTY0MTc4MGUzZjI2YWMz
YWQ4ZC4uODY5ZjIyMDQ1NjY2NTljMzhlZjU0YWE5ODNjM2U3MDdjNTA2ZmY0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgICog
d3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUtMTEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMRUQ6IHRlbXBvcmFy
eUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDY1ZjFhMjNlMjI4ZTdkZGMwYzhiZDBiZTAxZjUwNjcwMGQ3NmM5YzEuLjEz
ZDQwMTBmOTQyZWU0MDg1OTVkNDU0MmQxZjliZDFlOWQ2MjgwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IHNlbGVjdGlvbiBzaG91bGQgbm90IGNv
bnN1bHQgZm9udC12YXJpYW50IHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2I5OWY0ODgx
OTFjYTIzMDYxZWQyMGQ3OGU4NzEzMzFkNDUxZTQ2MC4uMTU3NTdhYmZlMzg1ZTk0YTNmZGQ2N2Qw
YzFkNmMyYjY5Yzg1YzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSArMSwxMCBAQAorMjAxNS0x
MS0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
RVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMg
YW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIxID09CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggY2U2Mzc4ODcyNjI4NGMwYmEzZjE1YzhhM2I1OWNjMWY3YjE2MGQzYy4uMTE0ZjFlZTdjZmJi
N2Q2YzkwNDczMjYzNWRhMjEzYTQ0ZGNhODI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTExLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2Vu
ZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKwogMjAxNS0xMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIG1pc3NpbmcgaW5zcGVjdG9yIGZp
bGUgdG8gR1RLKyBjb21waWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Njcmlw
dFJlZi5jcHAKaW5kZXggM2I3Yjc2YmYzYTQ0NGM5MjFiZTk3M2M1NzZjMTlmNjkyZThkMjMyZC4u
MmYzNzQyMzAwOTdiNTA4MjU4M2Y4NDQyN2I5MjU3OTM3ZDMwOTMwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGJv
b2wgcGFyc2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVy
cm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+
KAogICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCAKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLAogICAgICAgICBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBlZDMwZmZlMzBjOTIyZThkZjQwNzcxOWQzNjQ3NWI2YjYxMWU4Mjk2Li5kNzA3
ZTMzYmQzMWExMDAzYzc1MWM3ZDg4YjBlNzAwNDFlY2NkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01NjMsNiArNTYzLDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9S
VU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25S
YXJlRGF0YS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAK
ICAgICBydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTYwMiw2ICs2MDYsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAog
ICAgIHJ1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUv
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTczNyw2
ICs3NDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3Bw
CiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0lu
dGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTExOTUsNiArMTIwMSw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9GdW5jdGlvbi5wcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdm
NDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0g
OwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwog
RU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lO
VEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0g
RU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
Tkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDJmNjVk
YjU1YTFlZWQzNjQ5Y2ZlMzNkNzhiOTI2YzYyNTEzYTlmNjguLmZkZTU3ZTkzOGRiZDRmYTJkYmU1
YzE0ZDdiYzhmYmUxMTUxNzAxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC04NCw2ICs4NCw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJD
RVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90
b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb24ucHJvdG90eXBl
LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3IuUHJvdG90eXBl
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMgXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9
IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQcm90b3R5cGUubHV0Lmgg
XAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUubHV0
LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBcCiAgICAgSW50
bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5s
dXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAzZTdmOTk0
ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi4xODkxMTk0NzkxZmIyZDA3NWRiYWY3
YjE1ODdmZmM4M2U2M2JjNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIgLz4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVDb25zdHJ1Y3Rvci5sdXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xE
YXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xI
ZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNv
dXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3Vy
Y2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJj
ZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsxNjA4LDExIEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlw
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVE
YXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZy
YW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0LmgiIC8+CkBAIC0xNjYw
LDYgKzE2NzIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0
MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0
NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0
aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IGE2ZDNmZjAwZTI1MDNhY2JjMzY3OTBhMzZlNmVlNDM3YTkzNGJmYTgu
LjI3Y2MzNmRiYjE0OTA1NDhkMjg4NTFkMzAzYTk5Nzc2OWRhMDJjZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY2Niw2ICs2NjYs
MTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0
YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmNwcCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90
eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc0
Nyw2ICs3NTksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0
aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2
MTIsNiArMjYyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
Q29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIj4KKyAg
ICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+CiAgICAgICA8RmlsdGVy
PnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgxMyw2ICsyODMxLDIxIEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIj4K
KyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCI+CisgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpcy5oIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yOTE4LDYgKzI5NTEsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNHbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTMyODIsNiArMzMxOCw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlZDc0OTE2Y2NjYzI2ZWQzZDg2NGRiZDUwZjBkOTE2MzM5MzBhZTEzLi4yN2Rl
NDU5NmE0YmJhOTliNGNiNmM2MzUwYjYwZDcyYjJkN2UyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTIwMyw2ICsxMjAzLDE5IEBACiAJCTcwOUZCODZCMUFFMzM1QzYwMDM5
RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJv
dG90eXBlLmNwcCAqLzsgfTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0
NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFn
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcw
Qjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIg
LyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OworCQk3MEI3OTE5
MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAg
Ki87IH07CisJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkx
OTgxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4OTFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAw
MjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QjFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUQxQzAyNEE1NjAw
MjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
REMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJ
CTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDgxQjJERjJDNzAw
MDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50
QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07CkBAIC0x
OTYyLDggKzE5NzUsOCBAQAogCQlGRTBENEEwOTFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29u
dGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0
V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OwogCQlGRTEyMjAyNzFCRTdGNThDMDAzOUU2RjIg
LyogSklUQWRkR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmgg
Ki87IH07CiAJCUZFMTIyMDI4MUJFN0Y1OTEwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjUx
QkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi87IH07Ci0JCUZFMTg3QTAx
MUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8q
IEpJVE11bEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsg
fTsKLQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMDAxQkZCQzcz
QzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdT
ID0gKCk7IH07IH07CisJCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
ODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IH07CisJCUZF
MTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTAwMUJGQkM3M0MwMDM4QkJD
QSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNB
IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEw
MEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAg
Ki87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRB
OTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKQEAgLTMyNjcsNiArMzI4MCwyMCBA
QAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFB
OUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBC
NzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvclRoaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9y
VGhpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QzFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgx
RTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThGMUMw
MjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3IucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJhdG9yLnByb3RvdHlwZS5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0Uw
NzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBERTlBMDgxQkU3RDY3MDAw
NUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA3Nyw2
ICs1MTA0LDcgQEAKIAkJCQk5OTZCNzMwODFCRDlGQTJDMDAzMzFCODQgLyogRGF0ZUNvbnN0cnVj
dG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0
Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVBNzEwRDE5RjZERjgxMDA5OEY1RUMgLyogSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBAIC01MjA1LDYgKzUyMzMs
NyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8sCiAJ
CQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3BwICovLAogCQkJCTY1
RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VDb2RlLmggKi8sCisJCQkJNzBCNzkxOEUx
QzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLywKIAkJCQkwRjQ5M0FGODE2RDBD
QUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovLAogCQkJCTY1RTg2NkVEMERENTlB
RkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICovLAogCQkJCUU0OURDMTU1MTJFRjI3NzIw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLywKQEAgLTUzMzQsNiArNTM2Mywx
NSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5o
ICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNw
cCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5o
ICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAg
Ki8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8s
CisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEI3OTE4ODFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4
OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEI3
OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8sCisJCQkJNzBC
NzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXMuaCAqLywKIAkJCQkwRkUwNTAx
MTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEy
MUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBG
RTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDMzLDYg
KzU0NzEsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNw
cCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAog
CQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAor
CQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAq
LywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
ICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02
NTQxLDYgKzY1ODEsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGlu
TmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxz
LmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uLnByb3RvdHlw
ZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9yLnByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVEOUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0
LmpzICovLAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIElu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLApAQCAtNjk1Miw2ICs2OTkzLDcgQEAKIAkJ
CQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZE
NzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1
MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDAxLDYgKzcw
NDMsNyBAQAogCQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAv
KiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
RkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAor
CQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtNzIyMSw2ICs3MjY0LDcgQEAKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0
NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4
MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzI0Nyw2ICs3MjkxLDcgQEAKIAkJCQk3MDExM0Q0QzFB
OERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQx
NDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhl
YWRlcnMgKi8sCkBAIC03MzkwLDYgKzc0MzUsNyBAQAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3
RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBE
MTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzQyNiw2ICs3NDcyLDcgQEAKIAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0Eg
LyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdG
MDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZC
QUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBC
NzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2
ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3
MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTk4LDYgKzc2NDUsNyBA
QAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKQEAgLTc2MzAsNiArNzY3OCw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2NDcsNiArODY5Niw3IEBACiAJCQkJQTFCOUUyM0Qx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5QjFD
MDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZFMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC04NjczLDYgKzg3MjMsNyBAQAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBK
SVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0MjM4
OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyog
SklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkz
QyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04ODEwLDYgKzg4NjEsNyBAQAogCQkJCTE0MkQ2RjA4MTM1MzlB
MjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNE
QTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRo
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAv
KiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk1Niw2ICs5MDA4LDcg
QEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1hdHQuYyBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWlu
dGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRp
czg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5NjQsNiArOTAxNyw3
IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5
NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTIx
QzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgxNmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkz
OTRjNjhiZGMwYTMuLjQ4ZWY3ZmYzYThlYmE2YjQ1ODk2OTIyYzE3ZDY0YjEwNTE0Yzk5ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRD
b25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAg
ICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJy
b3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsCiAgICAgICAg
ICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYg
KCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlU
RFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJp
bGl0eSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBXVEY6Om1v
dmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5hbWVWYWx1
ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9u
RXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3IucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZlZTk2OTAyODJkNWI4OTNkMWEy
NTk3ZmMwMDc1YjBmYjA2YjRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsMTI3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0
aW9uIG5leHQoc2VudFZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGNvbnN0IENv
bXBsZXRlZCA9IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworICAgIGxldCBzdGF0ZSA9
IHRoaXMuQGdlbmVyYXRvclN0YXRlOworICAgIGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZh
bHVlOworCisgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ251bWJlcicpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CisKKyAgICBp
ZiAoc3RhdGUgPT09IEV4ZWN1dGluZykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdl
bmVyYXRvciBpcyBleGVjdXRpbmciKTsKKworICAgIGlmIChzdGF0ZSA9PT0gQ29tcGxldGVkKSB7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB2YWx1ZSA9IHVuZGVmaW5lZDsKKyAgICB9
IGVsc2UgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5AZ2VuZXJhdG9yU3RhdGUg
PSBFeGVjdXRpbmc7CisgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuQGdlbmVyYXRvck5leHQuQGNh
bGwodGhpcy5AZ2VuZXJhdG9yVGhpcywgdGhpcywgc3RhdGUsIHNlbnRWYWx1ZSwgLyogR2VuZXJh
dG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSAqLyAwKTsKKyAgICAgICAgICAgIGlmICh0aGlzLkBn
ZW5lcmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CisgICAgICAgICAgICAgICAgdGhpcy5AZ2Vu
ZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICB0aGlz
LkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgIHRocm93IGVycm9yOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0
aW9uIHJldHVybihzZW50VmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgY29uc3Qg
Q29tcGxldGVkID0gLTE7CisgICAgY29uc3QgRXhlY3V0aW5nID0gLTI7CisgICAgbGV0IHN0YXRl
ID0gdGhpcy5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQg
dmFsdWU7CisKKyAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAnbnVtYmVyJykKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKKworICAg
IGlmIChzdGF0ZSA9PT0gRXhlY3V0aW5nKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
R2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOworCisgICAgaWYgKHN0YXRlID09PSBDb21wbGV0ZWQp
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIHZhbHVlID0gc2VudFZhbHVlOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0
ZSA9IEV4ZWN1dGluZzsKKyAgICAgICAgICAgIHZhbHVlID0gdGhpcy5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbCh0aGlzLkBnZW5lcmF0b3JUaGlzLCB0aGlzLCBzdGF0ZSwgc2VudFZhbHVlLCAvKiBHZW5l
cmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlICovIDEpOworICAgICAgICAgICAgaWYgKHRoaXMu
QGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKKyAgICAgICAgICAgICAgICB0aGlzLkBn
ZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgIHRo
aXMuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAgICAgICAgICAgdGhyb3cgZXJyb3I7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30KKworZnVu
Y3Rpb24gdGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGNvbnN0
IENvbXBsZXRlZCA9IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworICAgIGxldCBzdGF0
ZSA9IHRoaXMuQGdlbmVyYXRvclN0YXRlOworICAgIGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0
IHZhbHVlOworCisgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ251bWJlcicpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CisKKyAg
ICBpZiAoc3RhdGUgPT09IEV4ZWN1dGluZykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKworICAgIGlmIChzdGF0ZSA9PT0gQ29tcGxldGVk
KQorICAgICAgICB0aHJvdyBleGNlcHRpb247CisKKyAgICB0cnkgeworICAgICAgICB0aGlzLkBn
ZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1dGluZzsKKyAgICAgICAgdmFsdWUgPSB0aGlzLkBnZW5lcmF0
b3JOZXh0LkBjYWxsKHRoaXMuQGdlbmVyYXRvclRoaXMsIHRoaXMsIHN0YXRlLCBleGNlcHRpb24s
IC8qIEdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSAqLyAyKTsKKyAgICAgICAgaWYgKHRo
aXMuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuQGdl
bmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICB0aGlzLkBnZW5lcmF0b3JTdGF0
ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorICAgIHJldHVybiB7
IGRvbmUsIHZhbHVlIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMjk5MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVl
MmFjNjJlOC4uNWU2ZDU5ZGYxMjdkMmJlN2QyZDEzMmNkMzMwZjNhN2I4YmYyN2I5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
OTAsNiArOTAsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIs
ICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAi
bGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIs
ICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRv
cl9mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBA
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6
IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlz
IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAi
bGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJs
ZW5ndGgiOiAzIH0KKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5n
dGgiOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiAz
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQog
ICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGE2MTMyYzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4
ODZlNWQ2NjY4NDUuLjM3NDM2YzAxNTY1NDllOWY3YzAxZGM0MWEwMmVlM2RkOGI1YWZmODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBA
IC03MCw4ICs3MCw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBj
YXNlIG9wX2plcV9udWxsOgogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVj
OgotICAgIGNhc2Ugb3BfaW5jOiAKLSAgICBjYXNlIG9wX2NvcHlfcmVzdDogeworICAgIGNhc2Ug
b3BfaW5jOgorICAgIGNhc2Ugb3BfY29weV9yZXN0OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI1
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6
CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9f
aW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBA
IC0xNTIsNiArMTU0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAg
IGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9u
ZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dl
dF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAtMjMzLDYgKzIzNiwxNCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAg
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZVJl
Z2lzdGVyc0F0WWllbGQoaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgdmVjdG9y
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKQEAgLTI1NSw2ICsyNjYsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNh
c2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9w
X2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzE1LDYg
KzMyNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhw
OgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CkBAIC0zOTAsNyArNDA0
LDE1IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KQogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIHZlY3RvciA9IGNvZGVCbG9jay0+
bGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQoaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgdmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBmY2E2MzAxNDkxODI2YmVl
MTAwMTI0YzJmNmFlNDJmMThkZWY5OWVlLi4zYzEyZGI4YTc2ZTM0OGI5NzRiMDdhNjQyODNiOTIz
OWVlZTFkZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMTI5NCw2ICsxMjk0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5ld19nZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3
X2Fycm93X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsx
MzE5LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAg
ICAgICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1w
Q2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTQ5OSw2ICsxNTE1LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVn
SG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0lu
ZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJWQiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdp
c3RlcnNJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAicmVzdW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDog
ewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE3MjAsNiArMTc1MCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1Rh
ZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZl
cnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1w
VGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBv
dGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1f
Y29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0xODc1LDYgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUu
bWluOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemVfdCBjb3Vu
dCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
KCkpIHsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWll
bGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyBpKyspCisgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJz
QXRZaWVsZFtpXSA9IHVubGlua2VkQ29kZUJsb2NrLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZChpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZl
cnMgZm9yIHRoZSBieXRlY29kZQpAQCAtMzA0OSw2ICszMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURh
dGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9u
J3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBv
aW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUy
ZDgyZWMuLjFhMGI5OGYwY2RiMmMxNWQ2MDAyYWZjNDlhNDJhZGJhMDNiZGIwNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBu
ZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9udW1DYWxsZWVSZWdpc3RlcnM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVy
cygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ss
IG1fbnVtUGFyYW1ldGVycyk7IH0KIApAQCAtNjU0LDYgKzY1NywxMCBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRj
aEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJu
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJp
bmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJz
IGF0IHlpZWxkIHBvaW50cy4KKyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVSZWdpc3RlcnNBdFlp
ZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBlbmQodmVjdG9yKTsg
cmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQuc2l6ZSgpIC0g
MTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxk
KGludCBpbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGRbaW5kZXhdOyB9CisKICAgICBFdmFsQ29k
ZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9k
ZSB7CkBAIC05MDAsNiArOTA3LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAg
ICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwog
CisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlp
ZWxkOworCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4
IDYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2
MjcxMjg1ZjU5MzhlMmE4MjBmOGJlZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpT
U2NvcGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgor
I2luY2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBA
IC00NCwyMyArNDUsMjkgQEAKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwg
Y29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYg
ZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFs
U291cmNlLCBzY29wZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2
YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291
cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBv
d25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25z
dCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0
YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xs
ZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAg
ICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERa
TW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBl
dmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwg
aW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAg
ICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hl
YWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNp
emUoKSA8IG1heENhY2hlRW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChl
dmFsU291cmNlLmltcGwoKSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgp
LCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShp
blN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8
IG1heENhY2hlRW50cmllcykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250
ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNv
dXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1v
ZGUpOworICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRl
QmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxl
KSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFs
RXhlY3V0YWJsZTsKICAgICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICBy
ZXR1cm4gc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVu
Y3Rpb25OYW1lU2NvcGVPYmplY3QoKSB8fCBzY29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNv
bnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBJZiBldmFsKCkgaXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEg
bGV4aWNhbCBzY29wZSwgd2UgY2FuJ3Qgc291bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8v
IElmIHRoZSBldmFsKCkgb25seSBoYXMgYWNjZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3
ZSBjYW4gY2FjaGUgaXQuCiAgICAgICAgICAgICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAg
ICAgICAgICAgICAgICAmJiBldmFsU291cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2
YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGV2YWxTb3VyY2UubGVuZ3RoKCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNo
ZWFibGVTb3VyY2VMZW5ndGgoKQogICAgICAgICAgICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUo
c2NvcGUpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRy
aWVzID0gNjQ7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwg
V3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPj4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8U291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwg
U291cmNlQ29kZUtleUhhc2gsIFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7
CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlm
YmQ0NTBmZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1ZC4uMzViZjdkZmI1OWFhNmY5ODlhOTM0NTY5
MGM2OThjNmNjNmQ4MjIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI2LDIxICsyNiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxl
SW5mb19oCiAjZGVmaW5lIEV4ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRo
aXMuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8g
RklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29k
ZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4
ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlz
U3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9v
bCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
biwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0
b3JUaGlzLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAg
ICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3Ry
aWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAsIG1f
Z2VuZXJhdG9yVGhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpcykpCiAgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQorICAg
ICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcp
KQorICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKSk7CisgICAgICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3VwZXJCaW5kaW5nKSk7CisgICAgICAgIEFTU0VSVChtX2dlbmVyYXRvclRoaXMgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXMpKTsKICAgICB9CiAKICAgICBib29s
IG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBA
IC00OCw4ICs1NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQor
ICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEdlbmVyYXRvclRoaXM+KG1fZ2VuZXJhdG9yVGhpcyk7IH0KICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9z
dXBlckJpbmRpbmcpOyB9CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0Fj
dGl2YXRpb24gOiAxOwpAQCAtNTcsOCArNjYsMTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsK
ICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0
cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKKyAgICB1
bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWdu
ZWQgbV9zdXBlckJpbmRpbmcgOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVl
YTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uM2MzMTlkMDZlMzk5N2VkZWYzZDMyNzg3YjliOTM3MmZm
ZTI3MWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC02NSwxMCArNjUsMTIgQEAKICAgICAsIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWls
dGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlu
Zm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXMoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpcygpKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkKICAgICAsIG1fZmlyc3RM
aW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgp
CisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygw
KQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uZTFi
MDk1YjZhZDY1MmUwMDg3ZDlhNTMyNzE3NTgxODBjZjY3NjhlMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHku
aCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
VGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtMTE2LDcgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBt
X3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsy
MDQsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9u
OyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAg
ICBHZW5lcmF0b3JUaGlzIGdlbmVyYXRvclRoaXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHZW5lcmF0b3JUaGlzPihtX2dlbmVyYXRvclRoaXMpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9z
dXBlckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMjMs
NiArMjI3LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsK
ICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZ
aWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9u
SW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ0
LDYgKzI0OSwxMSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFT
U0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlp
ZWxkIHBvaW50cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkLnNpemUoKSA6IDA7IH0KKyAgICBpbnQzMl90IGFkZExpdmVDYWxsZWVS
ZWdpc3RlcnNBdFlpZWxkKEZhc3RCaXRWZWN0b3IgdmVjdG9yKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZC5hcHBl
bmQodmVjdG9yKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZVJlZ2lzdGVyc0F0WWll
bGQuc2l6ZSgpIC0gMTsgfQorICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkKGludCBpbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkW2luZGV4XTsgfQorCiAgICAgdW5z
aWduZWQgYWRkRnVuY3Rpb25EZWNsKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuKQogICAg
IHsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7CkBAIC0z
ODcsMTIgKzM5NywxNCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQg
bV9nZW5lcmF0b3JUaGlzIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAK
ICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAg
ICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9k
ZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBl
OwogCkBAIC00MzYsNiArNDQ4LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRj
aEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZT4gbV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBt
X2xpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkOworCiAgICAgICAgIFZlY3RvcjxFeHByZXNzaW9u
UmFuZ2VJbmZvOjpGYXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4
YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li5kYzZkODY1ZjgyMzU3MTA2ZGVmN2Q0Y2E1NTNiMjlkNzUw
N2ZiOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQAog
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmls
ZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJy
b3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNT
RVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9k
ZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJyb3IsIG51bGxwdHIpOwor
ICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGlu
ZygpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFT
U0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAg
IGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVu
Y3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0
aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7
CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4
ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzKCks
IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0
KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUo
KTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VP
dmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9u
bWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRo
aXMgZ2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlk
ZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5
LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwg
bV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpcyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpcykpCisgICAgLCBtX3N1cGVyQmluZGluZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3Ry
dWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAK
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1
bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25L
aW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAg
ICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAg
ICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIy
OTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uOGI4MjcxYTZjM2Y2Y2M1ZDIxOWQ0
NjljMTNkZTU2M2YzYjNmMmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHku
aCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
VGhpcy5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBz
b3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0
b3JUaGlzLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIs
NiArODMsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9
CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2Vu
ZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2Vu
ZXJhdG9yVGhpcz4obV9nZW5lcmF0b3JUaGlzKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogCiAgICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVk
IHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlT
dGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
LCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBT
b3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEy
OCw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsg
fQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBj
b25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNl
Q29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFy
aWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwg
U3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpcywgVmFyaWFibGVFbnZpcm9ubWVudCYp
OwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE2MCw4
IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1f
Y29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8v
IEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1
bnNpZ25lZCBtX2dlbmVyYXRvclRoaXMgOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5n
IDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCBiOTM3MGM4ZDI4NGEzODRmMjFlMGU3ODkyNjg1NDVjOTJiMTk4MjNi
Li44ZDFlNmMyMjdhZGJlYTg2OWQ0NTdmYzI4YWNiYWY1MWFiZTA3NjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKQEAgLTIyNyw5ICsyMjgsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hv
dWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9j
b2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVB
bGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1
bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2
ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJl
c29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNB
cmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8g
R2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5n
IEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlz
IGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQg
YmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFs
dWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9y
IGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8v
CisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8v
ICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAg
QGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBn
ZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAg
ICAgeworICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1
bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAg
Ly8gICAgICAgICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAv
LyAgICAgICAgfQorICAgICAgICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZU
aGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVU
aGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZh
cmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAKQEAgLTI1NCwxNCArMjc5LDM0IEBAIFBhcnNlckVy
cm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2Nv
cGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxl
ZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAg
IC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHBy
b2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgor
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAgICAgICAgZW1pdE1vdmUo
bV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fcGFyYW1ldGVyc1sxXSk7CisgICAgICAgIGlmIChnZW5l
cmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhpczo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92
ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dp
dGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91
dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNh
bGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUg
aW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVy
LgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3Qg
aW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJl
Z2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gSW5p
dGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICB9CisK
ICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVu
Y3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAh
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgp
LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFt
ZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAg
ICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFt
ZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewogICAgICAgICBt
X2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNh
biBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0
IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICszMTYsNiBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5p
dGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwog
ICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwg
b2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8g
bmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3Jvdyhw
YXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBt
X3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgp
KTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7
Ci0gICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJh
bWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQot
ICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIg
YXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwog
ICAgIGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3
ICs1MDgsMzUgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2Rl
QmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAg
ICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOwor
CisgICAgICAgIC8vIEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2Vz
IGl0LgorICAgICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2Fs
bGVlUmVnaXN0ZXIpOworICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVy
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6IHsKKyAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJl
Y3RseSBiZWZvcmUgaGVyZS4KKyAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3Rlciwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsK
ICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9u
ZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTUy
LDggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAg
ZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03OTksNiArODU4LDIyIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFtZXRlcigpCiAgICAgcmV0dXJu
ICZwYXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJh
bWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQg
bWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBh
cmUgbm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsg
Ly8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgo
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRv
IHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0OworICAgICAgICBpZiAocGF0dGVybi0+
aXNSZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQ
YXJhbWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVz
dFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KK30KKwogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIpOwpAQCAtODU1LDYgKzkzMCwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6bmV3VGVtcG9yYXJ5KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitGYXN0Qml0VmVjdG9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsaXZlQ2FsbGVlUmVnaXN0ZXJzKCkKK3sKKyAgICByZWNsYWlt
RnJlZVJlZ2lzdGVycygpOworICAgIEZhc3RCaXRWZWN0b3IgdmVjdG9yOworICAgIHZlY3Rvci5y
ZXNpemUobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAg
Zm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZVJlZ2lzdGVycykgeworICAgICAg
ICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICB2ZWN0b3Iuc2V0KGkpOworICAgICAg
ICArK2k7CisgICAgfQorICAgIHJldHVybiB2ZWN0b3I7Cit9CisKKwogTGFiZWxTY29wZVB0ciBC
eXRlY29kZUdlbmVyYXRvcjo6bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlIHR5cGUsIGNv
bnN0IElkZW50aWZpZXIqIG5hbWUpCiB7CiAgICAgLy8gUmVjbGFpbSBmcmVlIGxhYmVsIHNjb3Bl
cy4KQEAgLTIzMTIsMTIgKzI0MDIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAg
ICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJv
cGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsg
Myk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgp
LCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90
aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkp
OyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NzEs
MjAgKzI1NjEsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5
KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9
CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJu
IGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVk
IGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29w
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7
Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0
T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU2OSwyNSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4
cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUq
IGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5v
ZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8
IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBp
bmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9u
KSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0
Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjUxMiwxNyAr
MjYwMCwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24o
UmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1
bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5j
LCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24o
ZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwg
QXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCkt
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlz
Q2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRv
clRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0eSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRo
aXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5j
LCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25D
b21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNTQwLDYgKzI2Mjks
MTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3Ry
dWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRz
dCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQoreworICAgIHVuc2lnbmVkIGluZGV4
ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsK
KyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVu
Yyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
aW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVk
RnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0
Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNzY2LDYgKzM4NjgsMjQgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVy
dHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMuYXJndW1l
bnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+
ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICB9CisgICAgeworICAgICAgICBS
ZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0Lmdl
dCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgZW1pdExhYmVs
KHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9y
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8TGFi
ZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzg0Miw0ICszOTYyLDIwOCBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0
LCB1bnNpZ25lZCBudQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSk7Cisg
ICAgaW50MzJfdCBsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXggPSBtX2NvZGVCbG9jay0+YWRkTGl2
ZUNhbGxlZVJlZ2lzdGVyc0F0WWllbGQobGl2ZUNhbGxlZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0
T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJl
Z2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJl
Z2lzdGVyc0luZGV4KTsKKyAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKKworICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4KTsKKworICAgIFJlZlB0
cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJp
Y3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEp1
bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQ
dHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9w
X3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8g
UmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVy
ID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9j
aygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFy
eSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNj
b3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5S
ZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRo
cm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkp
OworCisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJldmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMo
KS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
YXJncygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdp
c3RlcigpLCBhcmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwg
aXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAg
ICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBl
bWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4g
bG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQu
Z2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UobV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGxpdmVDYWxsZWVSZWdpc3Rl
cnNJbmRleCA9IG1fY29kZUJsb2NrLT5hZGRMaXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZl
Q2FsbGVlUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7
CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZl
Q2FsbGVlUmVnaXN0ZXJzSW5kZXgpOworICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4odmFsdWUu
Z2V0KCkpOworCisgICAgICAgICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlUmVnaXN0ZXJzSW5kZXgp
OworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAg
ICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29u
ZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuLgorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJl
dHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUo
cmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rl
cigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVy
YXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZh
bHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJs
b2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVt
aXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVy
bihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVy
bkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVz
dWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwg
cmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhp
cywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3Vs
dC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhy
b3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRv
ckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRo
cm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBo
YXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwu
Z2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFi
ZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2
aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSks
IGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAg
ZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlv
dXMuZ2V0KCk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3Rh
dGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0
ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVm
UHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuYXBwZW5kKGxhYmVsKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sK
KyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFi
ZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2su
bGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGlu
c3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2Nr
LT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJ
bmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOworCisgICAgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hK
dW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVj
b2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hP
ZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBq
dW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZvciAodWludDMyX3QgaSA9IDA7
IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBX
ZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJl
ZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2Fy
ZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ld
LT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1
bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1OWEzMzY4
NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYuLmUxMTM3M2MxYzc0NmMzMjc5OGI4YzZlYzA2
YzYxMDdiMmJlZjM2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUg
Qnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yVGhpcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4IEBACiAK
ICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9Cisg
ICAgICAgIEdlbmVyYXRvclRoaXMgZ2VuZXJhdG9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5nZW5lcmF0b3JUaGlzKCk7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogCiAg
ICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTI5Nyw2ICszMDAsOCBAQAogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0
ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0dXJu
IG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2
YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyByZXR1cm5lZCBieQogICAgICAg
ICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNv
dW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAgaXMg
Y29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBAIC00OTksMTAgKzUwNCw4IEBA
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdpc3RlcklEKiBkc3QsIEVsZW1l
bnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbklu
dGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJO
b2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rv
cihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNl
RnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAq
KTsKIApAQCAtNTk2LDYgKzU5OSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVm
aW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKICAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklE
KiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5z
aWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CkBAIC02NDQsMTIgKzY0OCwyNCBAQAogICAgICAg
ICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsK
ICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJl
bD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwg
aW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgp
OworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3Io
UmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExh
YmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0
dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXRE
ZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAg
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjgzLDggQEAKICAgICAgICAgdm9pZCBlbWl0UG9wU2Nv
cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3Bl
KTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKKyAgICAg
ICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNl
RnVuY0V4cHJOb2RlKik7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUNhbGxlZVJlZ2lzdGVy
cygpOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFi
bGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklE
KiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpAQCAtNzUyLDEyICs3NzAs
MjIgQEAKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7
CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNVbmRlclREWik7CiAK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3Bh
Z2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwogICAg
ICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IG1ldGFkYXRhLT5wYXJzZU1vZGUo
KTsKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0
cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKLSAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYg
bWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisg
ICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8
fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIGNv
bnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAg
ICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
ICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUp
CisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSAmJiBtZXRhZGF0YS0+c3VwZXJCaW5kaW5n
KCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJp
bGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKworICAgICAgICAgICAg
R2VuZXJhdG9yVGhpcyBnZW5lcmF0b3JUaGlzID0gR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHk7Cisg
ICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpcyA9IEdl
bmVyYXRvclRoaXM6OkVtcHR5OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRh
LCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3Zt
LCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1
Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzLCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQm
KTsKQEAgLTc2NSw2ICs3OTMsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0
VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRo
aXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVS
ZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhv
b2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCog
YXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVQYXJh
bWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVWYXJM
ZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgICAg
IHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjayhGdW5jdGlvblBhcmFtZXRlcnMmLCBGdW5jdGlvbk5vZGUqLCBTeW1ib2xUYWJsZSos
IGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAo
VW5pcXVlZFN0cmluZ0ltcGwqKT4mIGNhcHR1cmVzKTsKIApAQCAtODA0LDYgKzgzMyw3IEBACiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fdG9wTW9zdFNjb3BlIHsgbnVsbHB0ciB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX2FyZ3VtZW50c1JlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdp
c3RlcklEKiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAg
ICBSZWdpc3RlcklEKiBtX2dlbmVyYXRvclJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKQEAgLTgyNyw2ICs4NTcs
NyBAQAogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAg
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRl
eHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwor
ICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CiAg
ICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rp
b25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1
bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1
bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDMxMmE4YzdhY2UwNDE1NjA4YmQzNzQ3ZGVkYTc4
NjhlNWJiZDBmNTIuLjc5NmQ3NDdjZmYwNDVmNjVjNjNhYzllYTJkN2JiNzM2ZGFjZTdjOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09OT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTQ1LDcgKzE0Niw3IEBAIFJlZ2lz
dGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlm
IChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgIGlmIChtX3Nob3VsZEFsd2F5c0Vt
aXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5lcmF0b3JUaGlzKCkgPT0gR2VuZXJhdG9yVGhp
czo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
QEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAm
Y2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAK
LXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBSZWdpc3RlcklEIGNhbGxl
ZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworfQogCi0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFz
ZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9y
KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1ODksNyBAQCB2b2lkIFJldHVybk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0
ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3Zh
bHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVC
eXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVy
blJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Miw5NiBAQCB2b2lkIEZ1bmN0
aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFy
dE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFt
ZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQo
KSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhp
cy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7Cisg
ICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNp
bmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQo
c2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1l
bnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihz
aW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0
ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwor
ICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2Rl
Kj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBm
dW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVP
YmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAg
ZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgp
KTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0
aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYg
KHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAg
ICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2Nr
Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxh
c3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUo
KSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFz
dFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
d2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVs
ZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0
IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNv
ZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2Ug
cHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVy
YXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5v
ZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBn
ZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0
YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVy
bk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9m
aWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBl
eHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1
c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNz
aW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mg
c291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJh
dG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJp
Y3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01v
ZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5n
ZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdl
dCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9u
ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAg
ICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMt
PnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsK
KworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2Yg
YSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmds
ZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAg
U3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05v
ZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAo
bGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2Rl
Kj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAg
ICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJh
dG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRv
ci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVu
dCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1
c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VS
VChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwODksMjQgQEAgUmVnaXN0ZXJJRCog
QXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBG
SVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3Jz
LCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVy
cm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxl
Z2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAg
ICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJn
dW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChk
c3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDIwN2UwYjMzZTk4MjM5
ZWU0YjQyYTU1NWQ0OWY0MWFkNzQ3NGU4ODUuLmUwZmVhZDNkMjIwMGE5MjAyNDYyYzAwOTgyYmI0
MWZkOWY0MGVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTk2LDYgKzk2LDgg
QEAgY2xhc3MgSGVhcCB7CiAgICAgLy8gb3VyIHNjYW4gdG8gcnVuIGZhc3Rlci4gCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfdGltZUNoZWNrUmVzb2x1dGlvbiA9IDE2OwogCisgICAgYm9v
bCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqIG9wYXF1ZVBvaW50ZXIpOworCiAgICAgc3RhdGljIGJv
b2wgaXNMaXZlKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCBpc01hcmtlZChjb25zdCB2
b2lkKik7CiAgICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCBmNGFjZjI1ZTYwZTE4
OTM4YTY4YTdiOGRiOTU5NTRkNmEyNTAyYjI0Li5jOGE5NGY5NDEyOGExMjYyNDZkZGU5MTUyZTAx
YTc1MzlkY2I3YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgK
QEAgLTcwLDYgKzcwLDMxIEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUg
dikKICAgICByZXR1cm4gaGVhcCh2LmFzQ2VsbCgpKTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6
aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQoreworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gTG9vayB1cCBiZWxvbmdpbmcgTWFya2VkQmxvY2sgYW5kIGZpbHRl
ciBvdXQgaWYgaXQgaXMgbm90IGFsbG9jYXRlZC4KKyAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVy
ID0gbV9vYmplY3RTcGFjZS5ibG9ja3MoKS5maWx0ZXIoKTsKKyAgICBNYXJrZWRCbG9jayogY2Fu
ZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHApOworICAgIGlmIChmaWx0ZXIucnVsZU91
dChyZWludGVycHJldF9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7CisgICAgICAgIEFTU0VSVCgh
Y2FuZGlkYXRlIHx8ICFtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLmNvbnRhaW5zKGNhbmRp
ZGF0ZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGVzdCB0aGF0
IHRoZSBwb2ludGVyIGlzIEF0b21BbGlnbmVkLiBJZiBub3QsIHRoaXMgcG9pbnRlciBpcyBub3Qg
cG9pbnRpbmcgdG8gYSBoZWFkIG9mIGEgY2VsbC4KKyAgICBpZiAoIU1hcmtlZEJsb2NrOjppc0F0
b21BbGlnbmVkKHApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUZXN0IHRoYXQg
dGhlIGdpdmVuIGNhbmRpZGF0ZSBNYXJrZWRCbG9jayBpcyBhY3R1YWxseSBhbGxvY2F0ZWQgaW4g
Vk0ncyBIZWFwLgorICAgIC8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGNhbmRpZGF0ZSBN
YXJrZWRCbG9jayBkZWZpbml0ZWx5IGV4aXN0cy4KKyAgICBpZiAoIW1fb2JqZWN0U3BhY2UuYmxv
Y2tzKCkuc2V0KCkuY29udGFpbnMoY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGNhbmRpZGF0ZS0+aXNMaXZlQ2VsbChwKTsKK30KKwogaW5saW5lIGJvb2wg
SGVhcDo6aXNMaXZlKGNvbnN0IHZvaWQqIGNlbGwpCiB7CiAgICAgcmV0dXJuIE1hcmtlZEJsb2Nr
OjpibG9ja0ZvcihjZWxsKS0+aXNMaXZlQ2VsbChjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFl
ZWIzOWUzMGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBA
CiAgICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJv
b2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCopOworICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wg
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNl
dE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9p
ZCopOwpAQCAtMzg4LDcgKzM4OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQor
ICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAg
IHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAs
MTMgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIg
Pj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQg
b2YgdGhlIHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChj
b25zdCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNDZWxsKj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZi
MDYzNzVjMGI2ZThhYy4uZDE4NTA0MjBhYmQ1ZGQ2YjBlMzE5NDZkOTY1ZDA3YzA0MDFmYmFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgp
OwogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9j
aygpOwogICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVj
a2VkUihjYWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6
OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2
YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJv
Z3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNh
bGxlclVubGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOworCisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJ
Zk5lZWRlZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBU
aGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2Nr
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVy
VW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXMoKSA9PSBHZW5lcmF0b3JUaGlzOjpFbXB0
eSkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAg
ICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAg
RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50
cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1RE
Wk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlm
ICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBA
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxp
dGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25z
LgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAg
ICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/
IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwot
ICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhj
YWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAg
ICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJh
bWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2
YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2ZDg0
NTBkMC4uOTViYWIwNGQyM2E4ZWJlOTVjY2I1YWRkMjBjMjhlMmM1YWM5MzY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkK
KyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9i
eV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQog
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNh
NDc5ZDQyZC4uZmNjOGYzMDY2NzdlNzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0
X29wX2NvcHlfcmVzdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tf
dGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
ZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01
NDEsNiArNTQzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAg
ICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7
CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAg
IHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5q
ZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQg
ZW1pdFJlc29sdmVDbG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKaW5kZXggZDQ5NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1
YS4uNmVjMTViYjQ0YjMzNDA1ZjBmMmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwy
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kLCByZWdUMCk7CiAjZW5kaWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0g
bV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jRXhlYyk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2Z1bmMpCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsK
KyAgICB9CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rp
b24pOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihj
dXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9u
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51
Lm9wY29kZSk7CkBAIC0xMDE4LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4
cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmN0aW9uLCByZWdUMywgcmVnVDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5j
dGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9w
X25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAg
ICB9CisgICAgfQogICAgIGRvbmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0
aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1
cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY29weV9yZXN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4
IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2Jk
MmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmgiCkBAIC05ODcsMjMgKzk4OCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHBy
b2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBv
cGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3Bl
LCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAg
IEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0
aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgewor
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQor
eworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCog
ZnVuY3Rpb25FeGVjdXRhYmxlKQogewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmlu
aGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCB0cnVlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwq
IGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25D
b21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JG
dW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBz
dGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVj
LCBKU1Njb3BlKiBzY29wZQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFs
dWUsIHRydWUpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAg
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVl
LCBmYWxzZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKaW5kZXggOTYzOGYxNDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0
MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShF
eGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpT
Q2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMy
M2YwNTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li41ZjVmMjE4NGM5M2I5MmM5YjIzYmQyM2Y3Yzdk
Mzc5MTY3NDk2YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFs
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQog
ICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rp
b25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VS
VChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5l
ZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSog
c2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3Bl
KCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcg
ZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCks
IHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19l
eHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUg
SlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1szXS51Lm9wZXJhbmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRl
eCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNk
NzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5
MWNiYzFiNWIyMGQ5N2NhZjAzMy4uMzY4ZDA4NzUyYTdjZmI3YWRjYWRkZTZmMGMzZTc5MWI1ZmNl
NDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMTIyNyw2ICsxMjI3LDEyIEBAIF9sbGludF9vcF9uZXdfZnVuYzoK
ICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwxMSBAQCBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhw
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKICAgICBk
aXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfbmV3X2Fycm93X2Z1
bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBAIC0xNTczLDYgKzE1ODQsMTggQEAgX2xsaW50
X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9zYXZlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwog
X2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWNjMjE2
MmU4ZGYxMjQ5ZjU5N2Y4NmY1MjJiNzBlMWU5NjA5YmUwMC4uMmI4NGNiYWYzN2VmMDQ2MGJkYjkx
NmQyYmJkYWMwMmUwZDJiNGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKQEAgLTM0MSw5ICszNDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIG51bGxw
dHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVsZEV4cHJOb2RlKiBj
cmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisgICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWll
bGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3Vt
ZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24s
IGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIFlpZWxkRXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0
ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5k
KTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSogY3Jl
YXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2NCwxMiArMzY2LDEyIEBAIGNsYXNzIEFTVEJ1
aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlz
QXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3Bh
cnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBj
b25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC04
ODYsNiArODg4LDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAgICAgICBub2RlLT5z
ZXRTdGFydE9mZnNldChvZmZzZXQpOwogICAgIH0KKworCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1
bWVudHNVc2UoKSB7IHVzZXNBcmd1bWVudHMoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgU2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBlYTM3
NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5Mzg1ZGE3ODM1OGMy
NzliYzA4MDBiZjg5YTBhNjU3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlh
YmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgUGFy
c2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1
bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3Rh
cnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpA
QCAtMTYyLDEwICsxNjIsMTEgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVz
KFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICAgICAgLCBt
X3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1v
ZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAg
ICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5n
KSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rp
b24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VSVChtX2NvbnN0cnVj
dG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAwYWEzMTFkYzExZDdmOGE4YjAx
ZmVjN2U0NGJkZTIxZmE1NzhlZWNlLi4wYmYwMGI3YmU5MzdmNzk3OGE0NTYzNzNmYWRlMzFmNWM3
NWY5ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODE3LDcgKzE4
MTcsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhj
b25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAg
ICAgIApAQCAtMTg0Miw4ICsxODQyLDggQEAKIAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlz
SW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQor
ICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUs
IHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQp
CkBAIC0xODY5LDggKzE4NjksOCBAQAogICAgICAgICBpbnQgbV9sYXN0TGluZTsKICAgICAgICAg
U291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJp
Y3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAg
ICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIG1f
aXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAKICAgICAg
ICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5vZGUgZmluYWwgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkwN2M4ZTQxNDk4MjZj
Mzc5ZTQyY2Y1OWNlNTJhLi5iZjM3NzhlMzNiNjZiMTI4NDM2OGY3NmY0NTVkNTIyODNkMzA4ODky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTQsNyArMTk0
LDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6
UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3Vy
Y2UpCkBAIC0yMTAsNiArMjEwLDcgQEAKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRy
KQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWls
dGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9zdXBlckJp
bmRpbmcoc3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kKGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNURFpNb2RlKQogewpA
QCAtMjQ5LDcgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAg
ICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAg
ICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25J
bmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAg
ICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKICAgICAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFo
YXNFcnJvcigpKSB7CkBAIC0yNzMsOCArMjc3LDEyIEBACiAgICAgICAgICAgICBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVu
dHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9k
ZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVu
dHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgICAgICBzb3VyY2VF
bGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBD
aGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNv
dXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmlj
dE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVuZGluZzsKQEAgLTMw
MSw3ICszMDksMTQgQEAKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJEZWNsYXJhdGlvbnMg
PSBzY29wZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2Fw
dHVyZWRWYXJpYWJsZXMpCiAgICAgICAgIHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0Nh
cHR1cmVkKGVudHJ5KTsKLSAgICAKKworICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsK
KyAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAg
ICAgIGlmICh1c2VkVmFyaWFibGVzLmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cy5pbXBsKCkpKQorICAgICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2Uo
KTsKKyAgICB9CisKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVz
KCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0
cmljdE1vZGVGZWF0dXJlOwpAQCAtMzExLDEwICszMjYsMTAgQEAKICAgICAgICAgZmVhdHVyZXMg
fD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykK
ICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCisKICAgICBW
ZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlm
IChtX3BhcnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxl
czsKLSAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxv
dyBidWlsdGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgp
KTsKQEAgLTQ1OCw2ICs0NzMsNDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAgIGF1dG8gc291
cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNp
Z25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9j
YXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9u
IHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4g
PSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KGNvbnRleHQpOworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAg
aW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0g
NDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHR5cGUKKworICAgIHsKKyAgICAgICAgQXV0
b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAg
ICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rp
b25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0
LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAg
ICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJp
YWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9r
ZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVy
QmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZv
LmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENv
bHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4
cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBw
ZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNv
dXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAg
ICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQzLDE0
IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
Qm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBG
dW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0
aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCks
IGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYy
LDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBw
YXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAg
LTE2MjUsNiArMTY3OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5l
cmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rp
b24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiAr
MTc1OCwzNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5T
dGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRl
cigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8g
Z2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5l
cmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JW
YWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVN
b2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
UmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5n
U2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBl
Y3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUg
ZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9u
UGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIgKzE4OTksMTAgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAg
ICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAg
ICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rp
b25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0g
ICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hl
ZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJv
ZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNo
ZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5n
LCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25T
Y29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAg
ICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKQEAgLTE4MzIsNyArMTkxNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExp
bmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8u
ZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJ
bmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
IDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVu
Y3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsx
OTM4LDMzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0
aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAot
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRM
b2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUs
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1Q
YXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25C
b2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5k
LCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBh
cmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVm
IGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRv
ckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlv
bkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0
IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBz
dHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUo
KSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigp
LCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsK
KyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qg
b2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwog
ICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rp
b25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5m
by5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3Bl
LT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1f
dm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwg
ZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFt
ZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJv
cGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOwogICAgIH0KQEAgLTE5MjksNyArMjAzMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwog
I2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5k
aWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
ZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1
bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBz
dGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Myw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAg
ICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1v
ZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7
CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVk
ICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3MzEsNyArMjgzNCw3IEBAIHN0
cnVjdCBMYWJlbEluZm8gewogICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmll
cih0aGlzKTsKIAogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlF
TEQpKQorICAgIGlmIChtYXRjaChZSUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJl
bnRTY29wZSgpLT5pc0dlbmVyYXRvcigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogI2VuZGlmCiAKQEAgLTI4MzYsNiArMjkzOSw3IEBAIHN0cnVjdCBM
YWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rp
b25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdp
dGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQ
b2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDcs
MTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlp
ZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAg
ICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAg
ICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChz
YXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQo
bG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
WWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRT
dGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC0zMDQxLDcgKzMxNDYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9k
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZElu
Zm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwor
ICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5v
UmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25E
ZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAg
ICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMz
OTksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0
b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChj
b25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
byhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9u
KSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdj
N2Y0OTVlYzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAg
ICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJp
Y3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwg
bV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTky
LDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShy
aHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMu
bV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMu
bV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNB
cmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAg
ICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVT
Y29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1
Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
OgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0
IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAK
ICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4
LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0
ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlm
aWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2lu
KCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3Bl
LT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xl
eGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFi
bGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFi
bGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29u
dGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5j
dGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlv
bkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKwor
ICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBh
biBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAg
ICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90
IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAg
ICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4K
ICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3Rl
ZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2Fs
U2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5h
ZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVz
LmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdh
dGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBm
dW5jdGlvbi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAg
ICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9
IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhp
Y2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAg
IHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0
aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQg
c2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAg
ICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsK
ICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1
Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lz
RnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsK
KyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAg
aW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewog
CiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwK
KyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5Q
YXJzZXIoKTsKIApAQCAtMTE1MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJz
ZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01v
ZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJz
ZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVj
dGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRl
ciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRl
cmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5v
dEV4cG9ydGVkIH07CkBAIC0xMTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJl
ZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRl
cihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVk
IGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25C
b2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwg
aW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1
bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVl
QnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291
cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19J
TkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENv
bnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVj
bGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVj
dHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6
ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0
LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVj
bGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUlu
aXRpYWxpemVyKTsKQEAgLTEyMTUsNiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5k
aW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVp
bGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVp
bGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwogCkBAIC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1f
c291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1cGVyQmlu
ZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3Ry
dWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNz
IFBhcnNlciB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
SlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQg
ZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3
Miw3ICsxNDk2LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3Zp
ZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBz
dXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9
IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBA
QCBjbGFzcyBQYXJzZXIgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hv
dWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwg
ZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxV
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBh
cnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNl
ci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1
MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBA
QAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwK
ICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0
ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcg
QEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0
LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTcz
YjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNvdXJjZUNvZGVLZXlfaAorI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1
YmxpYzoKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlv
blR5cGUsIE1vZHVsZVR5cGUgfTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9
CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVp
bHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNl
Q29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxh
Z3MoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Ry
aWN0TW9kZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAg
ICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisg
ICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZl
IG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0
aGF0IHNvdXJjZQorICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2Ug
dGhpcyBlZmZpY2llbnQuCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlQ29kZS50b1N0cmluZygpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNl
Q29kZUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90
aGVyLm1faGFzaAorICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAg
ICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9u
YW1lID09IG90aGVyLm1fbmFtZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3Ry
aW5nKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOwor
ICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBt
X2hhc2g7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsg
fQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291
cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtl
eT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1
ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291
cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQor
CisjZW5kaWYgLy8gU291cmNlQ29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNh
YjZjNzE5MWIuLjNlMGMzMGZkMWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAg
KzE4MCwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwg
Ym9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHBy
ZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9u
VHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBG
dW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50
LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBi
b29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1
bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxT
eW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVu
Y3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7
IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50
YXhDaGVja2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZv
aWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1
bWVudHNVc2UoKSB7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAg
IGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAppbmRleCBmMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBl
Li4yYTI0NDJmYWE2ZWVhODE4Mjg0NWZmYjE3YjIxYTJiOTkzODRjYjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2
bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0s
IHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxs
cHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9k
ZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2
MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1O
b2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwg
JnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJs
ZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBv
bmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwg
YmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVt
cHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNv
dXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6
OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVz
KTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNl
Q29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKaW5kZXggNDhjOGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4u
OWI4YzE1MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNp
bmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTU2LDcxICs1Nyw2IEBACiBjbGFzcyBTb3VyY2VDb2Rl
OwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGlj
OgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlw
ZSwgTW9kdWxlVHlwZSB9OwotCi0gICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQot
ICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9z
b3VyY2VDb2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwg
bV9mbGFncygKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8
IDMpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8
IDIpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwg
MSkKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAg
ICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQot
ICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAg
ICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2
ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQg
dGhhdCBzb3VyY2UKLSAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtl
IHRoaXMgZWZmaWNpZW50LgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUNvZGUudG9TdHJpbmcoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBv
dGhlci5tX2hhc2gKLSAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0g
ICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1f
bmFtZSA9PSBvdGhlci5tX25hbWUKLSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0
cmluZygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsK
LSAgICBTdHJpbmcgbV9uYW1lOwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQg
bV9oYXNoOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBT
b3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNv
dXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVL
ZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRy
dWU7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNv
dXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0
cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggNGNmNjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1
MTJkY2NhYjliMDI0OGYzZmQ4MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAg
bWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlv
bikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkp
IFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwx
MyBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBc
CiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAg
IG1hY3JvKGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBc
CiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0
OTY0ZDQ0OTY0MzkxLi4wOTVhNmVmY2UwOGE3YjZlMWY5YWJhZDk3ZTZjM2I2NWI2YzM0NDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9y
SGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYg
KzY0NSwzOCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBB
cml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVz
IGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRl
ZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1
c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBh
cmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAg
ICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKKyAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5l
cmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJh
bWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAg
ICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVSZWdpc3RlcnMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAg
ICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09i
amVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICBpbnQgbGl2ZUNhbGxlZVJl
Z2lzdGVyc0luZGV4ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlUmVnaXN0ZXJzQXRZaWVsZChsaXZlQ2FsbGVlUmVn
aXN0ZXJzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSku
anNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBpbnQgbGl2ZUNhbGxlZVJlZ2lzdGVyc0luZGV4ID0g
cGNbMl0udS5vcGVyYW5kOworICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2Nr
KCktPmxpdmVDYWxsZWVSZWdpc3RlcnNBdFlpZWxkKGxpdmVDYWxsZWVSZWdpc3RlcnNJbmRleCkp
OworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMjI2MTg1YzRjN2VhN2NjNmZjN2Yz
Y2M0ZjFmMzdlNjBlYjcyZjE3YS4uZjAwZDg3MDVkNGU2N2ZlNGQ0MDU5YmRlMTY4ZWU4OGY1N2Rm
NzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1Bh
dGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2
ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGE2MzJjNDhlMDMwYjQxYjMzYjMzZGJh
MTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0MmJjMTJlZTAyMTgzNGE4MmY4MWYwZmM5NzliY2Rh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBA
IC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
ICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwog
fQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
Y2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1v
ZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKCFt
b2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMw
M2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQyMDYwMDY3MjI5YWE0MGFiNDdlOWI0MDUyOTYyMWZl
ODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdD
b2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlu
a2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwg
a2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lKCksIApAQCAt
NTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgo
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBt
X3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAK
LSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICBB
U1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0
Li44OGEyNGFkNmNhYjJkNjIwNTIxMDRmMDEzMDJlZGUwMjJhNDRkNmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xh
c3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5l
cmF0b3JUaGlzOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAg
ICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdl
bmVyYXRvclRoaXM6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhl
Y3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpczo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmdldCgpOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsg
fQpAQCAtNjUwLDEyICs2NTAsMTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0
QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xh
c3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3Qg
cGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFy
YW1ldGVyQ291bnQoKTsgfSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCk7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0MmZhNWZlMjYzMDRl
ODZlZTIwMTNiMTAwY2FiYjIyMWM0MjljLi5iMGFiNmJmYzA5Mjk4NzAwOGMyNTVkN2RiNWVhMTRi
OTYyNmE1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
KQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmll
ciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgYm9vbCBpc0dlbmVyYXRvcikKIHsKICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNv
dXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwg
c291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGlzR2VuZXJhdG9yKTsKIH0KIAogSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
CiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGlu
ZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVM
aW5lTnVtYmVyLCBib29sIGlzR2VuZXJhdG9yKQogewogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkg
ZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5Lgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAu
CiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBw
cm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwg
IigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAi
LCAoaXNHZW5lcmF0b3IpID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtc
blxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFt
ID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtc
biIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAg
ICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIChpc0dlbmVyYXRvcikgPyAi
KiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVu
Y3Rpb24gIik7CisgICAgICAgIGlmIChpc0dlbmVyYXRvcikKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcqJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmco
KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2LDkgKzEyOCw5
IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygK
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgYm9vbCBpc0dlbmVyYXRvcikKIHsKLSAgICByZXR1cm4gY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5v
bnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCksIGlzR2VuZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgK
aW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4uMjc5NGNkMjBi
NzYzMWMxNzlmZGUwMmFhOTU3MGQxMGZlYWJmZDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYsMTIgKzU2LDEy
IEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9
OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGJvb2wg
aXNHZW5lcmF0b3IgPSBmYWxzZSk7CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgYm9vbCBpc0dlbmVyYXRvciA9
IGZhbHNlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcm
LCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSk7
CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJp
ZGVMaW5lTnVtYmVyID0gLTEsIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M3MzdhOTQzYWQ5ZWQ3MmE5YmE4ZDg0MjlkNWJmNDVi
ZDFmZWZkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFt
ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJh
dG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCisgICAgOiBC
YXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVy
T2ZDYWxsZWVSZWdpc3RlcnMobnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpCit7Cit9CisKK3ZvaWQg
R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2Fs
bGVlUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIHJlZ2lzdGVyQXQoaSkuY2xlYXIoKTsKK30KKwor
U3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
Q2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZSZWdpc3RlcnMp
Cit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAg
ICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2
bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyhudW1iZXJPZlJlZ2lzdGVycykpKQor
ICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlUmVnaXN0ZXJzKQoreworICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgcmVnaXN0ZXJz
LgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwg
cGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVSZWdp
c3RlcnMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisgICAgLy8g
U2luY2UgQyBzdGFjayBjYW4gYmUgdXNlZCBmb3IgYW55IHB1cnBvc2UsIGFuIGluY29ycmVjdCB2
YWx1ZSBmb3IgYSBqcyB2YWx1ZSBtYXkgZXhpc3QKKyAgICAvLyBpbiBhIG5vbi1pbml0aWFsaXpl
ZCAoYnV0IGFsbG9jYXRlZCkgSlMgcmVnaXN0ZXIuCisgICAgLy8KKyAgICAvLyBGb3IgZXhhbXBs
ZSwKKyAgICAvLworICAgIC8vICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVnaXN0ZXJBID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgLy8gICAgIC4uLgorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3Zl
IGNhc2UsIHJlZ2lzdGVyQSBpcyBhbGxvY2F0ZWQuIEJ1dCBpdHMgY29udGVudCBtYXkgbm90IGJl
IGNvcnJlY3QganMgdmFsdWUuCisgICAgLy8gQXMgYSByZXN1bHQsIEpTQ2VsbCBwb2ludGluZyB0
byB0aGUgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24gbWF5IGV4aXN0LgorICAgIC8vIFBlcmZvcm1p
bmcgYSB3cml0ZSBiYXJyaWVyICgmIFNsb3RWaXNpdG9yJ3MgbWFya2luZykgb24gdGhlc2UgaW5j
b3JyZWN0IGNlbGxzIGNhdXNlcyBpbnZhbGlkIGRlcmVmZXJlbmNlcy4KKyAgICAvLyBUbyBhdm9p
ZCB0aGlzIHNpdHVhdGlvbiwgd2UgdGVzdCBhIGdpdmVuIGNlbGwgbGlrZSBwb2ludGVyIGlzIHRy
dWx5IGNlbGwuCisgICAgLy8gVG8gdGVzdCB3aGV0aGVyIGEgZ2l2ZW4gcG9pbnRlciBpcyBhIGNl
bGwgYW5kIGxpdmUgLyBkZWFkLCB3ZSBuZWVkIHRvIHN0b3AgZnJlZSBsaXN0IGFsbG9jYXRpb24u
CisgICAgLy8KKyAgICAvLyBGSVhNRTogVGhpcyBpcyB2ZXJ5IGNvc3RseSBvcGVyYXRpb24uIFdl
IHNob3VsZCBleHBsb3JlIHRoZSB3YXkgdG8gdGVzdCB3aGV0aGVyIGEgZ2l2ZW4gY2VsbCBpcyBk
ZWFkIG9yIGxpdmUgZXZlbiBpZiB0aGlzIGlzIGFsbG9jYXRlZCBmcm9tIGEgZnJlZSBsaXN0Lgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAKKyAg
ICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoZXhlYy0+dm0oKS5oZWFwKTsKKyAg
ICBsaXZlQ2FsbGVlUmVnaXN0ZXJzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewor
ICAgICAgICBKU1ZhbHVlIHJhd1ZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKTsKKyAgICAgICAgaWYgKHJhd1ZhbHVlLmlzQ2Vs
bCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnZtKCkuaGVhcC5pc0xpdmVDZWxsKHJhd1Zh
bHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgLy8gTm90ZSB0aGF0IGludmFsaWQgbm9uLWNlbGwgdmFsdWUgbWF5IGJlIHN0b3JlZC4gKGUu
Zy4gYSB2YWx1ZSB3aXRoIGFuIGludmFsaWQgdGFnIGluIDMyYml0IGVudmlyb25tZW50KS4KKyAg
ICAgICAgLy8gQnV0IHNpbmNlIHRoZXkgYXJlIG5vdCByZWNvZ25pemVkIGFzIGEgY2VsbCwgd3Jp
dGUgYmFycmllcnMgLyBtYXJraW5nIGRvIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMuCisgICAgICAg
IHJlZ2lzdGVyQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCByYXdWYWx1ZSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVSZWdpc3RlcnMpCit7CisgICAgLy8gT25seSBy
ZXN1bWUgY2FsbGVlIHJlZ2lzdGVycy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlz
IGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAg
IGxpdmVDYWxsZWVSZWdpc3RlcnMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9
IHJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOworICAgICAgICByZWdpc3RlckF0KGluZGV4KS5jbGVh
cigpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIC8vIFNpbmNlIG9ubHkgdHJ1
ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsg
dGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5yZWdpc3RlcnMoKSwg
dGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmQ3YzZiYzRlYjljZjI2MmM3OTVhYTQ1ODdjNTU0YjBiOTFhMWZjYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdl
bmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAorCisjaW5jbHVkZSAiSlND
ZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVj
dWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgor
ICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJP
ZkNhbGxlZVJlZ2lzdGVycyk7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWdp
c3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mUmVnaXN0
ZXJzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIHJlZ2lzdGVy
QXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJP
ZkNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlcnMoKVtpbmRleF07Cisg
ICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlJlZ2lzdGVycygpCisgICAgeworICAg
ICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mUmVnaXN0ZXIoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9mZnNldE9mUmVnaXN0ZXJzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JS
ZWdpc3RlcnModW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMpCisgICAgeworICAgICAgICByZXR1
cm4gb2Zmc2V0T2ZSZWdpc3RlcnMoKSArIG51bWJlck9mUmVnaXN0ZXJzICogc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAg
ICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZVJlZ2lzdGVycyk7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUo
Vk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVSZWdpc3RlcnMpOworCisgICAgc2l6ZV90IG1fbnVt
YmVyT2ZDYWxsZWVSZWdpc3RlcnM7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcm90ZWN0ZWQ6Cisg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3Y2QzZWQwMjViZWE5MjdmNjA1MzZh
Mzk5YmVkYzgzNzEyYTM5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisK
K2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVu
Y3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Ig
Y29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlz
dCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rp
b24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9yICovIHRydWUpKTsKK30KKworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIC8qIGlzR2VuZXJhdG9y
ICovIHRydWUpKTsKK30KKworQ2FsbFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAg
IHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBj
b25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0
VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlOGYyZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgxOGVl
Zjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNs
dWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5j
bHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0
IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRh
MTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5l
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJv
dGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJH
ZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisg
IG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAg
SlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAg
ICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCit2b2lkIEdlbmVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmlu
Zygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90
eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1
cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRh
YmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgw
YjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2EwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBl
X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBH
ZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsK
KworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoR2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlh
NmUwOTVjMzJhYWRjNTQ0NmEzNTVkODE3NWE5NTlkZDQ4NGNmOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXMuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc19oCisjZGVm
aW5lIEdlbmVyYXRvclRoaXNfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8g
aHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlw
dC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8g
V2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0
b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFy
eUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5l
cmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8v
CisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMK
Ky8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAg
ICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgpOwor
Ly8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8v
ICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUg
ZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xs
b3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMg
Y2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybmVzIGEgR2VuZXJhdG9yIHRoYXQgZnVu
Y3Rpb24gaGFzIEdlbmVyYXRvclRoaXM6OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdo
ZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0g
Y2xhc3MgR2VuZXJhdG9yVGhpcyA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBOb25FbXB0
eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUw
MmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJk
YTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcg
KzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXRE
aXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICgh
aXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwog
ICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAg
ICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5l
cmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Nj
b3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlv
biA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhl
YXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNT
RVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVy
YXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9u
ID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4ZWN1dGFibGUtPnNp
bmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwgIkFs
bG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVu
Y3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBj
cmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkwZjJk
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9u
X2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJ
bnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JS
ZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBS
ZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisKKyAgICBjb25z
dCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5j
dGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0
YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVu
Y3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMg
SlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJhYWRhZjc0MDJhNzdiYzBmNTkuLjc2MjJiYjky
YTE5MTUxMWQ4MzA0ZWEwYjFkMDBiMzg5ODdlYmM4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNp
bmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUg
IkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxU
SU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRF
UkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0
KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVS
QVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJy
b3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkp
OwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKKworICAg
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAg
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25z
dHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX29iamVjdFByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtODE4LDYg
KzgyOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJy
b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9y
UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Rl
YnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAsNiArODYyLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVS
ZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgx
ODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90
b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNl
dHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5
LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3Rv
dHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90
b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90
b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3BlcnR5
T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9y
ZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1
cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVy
cm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90
b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVy
YXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5l
cmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1
Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVM
b2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3YjUw
NjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1NGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dy
YW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZUNv
ZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIHRocm93Vk1F
cnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUx
MzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3
ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQs
NiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0
b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgq
dGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVU
YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9u
UmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQz
MTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQz
YjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2Vw
dGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFmYjZj
N2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3MjE0
OTY5NGMzMmQyOGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE5
LDcgKzcxOSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9w
cm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5
X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9z
dGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2lu
c3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcyNyw3IEBACiAtIHBh
dGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3Npbmcu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3Rh
dGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0Fy
cmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1Myw3
ICs3NTMsNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJh
dG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMK
ICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0
YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMsNyBAQAogLSBwYXRo
OiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3Rh
bmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBy
dW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2Zf
Z2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAtIHBhdGg6IGVzNi9m
dW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25z
dHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
JUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3Rv
dHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFu
ZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNf
Y2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
Z2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0
aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVk
X3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJy
YXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNl
c19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmcu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
TWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2
L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogLSBwYXRo
OiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1
bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRf
Li4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFk
Xy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5l
cmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
Z2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4
Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEs
MyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xv
YmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRo
b2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAn
ZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxl
bmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAor
ICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93
J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBm
dW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVu
Y3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJs
ZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2
N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2Vz
X29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEs
MjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9
IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykg
eworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0
aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgr
KzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsg
dmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3Jl
dHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9
OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rp
b24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgy
ZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQz
NDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0g
J3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJ
dGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9Owor
aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgewor
ICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJy
Lmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAg
J3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFi
bGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0
dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmdf
dmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0
ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0
ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93
LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykg
ewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0
KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5
bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsK
K30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAg
fTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRo
b2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRl
cmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7
Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50
cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNkOWE3
ZTE4ODM3MDcwY2FlZThkZjhiY2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1
bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKGFjdHVhbC5sZW5n
dGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5s
ZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoYWN0dWFs
W2ldLCBleHBlY3RlZFtpXSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcHJp
bnQoSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAg
ICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlv
biB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfQorCisgICAg
cmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVu
Y30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQor
CisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisg
ICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAg
ZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0
MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3Ry
aWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0
cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWll
bGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAs
IDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAx
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAg
ICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwg
Mik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBj
KQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5
aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIo
MCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1
ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0
ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAg
ICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5n
KGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBt
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFs
KHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4
IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikp
OworfQorCit0ZXN0U3ludGF4RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3Rv
cigpCisgICAgeworICAgIH0KK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBn
ZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBD
b2NvYSB7CisgICAgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2Ap
OworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7
CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6
ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworY2xhc3MgQSB7CisgICAgKmdlbigpCisgICAgewor
ICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4g
NDI7CisgICAgfQorCisgICAgc3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWll
bGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0K
K30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
YSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBl
RXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5n
ZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LmRvbmUsIHRydWUpOworfQoreworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0
IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBu
b3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1
YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQg
ZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+
IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24o
KSB7CisgICAgZXZhbCgndGhpcycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNz
IEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICByZXR1cm4g
ZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBB
KCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAgKmdlbmVyYXRvcigpCisgICAgeworICAgICAgICB5
aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
bGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5u
ZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVh
ZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3Vs
ZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBn
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVj
dG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1
bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBl
LmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5h
bWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDVi
MGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0
b3I7Cit9OworCit2YXIgZyA9IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
bWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NTYxZDkzMDc2MGQyMGVlNmVmNGNlNTcwM2VmNzNiOWZmOWFlNTZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0
aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFs
c2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVz
c2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9y
KX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigpIHsKK30KK3ZhciBnID0gZ2VuKCk7CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhp
c3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CisKKworc2hvdWxkVGhyb3coKCkgPT4geworICAg
IGcudGhyb3cuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2Vu
ZXJhdG9yYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnJldHVybi5jYWxsKHt9KTsK
K30sIGBUeXBlRXJyb3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1i
ZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk2YTIx
N2Y3MmM4N2MwODk4ZTU5MDlhYmFmMzg1YmYyMDg5OTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1m
aXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sK
KyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAg
IHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitnLnJldHVybigiSGVsbG8iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10
aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg4MGFmNmUwNzg5ZGMxOGJiYWQzYTBhZmJiZjVhZDlhODVlYzEz
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci10aGlzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBm
YWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JN
ZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJy
b3IpfWApOworfQorCisKK3ZhciBnbG9iYWwgPSBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJyko
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB5aWVs
ZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGdsb2JhbCk7CisgICAgfQorICAgIHsKKyAgICAgICAg
bGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAg
ICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3Mg
dW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgdGhp
c09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOworICAg
ICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICAidXNlIHN0
cmljdCI7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQg
ZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsK
KyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVu
Y2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0K
KyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2Vu
LmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlz
T2JqZWN0KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmly
c3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDZjYjRmOTdlZTEwYzM4NTA2ZTE4ZWFjMGQ5YTNlNDE4
NzllZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCArMSwyMCBA
QAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigiTkciKTsK
K30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwordmFyIGcg
PSBnZW4oKTsKK3ZhciBlcnJvciA9IG5ldyBFcnJvcigiT0siKTsKK3ZhciB0aHJvd24gPSBudWxs
OwordHJ5IHsKKyAgICBnLnRocm93KGVycm9yKTsKK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJvd24g
PSBlOworfQoraWYgKHRocm93biAhPT0gZXJyb3IpCisgICAgdW5yZWFjaGFibGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgt
bmV3LXRhcmdldC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtbmV3LXRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDNiMmRmOTlhODQ4MGNiMzVhN2Rk
NmIzNGU2NjI1MzZlYWI4ZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCkBAIC0wLDAgKzEs
MTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB5aWVsZCBuZXcudGFyZ2V0
OworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5l
ZCk7CisKK3ZhciBnMiA9IG5ldyBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRl
ZmluZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itd2l0aC1zdXBlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1M2M3OTE3MzhlY2Y4Yjlk
MzQ5ODM1ZWE4M2JmOGQ2Yzg5NzdiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKQEAgLTAsMCArMSw4
MiBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyJyk7CisgICAg
fQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4gdGVzdCgpLCBgU3ludGF4RXJyb3I6IHN1cGVyIGlz
IG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdl
bigpIHsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzdXBlci5nZW4oKScpOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgYS5nZW4oKS5uZXh0KCk7CisgICAgfSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBv
bmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4o
KSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRCZShhLmdlbigpLm5leHQoKS52YWx1ZSwg
NDIpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2Vu
KCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xh
c3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgeWllbGQgc3Vw
ZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVy
cm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2Vu
KCknKWApOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5ZjE4OGJjYzJmNWI1ZWNj
MzUzMDUxNGMyMGVkNTY2ODhhNmEyOThjLi45OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2Nl
NGU0YjE1NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysr
IGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0xODEsNyArMTgxLDcgQEAgY2xh
c3MgRmFzdEJpdFZlY3RvciB7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBuID0gYXJyYXlMZW5ndGgoKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG47ICsraSkgewpAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIEZhc3RC
aXRWZWN0b3IgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IDQyMTk0MWYzYTQ0YWM2ZGM1ZDli
NjdmZDJjZGQ4NmYxMjAxM2M2NDguLmY0NmUxMTk3M2U1MjRjYTQyODU2YjBkNzY4Mzc5ZTFhOWY0
NTkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtMzY0LDcgKzM2NCw3IEBACiAjZW5k
aWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKQotI2RlZmluZSBFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgMAorI2RlZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMQogI2Vu
ZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2X01PRFVMRVMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUx
NzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQz
Y2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVO
QUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0g
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01P
RFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1
NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1
ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxF
X0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFC
TEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9F
UzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxF
UyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3
MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5
YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0g
OwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwog
RU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lO
VEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0g
RU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
Tkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IDljZDg0NjVjMDljOWYxNzg2MDRjOWFiMjkyNWE3
MGFiNDdjNjNlM2MuLjAyY2M3OThiMjBiZDZlNDYyNjNiZTM5ZDkwMWE4ZmU5NGNiOWVkOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV2luLmNtYWtlCkBAIC0zNCw3ICszNCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04gUFVCTElDIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIFBVQkxJ
QyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9NNF9FVkVO
VFNfQ09OU1RSVUNUT1IgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9GRikKK1dFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfR0VORVJBVE9SUyBQVUJMSUMgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X01PRFVMRVMgUFVCTElD
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfVEVNUExB
VEVfTElURVJBTF9TWU5UQVggUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVNIFBVQkxJQyBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKaW5kZXggZDk2MjI0ZDQxNzFiZGJhNzE3MGM0NWQzZGQ3MjE3NTQ3NzEyZjUwZC4uMDBl
ZGJjMDEzYmZmNjZmN2EwM2ZkZDI5YjYzMWY0NjI1MGJlMjQzNCAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZQpAQCAtNzcsNyArNzcsNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgIlN1cHBv
cnQgRU1FIHYyIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYICJUb2dnbGUgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRh
eCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9F
UzZfQ0xBU1NfU1lOVEFYICJUb2dnbGUgRVM2IGNsYXNzIHN5bnRheCBzdXBwb3J0IiBQUklWQVRF
IE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9n
Z2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1
cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9N
T0RVTEVTICJUb2dnbGUgRVM2IG1vZHVsZXMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCAiVG9n
Z2xlIEVTNiB0ZW1wbGF0ZSBsaXRlcmFsIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIgIlRvZ2dsZSBGaWx0
ZXJzIE1vZHVsZSBMZXZlbCAyIiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMmRiMjI4Nzc5ZTE4YTU5ZTg1MDM3MWI2NWZj
MjNlZjViYjJkZDlkLi43MDk4MWVjNjE1MmU4NmYxNmIxMjQyNTdlNmNjNDU3NzMwODc2ZWIwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTUtMTEtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9y
IEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbToKKwogMjAxNS0xMS0yMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIHJ1bi13ZWJraXQtdGVzdHM6IGh0dHAgc2VydmVyIGZvciBpbXBvcnRl
ZCBXM0MgdGVzdHMgZG9lc24ndCB3b3JrIHdpdGggLS1sYXlvdXQtdGVzdHMtZGlyZWN0b3J5IHN3
aXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNkZWI1MjVj
Zjk0YjVhOGUxMjFiYTI0ZTM3OWQyMzNkNjkxYzZiODkuLjQ2MjE4ODE1YjE1M2M1MzI5OWJjMjcx
ZDliNzdmNzQ4YWQzMDcwNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KQEAgLTE4NSw3ICsxODUsNyBAQCBCRUdJTgogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjbGFzc1N5bnRheCB9LAog
CiAgICAgeyBvcHRpb24gPT4gImdlbmVyYXRvcnMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IGdlbmVy
YXRvcnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAorICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwk
Z2VuZXJhdG9yc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJtb2R1bGVzIiwgZGVzYyA9
PiAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RVM2X01PRFVMRVMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbW9kdWxlc1N1cHBvcnQgfSwK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3OWE2YmNmNjc1NGUwZjE1
MTNlZDY4ZTE0YThiMDkwMTgyMjQ0OGFhLi4zMzhhYTUwMjI0NmZhYTFhZmY1MGRmYmYwNWU3ZGJl
ZmNiNTVjZTQ5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTUtMTEtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9y
IEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2lu
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwog
MjAxNS0xMS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBORVRXT1JLX1BST0NFU1MgY29tcGlsZSBmbGFnCmRpZmYgLS1naXQg
YS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpp
bmRleCAwYzhhZjJhYmIxMTI0OGViYTFmYTA4M2I5MzIyOTdjMjdjNDI4MGI1Li5lZDM3ZjM5OTgx
MGYzNGE3MTQ5YTc2ZWNiYmY1ZjBlYmE4YjMyMmQ3IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJp
ZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxNS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2
IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURl
ZmluZXMucHJvcHM6CisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXND
YWlyby5wcm9wczoKKwogMjAxNS0xMS0wNSAgTmlrb3MgQW5kcm9uaWtvcyAgPG5pa29zLmFuZHJv
bmlrb3Mtd2Via2l0QGNpc3JhLmNhbm9uLmNvbS5hdT4KIAogICAgICAgICBBZGQgcnVudGltZSBh
bmQgY29tcGlsZSB0aW1lIGZsYWdzIGZvciBlbmFibGluZyBXZWIgQW5pbWF0aW9ucyBBUEkgYW5k
IG1vZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDBkNzRhOGY3ZWU1MjFlMDRmOWZlYmU0ZGZhNzkyOWQ3
ZTMzY2NkY2YuLmIwN2RjNTBhYmUyNWUwYjcwZmNhNWMzMDVkMTY2YmY1ZTcwYTg4ZWQgMTAwNjQ0
Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5w
cm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmlu
ZXMucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQg
Lz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyPkVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI8L0VOQUJMRV9F
TkNSWVBURURfTUVESUFfVjI+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxF
TkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dF
TkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8
L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZ
U1RFTSAvPgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJv
cHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCA5MWVlODBmZGY0YWYxNThlYzVlZTQ4
M2QwNjk2YzcxY2U0ODY0MTJkLi5mNWIwOGZmODEwZjdlNjFiN2NlYzZhYzVlYTY5YTFhOTgzNTM4
MGE4IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXNDYWlyby5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJv
cHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09O
U1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgLz4KLSAgICA8RU5BQkxF
X0VTNl9HRU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2
X0dFTkVSQVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RV
TEVTIC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266127</attachid>
            <date>2015-11-24 02:16:01 -0800</date>
            <delta_ts>2015-11-24 02:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151124191543.patch</filename>
            <type>text/plain</type>
            <size>340085</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi45MjhjMjZlZmFmZDlhNGNm
NWE3MGQ1NDU5NzJjOTg1MGI1MTIxYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsODE5IEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisgICAg
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTYwCisg
ICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2
CisKKyAgICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9s
bG93aW5nIGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRo
ZSBzYXZlL3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0
b3JpbmcgaW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRj
aF9pbW0gdG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBv
bmUgZW50cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWdu
IG1ha2VzIGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVz
IHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0
b3JTdGF0ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5pdGlhbDoKKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgc2VxdWVuY2UuCisgICAgICAg
ICAgICAgICAgICAgIC4uLgorCisKKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8w
KTsgIC8vIG9wX3NhdmUgY29udGFpbnMgKnZpcnR1YWwqIGp1bXAgdG8gWWllbGRfMC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENGRyBzaG93cyBhIGp1bXAgZWRn
ZSB0byBZaWVsZF8wIHBvaW50LCBidXQgaXQgd29uJ3QgYmUgYWN0dWFsbHkgdXNlZC4KKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MDoKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIC8vIHNlbnRWYWx1ZSBpcyBhIHZhbHVlIHNl
bnQgZnJvbSBhIGNhbGxlciBieSBgZ2VuZXJhdG9yLm5leHQoc2VudFZhbHVlKWAuCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIG9wX3NhdmUoWWllbGRfMSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAgICAgICAgICAgICAgICBjYXNlIFlpZWxkXzE6
CisgICAgICAgICAgICAgICAgICAgIG9wX3Jlc3VtZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUg
PT0gUmV0dXJuKQorICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBzZW50VmFsdWUgPSBAZ2VuZXJhdG9yVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZXN1bWUgc2VxdWVuY2Ug
c2hvdWxkIG5vdCBiZSBlbWl0dGVkIHBlciB5aWVsZC4KKyAgICAgICAgICAgIFRoaXMgc2hvdWxk
IGJlIGRvbmUgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU1
Mi4KKworICAgICAgICAyLiBTdG9yZSBsaXZlIGZyYW1lIHJlZ2lzdGVycyB0byBHZW5lcmF0b3JG
cmFtZQorCisgICAgICAgIFRvIHNhdmUgYW5kIHJlc3VtZSBnZW5lcmF0b3IncyBzdGF0ZSwgd2Ug
c2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGluIEdlbmVyYXRvckZyYW1lLgorICAgICAgICBB
bmQgd2hlbiByZXN1bWluZywgd2UgcmVmaWxsIHJlZ2lzdGVycyB3aXRoIHNhdmVkIG9uZXMuCisg
ICAgICAgIFNpbmNlIHNhdmVkIHJlZ2lzdGVyIGNvbnRhaW5zIHNjb3BlIHJlZ2lzdGVyLCB8dGhp
c3wgZXRjLiwgdGhlIGVudmlyb25tZW50IGluY2x1ZGluZyB0aGUgc2NvcGUgY2hhaW4gd2lsbCBi
ZSByZWNvdmVyZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAgV2hpbGUgc2F2aW5nIGFuZCByZXN1
bWluZyBjYWxsZWUgcmVnaXN0ZXJzLCB3ZSBkb24ndCBzYXZlIHBhcmFtZXRlciByZWdpc3RlcnMu
CisgICAgICAgIFRoZXNlIHJlZ2lzdGVycyB3aWxsIGJlIHVzZWQgdG8gY29udHJvbCBnZW5lcmF0
b3IncyByZXN1bWUgYmVoYXZpb3IuCisKKyAgICAgICAgV2UgcGVyZm9ybSBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgaW4gQ29kZUJsb2NrIHRvIGRldGVybWluZSB3aGljaCByZWdpc3RlciBpcyBs
aXZlLgorICAgICAgICBSZWdpc3RlcnMgcmVzaWRlIGluIEMgc3RhY2suIFNvIGlmIHdlIGRvbid0
IHBlcmZvcm0gaXQsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB2YWx1ZSBp
cyBKU0NlbGwgb3Igbm90CisgICAgICAgIHRvIGVtaXQgd3JpdGUgYmFycmllcnMuCisgICAgICAg
IEJ5IHBlcmZvcm1pbmcgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLCB3ZSBjYW4gZGV0ZXJtaW5l
IGFjdHVhbGx5IGBkZWZgaW5lZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAg
ICAgICAgMy4gR2VuZXJhdG9yRnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9y
ZSBnZW5lcmF0aW5nIEdlbmVyYXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBz
aG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3Ig
ZXhhbXBsZSwKKworICAgICAgICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAg
ICAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHlpZWxkIGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdl
bigyMCk7ICAvLyBOb3csIGhlbGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5h
YmxlIHRoaXMsIHdlIGV2YWx1YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFu
ZCBhZnRlciB0aGF0LCB3ZSBjcmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAg
ICAgVGhpcyBjYW4gYmUgZXhwbGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisK
KyAgICAgICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgIDQuIG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBq
dW1wCisKKyAgICAgICAgV2Ugd29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFj
dHVhbGx5LiBCdXQgd2UgYWRkIGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9z
YXZlIHRvIHRoZSBwb2ludCBzbyBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29u
c3RydWN0IHRoZSBDRkcgYXMgZm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0
b3Igc3dpdGNoKSAtPiAoaW5pdGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1l
cmdlIHBvaW50KSAtPiAobmV4dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHYgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT4ob3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGlu
ZyBzdWNoIGEgZ3JhcGgsCisKKyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZy
b20gKG9wX3NhdmUpIHRvIChtZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVz
ZSogbG9jYWxzIHRoYXQgZGVmaW5lZCBiZWZvcmUgKG9wX3NhdmUpCisgICAgICAgICAgICAyLiBv
cF9zYXZlIHNob3VsZCBjbGFpbSB0aGF0IGl0IGRvZXMgbm90IGRlZmluZSBhbnl0aGluZy4KKyAg
ICAgICAgICAgIDMuIGF0IG9wX3Jlc3VtZSwgd2Ugc2VlICp1c2UqZCBsb2NhbHMgYXQgbWVyZ2Ug
cG9pbnQgYW5kIGRlZmluZSBhbGwgb2YgdGhlbS4KKworICAgICAgICBXZSBjYW4gZG8gdGhlIGFi
b3ZlIHRoaW5ncyBpbiB1c2UtZGVmIGFuYWx5c2lzIGJlY2F1c2UgdXNlLWRlZiBhbmFseXNpcyBp
cyBiYWNrd2FyZCBhbmFseXNpcy4KKyAgICAgICAgQW5kIGFmdGVyIGFuYWx5emluZyB1c2UtZGVm
IGNoYWlucywgaW4gb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB3ZSBvbmx5IHNhdmUgLyByZXN1bWUgbGl2
ZSByZWdpc3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgKiBBUEkv
SlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0
YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpz
OiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAgICAgICAocmV0dXJuKToKKyAgICAgICAgKHRo
cm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtQ2Fs
bGVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMaXZlQ2FsbGVlUmVn
aXN0ZXJzQXRZaWVsZCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAg
KEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNo
ZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToK
KyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5m
bzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3Vw
ZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6Cisg
ICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmdlbmVyYXRvclRo
aXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVyQmluZGluZyk6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1iZXJPZkxpdmVDYWxsZWVSZWdpc3RlcnNBdFlp
ZWxkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFkZExpdmVDYWxsZWVSZWdp
c3RlcnNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxp
emVQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmxpdmVDYWxs
ZWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRo
aXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
bmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rp
b25JbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb25Db21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yVGhpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c3VwZXJC
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VN
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRo
aXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNh
bGxlZSk6CisgICAgICAgIChKU0M6OmVtaXRTdXBlckJhc2VGb3JDYWxsZWUpOgorICAgICAgICAo
SlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0F0b20pOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
Yyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9u
Q29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVy
Lmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSk6CisgICAgICAgICogcGFyc2VyL05vZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNl
dElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpp
c01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVLZXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omlz
TnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OnN0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJhdG9yPT0pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxl
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6Y2hl
Y2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpz
YXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlZ2lzdGVyQXQpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvclJlZ2lzdGVycyk6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlw
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJP
YmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2Vz
Ni55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJp
Y19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJh
YmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToK
KyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9p
dGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAg
ICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmcu
anM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93
LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wu
aXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5
bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVy
cm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAg
ICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAg
ICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoQik6CisgICAgICAgIChBKToK
KyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6CisgICAgICAgIChDKToKKyAgICAgICAg
KFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5v
bi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRC
ZS5nLm5leHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3Jl
LWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAo
Z2VuKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXdpdGgtbmV3LXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KEIucHJvdG90eXBlLmdlbik6CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdl
bik6CisgICAgICAgIChBKToKKworICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAg
ICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2Vu
ZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAocmV0dXJuKToKKyAgICAg
ICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoK
KyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2Fj
aGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0KToKKyAgICAgICAgKEpT
Qzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6
OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86
OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6
CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VN
b2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmdlbmVyYXRvclRoaXNNb2Rl
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVyQmluZGluZyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29k
ZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdp
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50
ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
clRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnN1cGVyQmluZGlu
Zyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9k
ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAg
ICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRm
Zy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJs
ZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRsL0ZUTEZvck9TUkVudHJ5
SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0
aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAqIGZ0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUu
aDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnBy
ZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFJl
Z2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZnJhbWVSZWdpc3RlckNv
dW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29t
bW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jX2V4cCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1l
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVu
dHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5j
dGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVy
dHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6
U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2Up
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0
aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAg
ICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2Rl
S2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxs
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFj
a1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6
Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29k
ZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFz
aDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0
czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpj
aGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxl
OjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hl
Y2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFi
bGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNl
dE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzTW9k
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JG
dW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQ
cm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzOgorICAgICAgICAoaXRl
cmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAg
ICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0
b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAo
X19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6
CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJ
dGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQp
OgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRl
SXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1l
bnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItYXJndW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGcx
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50YXgpOgorICAgICAgICAodGVzdFN5bnRheEVy
cm9yKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5Db2NvYSk6CisgICAgICAgICh0ZXN0U3lu
dGF4LkNvY29hLnByb3RvdHlwZS5vayk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hKToKKyAg
ICAgICAgKHRlc3RTeW50YXguQ29jb2Eub2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY2xhc3MtbWV0aG9kcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChwcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKHN0YXRpY0dlbik6CisgICAgICAgIChzaG91
bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKEIpOgorICAgICAgICAoQSk6CisgICAgICAgIChDLnByb3RvdHlwZS5nZW5lcmF0
b3IpOgorICAgICAgICAoQyk6CisgICAgICAgIChUeXBlRXJyb3IpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG9rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0
aW9ucy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JG
dW5jdGlvbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3Jl
LWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAo
Z2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoZ2Vu
KToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJl
YWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci13aXRoLXN1cGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAoQi5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKEIpOgorICAg
ICAgICAoQS5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKEEpOgorCiA9PSBSb2xsZWQgb3ZlciB0
byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MGE1Nzk0YzA2ZjRmYWIwOWZmMDNhNjQx
NzgwZTNmMjZhYzNhZDhkLi44YTNkYzY4NzhmZWZiMDFjZmZjNDA5NTNlODlmMzE3ZDBjZTdhMWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGlu
ZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmFzdEJp
dFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpmb3JFYWNoU2V0Qml0KToK
KyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxNS0xMS0xOCAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9OIEZBSUxF
RDogdGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpID09ICcvJyBpbiBXZWJDb3JlOjpvcGVuVGVtcG9y
YXJ5RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMWEyM2UyMjhlN2RkYzBjOGJkMGJlMDFmNTA2NzAw
ZDc2YzljMS4uOWYwYTliYTU0YTJjOGFiY2E3ZmFkYmE2NDgyMGIxZTk0OWI0OWJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGlu
ZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0yMiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQgc2VsZWN0aW9uIHNo
b3VsZCBub3QgY29uc3VsdCBmb250LXZhcmlhbnQgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCAzYjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi43NzFlZTkwMzQ1NjIy
YTdkYjc1YmQ0NmM5NTJjYzA1N2EyOGRmOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xICsxLDEw
IEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYg
R2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzoKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZTYzNzg4NzI2Mjg0YzBiYTNmMTVjOGEzYjU5Y2MxZjdiMTYwZDNjLi5i
ZTM2MzdiZGFjMjNhZTEyNmE5NTY1MzQzN2NmMWY1ZTNlMTc1ZWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBBZGQgbWlzc2luZyBp
bnNwZWN0b3IgZmlsZSB0byBHVEsrIGNvbXBpbGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJlOTczYzU3NmMxOWY2
OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5MzdkMzA5MzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFyc2U8SlNDOjpQ
cm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAgICBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGVkMzBmZmUzMGM5MjJlOGRmNDA3NzE5ZDM2NDc1YjZiNjEx
ZTgyOTYuLmQ3MDdlMzNiZDMxYTEwMDNjNzUxYzdkODhiMGU3MDA0MWVjY2Q1Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisg
ICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVu
dGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjAyLDYgKzYwNiw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0
ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAg
ICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJD
RVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2ICsxMjAxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
anMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5
ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5W
QVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VT
Nl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dF
TkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7
CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFU
RV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05U
RU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMmY2NWRiNTVhMWVlZDM2NDljZmUzM2Q3OGI5MjZjNjI1MTNhOWY2OC4uZmRlNTdlOTM4
ZGJkNGZhMmRiZTVjMTRkN2JjOGZiZTExNTE3MDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg0LDYgKzg0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0
ZXJhdG9yLnByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXkucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlv
bi5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dlbmVyYXRv
ci5Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dsb2JhbE9i
amVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9JbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIwLDcgQEAgT0JKRUNUX0xV
VF9IRUFERVJTID0gXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEdlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5o
IFwKICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9y
UHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmlu
ZGV4IDNlN2Y5OTRlMzA3YzQ2ZDAzYjc0Yjk3OWY1MWJlNjU2ZTU5YWMwNDMuLmNhZmUxZjI3MzQ4
Y2ViZWExOTRlNmM3NTgxZjBmM2EzZTM1NTRkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagpAQCAtNzU2LDYgKzc1NiwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk1LDYgKzc5OSw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGVNYXRoLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVj
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ1LDYgKzk1MCw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZUNvbnN0
cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiIC8+CkBAIC0xNTE1LDYgKzE1MjEsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
YXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBAIC0xNjAxLDYgKzE2MDgs
MTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1
bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0
LmgiIC8+CkBAIC0xNjYwLDYgKzE2NzIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGE2ZDNmZjAwZTI1MDNhY2JjMzY3OTBhMzZl
NmVlNDM3YTkzNGJmYTguLjFiOTc4ZWU0ODFjMTg0ODdhODI1MzVkZjc3OTg1MDE1ODI3YTFjZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTY2Niw2ICs2NjYsMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25SYXJlRGF0YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZyYW1lLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0
dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTc0Nyw2ICs3NTksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xv
YmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTI2MTIsNiArMjYyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
Q29kZUtleS5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+
CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgx
Myw2ICsyODMxLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUmFyZURhdGEuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJh
bWUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90
b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0UHV0SW5mby5oIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjkxOCw2ICsyOTUx
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zMjgyLDYgKzMzMTgsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9y
UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIj4KKyAgICAgIDxGaWx0ZXI+RGVy
aXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWQ3NDkxNmNjY2MyNmVkM2Q4NjRkYmQ1MGYw
ZDkxNjMzOTMwYWUxMy4uNjM1YjczMGZlN2YxM2EwZTA4ODI2OGM4ODgyYzJlNDQ4NDFmOWZkNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDMsNiArMTIwMywxOSBAQAogCQk3
MDlGQjg2QjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NTFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwOUZCODZDMUFFMzM1QzYw
MDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAx
MzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
OEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNw
cCAqLzsgfTsKKwkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTcwQjc5MTk1MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OworCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJ
CTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThBMUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlC
MUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJD
NzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlB
MDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBM
TEludEFzc2VtYmx5LmggKi87IH07CkBAIC0xOTYyLDggKzE5NzUsOCBAQAogCQlGRTBENEEwOTFB
QkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0
MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9Owog
CQlGRTEyMjAyNzFCRTdGNThDMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNjFCRTdGNTY0MDAz
OUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi87IH07CiAJCUZFMTIyMDI4MUJFN0Y1OTEwMDM5
RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVy
YXRvci5jcHAgKi87IH07Ci0JCUZFMTg3QTAxMUJGQkU1NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNB
IC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUZFMTg3QTAxMUJGQkU1
NUUwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11
bEdlbmVyYXRvci5jcHAgKi87IH07CisJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRN
dWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMTg3QTAwMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsK
IAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNB
IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZE
MTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LzsgfTsKQEAgLTMyNjcsNiArMzI4MCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Vu
ZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZW5lcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBC
NzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXNNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclRoaXNNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFD
MDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVy
YXRvci5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBHZW5lcmF0b3IucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
REMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3NlbWJs
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2VtYmx5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDc3LDYgKzUxMDQsNyBAQAogCQkJCTk5NkI3
MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQkNE
MjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJOTk2
QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCTcw
Qjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICovLAogCQkJ
CUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAog
CQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMDUsNiArNTIzMyw3IEBACiAJCQkJODY5RUJDQjYwRThD
NkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3MzA2QzhCMDA3
REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFGQTAwQTJCMkEx
IC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291
cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQ
cm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVBy
b3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUuY3BwICovLApAQCAtNTMzNCw2ICs1MzYzLDE1IEBACiAJCQkJRjY5MkE4NUQwMjU1
NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURG
MTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFE
RjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBCNzkxODMxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3OTE4NDFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4NTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNzBC
NzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAq
LywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAxMTFBQTkwOTExMDBEMzNCMzMg
LyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAv
KiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBGRTA1MDEzMUFBOTA5MTEwMEQz
M0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDMzLDYgKzU0NzEsOCBAQAogCQkJCUY2
OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1
RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCTcwQjc5MThDMUMwMjQ0
NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk3MEI3OTE4RDFD
MDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkMz
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAogCQkJCTBG
MkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02NTQxLDYgKzY1ODEsNyBAQAog
CQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLywKIAkJCQk0
MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi8sCiAJCQkJQTdBOTc5
QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uLnByb3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3
OTE4RjFDMDI0NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9yLnByb3RvdHlwZS5qcyAqLywKIAkJCQk3
Q0Y5QkM1QTFCNjVEOUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0LmpzICovLAogCQkJCUUzNUUw
MzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMg
Ki8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLmpzICovLApAQCAtNjk1Miw2ICs2OTkzLDcgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJF
MDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNF
QTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjky
MUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmln
aW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdO
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDAxLDYgKzcwNDMsNyBAQAogCQkJCTBGNTBB
RjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEy
N0Y4IC8qIERGR1RocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk5MUMwMjRB
MjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzIyMSw2
ICs3MjY0LDcgQEAKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVu
dGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FF
MDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkxMUMw
MjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
LApAQCAtNzI0Nyw2ICs3MjkxLDcgQEAKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyog
SXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3
MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAg
LyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzkw
LDYgKzc0MzUsNyBAQAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1Jl
ZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRC
RUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNv
bnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQyNiw2ICs3
NDcyLDcgQEAKIAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExp
c3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlz
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTk4LDYgKzc2NDUsNyBAQAogCQkJCUE1NUQ5M0E2MTg1
MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4
ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURB
MjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2
MzAsNiArNzY3OCw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1By
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8q
IEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYw
MEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlBMUMwMjRBMjkw
MDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NjQ3LDYgKzg2OTYsNyBAQAogCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdE
NkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUy
IC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENzEx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODY3Myw2ICs4
NzIzLDcgQEAKIAkJCQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDIzODkwMUJFMThDM0MwMDUx
NDczNyAvKiBKSVRTdWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTQx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2
QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtODgxMCw2ICs4ODYxLDcgQEAKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyog
TWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjExMTM1MzlB
NDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTgx
QzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MzQwQTQ4NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0aE9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlz
dGljcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5NTYsNiArOTAwOCw3IEBACiAJCQkJMEZGNDI3
NDUxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4tYXR0LmMgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBT
b3VyY2VzICovLAorCQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0
Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYy
Nzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDE0MkU1NTFCNzk3M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTY0LDYgKzkwMTcsNyBAQAogCQkJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURl
dGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyog
VmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAx
M0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
OEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5
MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEzLi5h
OWU2OWJlYTZlZWFlNTc4YjkyZDk4OWUxZTg5MTkxYTMzNDg5OWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAt
ODIsNyArODIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJs
ZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBz
b3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1O
b2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLAorICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLAogICAgICAgICAmcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewpA
QCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1l
dGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1t
eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRv
clRoaXNNb2RlOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VP
dmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0
cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
ci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9y
LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTY5OTEwNWQxNTkzZGYyMGIxMGRlMThiYmNjMTdj
NmJmZDAwZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBnZW5lcmF0
b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7CisgICAgInVzZSBz
dHJpY3QiOworCisgICAgLy8gR2VuZXJhdG9yU3RhdGUuCisgICAgY29uc3QgQ29tcGxldGVkID0g
LTE7CisgICAgY29uc3QgRXhlY3V0aW5nID0gLTI7CisKKyAgICAvLyBSZXN1bWVNb2RlLgorICAg
IGNvbnN0IE5vcm1hbE1vZGUgPSAwOworICAgIGNvbnN0IFJldHVybk1vZGUgPSAxOworICAgIGNv
bnN0IFRocm93TW9kZSA9IDI7CisKKyAgICBsZXQgc3RhdGUgPSBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlOworICAgIGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYg
KHR5cGVvZiBzdGF0ZSAhPT0gJ251bWJlcicpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CisKKyAgICBpZiAoc3RhdGUgPT09IEV4
ZWN1dGluZykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVj
dXRpbmciKTsKKworICAgIGlmIChzdGF0ZSA9PT0gQ29tcGxldGVkKSB7CisgICAgICAgIGlmIChy
ZXN1bWVNb2RlID09PSBUaHJvd01vZGUpCisgICAgICAgICAgICB0aHJvdyBzZW50VmFsdWU7CisK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIGlmIChyZXN1bWVNb2RlID09PSBSZXR1cm5N
b2RlKQorICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHZhbHVlID0gc2VudFZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOworICAgICAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwor
ICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykg
eworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7
CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
Y2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0g
Q29tcGxldGVkOworICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2
YWx1ZSwgLyogTm9ybWFsTW9kZSAqLyAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMs
IHZhbHVlLCAvKiBSZXR1cm5Nb2RlICovIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRp
b24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUo
dGhpcywgZXhjZXB0aW9uLCAvKiBUaHJvd01vZGUgKi8gMik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDU0
ZGZkMTY4Y2E2MDBlYmVmMTM1ODA0MzJjNzdlMjVhZDQ0NGFkMGMuLjU5NjA2NGM0MDY4MjQ5Nzgw
ODljNDY0M2YxYzNkZmJkMDUzNGI5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0
YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNo
X2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfY2hlY2tfaGFz
X2luc3RhbmNlOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDI5OTBmYWUzNTQ4OTc5ZmVjN2Nh
MTg2NjkwOTFiYjA1ZTJhYzYyZTguLmI0OWI0ZjJiYmVhZTkwYzVkNjRmYzI5MTgyYTJjMTk5ZGFh
ZmUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTkwLDYgKzkwLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3N3
aXRjaF9zdHJpbmciLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9u
ZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEy
OSw3ICsxMzEsOSBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5n
IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93
ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
b3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5
X3Jlc3QiLCAibGVuZ3RoIjogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIs
ICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxl
bmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAppbmRleCBjNzdhYmVhYTI5MjA5ZTMyOTkxM2NkOTRjZmFkNzUxNTE5YmQ5OWYxLi43MjI4YjAz
MzM2NmM3YTY3YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVu
Y3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVm
KQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiBy
ZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAg
ICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vz
c2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTkg
KzExNiwxOSBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIC8vIGZpcnN0IGFkZCBpdCB0
byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVm
KS4KICAgICAKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2Rl
QmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29k
ZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24q
LCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0
ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhj
b2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIo
b3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgLy8gSWYg
d2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJs
ZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVk
IGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFu
ZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkpIHsKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAg
IGNvZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5z
aWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJn
ZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAK
LSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ss
IGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAg
cmVzdWx0LnNldChvdXQpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgp
CiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMg
PSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQg
bnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkr
KykgewogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFti
eXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtp
bGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jh
c2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVk
IGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5
OGYzODQ5MWNiZjg4NmU1ZDY2Njg0NS4uOGI5ODRkOGNiNmYzY2RmNzdhYWJiNzAzZGYwMTg1ZmFj
YmUzNTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwpAQCAtNzAsOCArNzAsMTAgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2Fz
ZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6IAotICAgIGNhc2Ugb3BfY29weV9yZXN0OiB7Cisg
ICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CisgICAgY2FzZSBvcF9zYXZl
OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjQsNiArMTI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Cisg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU1LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ug
b3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czog
ewpAQCAtMjQwLDcgKzI0NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwpAQCAtMjU1LDYgKzI1OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAg
ICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2Fz
ZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3Bf
YXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiAr
MzIwLDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6
CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxs
X3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICszOTcs
MTUgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y29kZUJsb2NrLT5tX251bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZz
ZXQoKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkg
PT0gMSk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJp
dChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZz
ZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRlZjk5ZWUu
LjFiMWRiMWIyYzQwYjBmNGNkMThmZWMyMjNjYWM3OWNlMDBmMmM1YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODUsNyArNTg1LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAi
OiAlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlczsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxs
ZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSksCi0gICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVt
VmFycyk7CisgICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVMb2NhbHMsIG1fbnVt
VmFycyk7CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlKQogICAgICAgICBvdXQucHJpbnRmKCI7IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVk
IiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7
CkBAIC02ODAsNiArNjgwLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAorICAgIGlmIChtX3JhcmVEYXRhICYmICFt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgeworICAgICAg
ICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOworICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiICAlMWQgPSAiLCBpKTsKKyAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7CisgICAgICAgICAgICAr
K2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkLnNpemUoKSk7CisgICAgfQorCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAt
MTI5NCw2ICsxMzA2LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19n
ZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1
bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzMxLDE0IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRh
dGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBw
cmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBo
YXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTQ5OSw2ICsxNTI3LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwg
aGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAldSwgJWQo
LT4lZCkiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50IGdlbmVy
YXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAldSIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEo
KSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTY2Myw3ICsxNzA2LDcgQEAgY2xhc3MgUHV0VG9TY29wZUZpcmVEZXRhaWwgOiBw
dWJsaWMgRmlyZURldGFpbCB7CiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X2dsb2JhbE9iamVjdChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcChvdGhlci5t
X2hlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhlci5tX251bUNhbGxlZVJlZ2lz
dGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1fbnVtQ2FsbGVlTG9jYWxzKQog
ICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3Rvcihv
dGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVl
KQpAQCAtMTcyMCw2ICsxNzYzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3Jh
cmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRC
dWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5t
X3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9
IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAg
IAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTE3MzAsNyArMTc3NCw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9j
a1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgdGhpcywgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlz
Q29uc3RydWN0b3IoKSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0x
OTAwLDYgKzE5NDQsOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVw
IHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNl
dDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1l
bnRzOwogCisgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMu
CisgICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKwogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7
ICkgewpAQCAtMjE4OCw2ICsyMjM1LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsK
KyAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAx
KTsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XSA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjE5OSw2
ICsyMjU0LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9u
cyA9IFdURjo6bW92ZShpbnN0cnVjdGlvbnMpOwogCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBs
aXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBz
aG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGUpIHsKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CisgICAg
ICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQp
OworICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dHMpIHsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxs
ZWVMb2NhbHNJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIC8v
IFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlz
IGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9u
IGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQog
ICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29z
dCBvZiB0aWVyLXVwKS4KQEAgLTIyMjIsNyArMjI5MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QtPnZtKCksIHRoaXMsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9n
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisg
ICAgLCBtX251bUNhbGxlZUxvY2FscygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX2lz
Q29uc3RydWN0b3IoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZChmYWxzZSkK
QEAgLTMwNDksNiArMzExOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtN
b2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0Zp
dCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVz
ZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxl
cy4KIH0KQEAgLTQwMjAsNyArNDA5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiAg
ICAgCiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCgwKTsKICAgICAKLSAgICBpZiAobGl2ZUF0SGVhZC5udW1CaXRz
KCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZVJlZ2lzdGVycykpIHsKKyAgICBp
ZiAobGl2ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxl
ZUxvY2FscykpIHsKICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICBk
YXRhTG9nKCIgICAgV3JvbmcgbnVtYmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxuIik7CiAgICAgICAg
IGRhdGFMb2coIiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOwpAQCAtNDAyOCw3ICs0
MDk4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAgZW5kVmFsaWRhdGlv
bkRpZEZhaWwoKTsKICAgICB9CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9udW1DYWxs
ZWVSZWdpc3RlcnM7IGktLTspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZUxv
Y2FsczsgaS0tOykgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSk7CiAgICAgICAgIAogICAgICAgICBpZiAobGl2ZUF0SGVhZC5nZXQoaSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjMWRm
MTg3YzEyMjBkMmY3ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4MmVjLi4zY2JlNzVjNDk3ODEwMTkzODgw
YzNhNWIxYjk5NTkzMDUwMGFhOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTE0MSw2ICsxNDIsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQog
ICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCisgICAgaW50IG51bUNh
bGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBp
bnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJzOyB9
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9CiAKQEAgLTY1NCw2
ICs2NTcsMTggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5n
SnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChT
dHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFi
bGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAg
IC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKKyAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOworICAgIH0K
KyAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07CisgICAg
fQorCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAg
ICBlbnVtIFNocmlua01vZGUgewpAQCAtODU1LDcgKzg3MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHJlbWFpbmluZyBtZW1i
ZXJzIHByaXZhdGUuCiAKICAgICBpbnQgbV9udW1Mb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVz
OwotICAgIGludCBtX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2Nh
bHM7CiAgICAgaW50IG1fbnVtVmFyczsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAg
ICAgCkBAIC05MDAsNiArOTE1LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAg
ICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwog
CisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
OworCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYy
NTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2Mjcx
Mjg1ZjU5MzhlMmE4MjBmOGJlZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2Nv
cGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2lu
Y2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00
NCwyMyArNDUsMjkgQEAKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29u
c3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291
cmNlLCBzY29wZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxT
b3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
aWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAg
IFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNl
Q29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25l
ciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBT
dHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJs
ZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNv
dXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0
VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAg
IEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9k
ZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
RXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5T
dHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAg
ICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJs
ZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUo
KSA8IG1heENhY2hlRW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFs
U291cmNlLmltcGwoKSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBv
d25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0
cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1h
eENhY2hlRW50cmllcykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0
KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJj
ZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUp
OworICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFy
cmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhl
Y3V0YWJsZTsKICAgICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1
cm4gc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rp
b25OYW1lU2NvcGVPYmplY3QoKSB8fCBzY29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAK
LSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250
ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0
IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyBJZiBldmFsKCkgaXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4
aWNhbCBzY29wZSwgd2UgY2FuJ3Qgc291bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElm
IHRoZSBldmFsKCkgb25seSBoYXMgYWNjZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBj
YW4gY2FjaGUgaXQuCiAgICAgICAgICAgICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAg
ICAgICAgICAgICAmJiBldmFsU291cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxD
YWNoZWFibGVTb3VyY2VMZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxz
aXplX3Q+KGV2YWxTb3VyY2UubGVuZ3RoKCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFi
bGVTb3VyY2VMZW5ndGgoKQogICAgICAgICAgICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUoc2Nv
cGUpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVz
ID0gNjQ7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgV3Jp
dGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPj4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8U291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291
cmNlQ29kZUtleUhhc2gsIFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CiAg
ICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0
NTBmZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1ZC4uMjYwMmJlN2M0ZmJlY2U5ZGVhNTAyMThmZTE0
YjU2NTFmYjQ3YjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmgKQEAgLTI2LDIxICsyNiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxlSW5m
b19oCiAjZGVmaW5lIEV4ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNN
b2RlLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8v
IEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENv
ZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBF
eGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBp
c1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisg
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdl
bmVyYXRvclRoaXNNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlv
bikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RN
b2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3Rv
cikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQorICAg
ICAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRv
clRoaXNNb2RlKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKKyAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKKyAgICAgICAgQVNTRVJUKG1f
Z2VuZXJhdG9yVGhpc01vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNN
b2RlKSk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX25lZWRzQWN0aXZhdGlvbjsgfQpAQCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JU
aGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXNNb2RlPiht
X2dlbmVyYXRvclRoaXNNb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
KyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBA
IC01Nyw4ICs2NiwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1f
aXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJh
dG9yVGhpc01vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAg
ICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJp
bmRpbmcgOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBkNjBmZGY3ZDNjZjM2MGUzZWMxNjk4Nzc5YWJl
NmI5ZWI5MDZkNTE0Li45ODk5MzliMjMzMjE0Y2ZkNDViZTA3YmFlODYwOWZjODRjN2ViMzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcApAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAg
IGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9q
bmdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2Ugb3Bfc3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhm
MmE2OGVlOGZhOGI1NzYuLjg3ZTgyMzNmMWZlM2E4YmVjNDAyMzBkMjk4YjA5ZTZkZmY5YTM4OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQAogVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBl
LCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUp
CiAgICAgLCBtX251bVZhcnMoMCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisgICAg
LCBtX251bUNhbGxlZUxvY2FscygwKQogICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBt
X3ZtKHZtKQogICAgICwgbV9nbG9iYWxPYmplY3RSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkK
QEAgLTY1LDEwICs2NSwxMiBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkK
ICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24o
KSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8u
Z2VuZXJhdG9yVGhpc01vZGUoKSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAg
ICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwgbV9w
YXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1f
Y29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IGZhNTE0YzE1NmE3Y2I3Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmJjYTJjMDRhY2E0Mzgy
OTIxNzU2OTU4YmFhNjhkYjMwZThmMTM1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVk
ZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgi
CiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCkBAIC0xMTYsNyArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
dHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2
YWw7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uOyB9CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBA
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAog
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVy
YXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CisgICAgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmlu
ZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7
CkBAIC0yMzIsNyArMjM2LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIGludCBtX251bVZhcnM7CiAgICAgaW50IG1fbnVtQ2FwdHVyZWRWYXJzOwot
ICAgIGludCBtX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7
CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0zODcsMTIgKzM5MSwxNCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwog
ICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJy
b3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7Cisg
ICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExp
bmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47
CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1f
ZmVhdHVyZXM7CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uM2Y0
OTQ4ODVhZjQ5YzI4ZTI2ZjQ5N2Q2NzVmNjRhMTZjOWI5YWY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4
ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9k
ZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwg
ZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+
cGFyc2VNb2RlKCksIGVycm9yLCBudWxscHRyKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOwogCiAg
ICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAg
LTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShm
dW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwog
ICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0
YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwo
KSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1
bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3Ry
dWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlv
bi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQo
KSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5k
aW5nKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1v
ZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkp
OwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5pc1Zh
bGlkKCkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcykKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01v
ZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDog
QmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwg
bV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4IEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2Rl
KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNB
cnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnZW5lcmF0b3JUaGlzTW9kZSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VSVChtX2Nv
bnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JL
aW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtl
ZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBl
cnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7
CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxv
Y2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVj
aWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNC
dWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBl
cnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1
NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uYzhiYmEwYWMzMmJlNDM3ZmZiNWRmM2UzZjll
MDViMDQ3OGE1MzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNp
bmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01v
ZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHks
IEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJj
ZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7Cisg
ICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VP
dmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBn
ZW5lcmF0b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwogICAgICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAg
IH0KQEAgLTgyLDYgKzgzLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlv
bk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rp
b25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9
CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxp
bmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9u
TmFtZVN0YXJ0OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05NSw3ICs5OCw3IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigK
ICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJvb2wp
OworICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYg
ZXhjZXB0aW9uLCAKQEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmls
aXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9y
S2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7
IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1
bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JU
aGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1
bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2Rl
IDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjkzNzBj
OGQyODRhMzg0ZjIxZTBlNzg5MjY4NTQ1YzkyYjE5ODIzYi4uODc3MDJlYzM5YTMzYjYyOTAwZjhj
Y2NlYmM1OGQ5NmIxZjc2OWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDggKzMyLDEwIEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKQEAgLTIyNyw5ICsyMjksMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2Fw
dHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRo
ZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgp
OwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMo
KSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJv
dmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVk
IGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVu
dHMgPSBmYWxzZTsKKworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJh
dG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVy
YXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJl
Y2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3Jl
IHN0YXJ0aW5nIGl0LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0
aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0
aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsK
KyAgICAgICAgLy8gICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVy
YXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0
b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgewor
ICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNg
IHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAg
ICAgfQorICAgICAgICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3Mp
CiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxl
c0FzQ2FwdHVyZWQoKTsKICAgICAKQEAgLTI1NCwxNCArMjgwLDMzIEBAIFBhcnNlckVycm9yIEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsK
ICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0g
ICAgCisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJl
Zm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3Vl
IHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAg
IG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgICAg
ICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1w
IHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2Ug
dGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAv
LyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUg
cHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlv
biBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNl
IGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAg
ICAgLy8gSW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
KyAgICB9CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBh
cnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29s
IGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51
c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1
bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwo
KSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1
bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1
bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsK
ICAgICB9Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewog
ICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAg
IC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2
ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICsz
MTYsNiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAg
ICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXgpOwogICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBh
Ym91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJz
Ci0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRl
cnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhp
cyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigp
LT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQo
aSkuZmlyc3Q7Ci0gICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBt
X3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4p
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7
Ci0gICAgfQotICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBh
Ym91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9
IGZhbHNlOwogICAgIGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsK
QEAgLTQ3Niw3ICs1MDgsMzYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAg
aWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1v
ZGUpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAg
ICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFs
KCkpCisgICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rl
cik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFk
ZFZhcigpOworCisgICAgICAgIC8vIEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVy
YXRvciB1c2VzIGl0LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTg2CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bf
dG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdp
c3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lz
dGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBm
aWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBlbWl0TG9hZChtX25ld1Rhcmdl
dFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
ZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBl
bWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAg
LTQ5Miw5ICs1NTMsOCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0g
ICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVl
ZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRT
ZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTc5OSw2ICs4NTksMjIgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkK
ICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5p
dGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0
cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNp
emUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rl
ci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlm
IChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0
aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04MjYsMTcgKzkwMiwxNyBAQCBVbmlxdWVkU3RyaW5nSW1w
bCogQnl0ZWNvZGVHZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJp
bmdQYXR0ZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3UmVnaXN0ZXIoKQog
ewotICAgIG1fY2FsbGVlUmVnaXN0ZXJzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCht
X2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpKTsKLSAgICBpbnQgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
bWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkpOwotICAgIG51bUNhbGxlZVJlZ2lzdGVycyA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVSZWdpc3RlcnMpOwot
ICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IG51bUNhbGxlZVJlZ2lzdGVy
czsKLSAgICByZXR1cm4gJm1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKTsKKyAgICBtX2NhbGxlZUxv
Y2Fscy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgp
KSk7CisgICAgaW50IG51bUNhbGxlZUxvY2FscyA9IG1heDxpbnQ+KG1fY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscywgbV9jYWxsZWVMb2NhbHMuc2l6ZSgpKTsKKyAgICBudW1DYWxsZWVMb2Nh
bHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
bnVtQ2FsbGVlTG9jYWxzKTsKKyAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgPSBu
dW1DYWxsZWVMb2NhbHM7CisgICAgcmV0dXJuICZtX2NhbGxlZUxvY2Fscy5sYXN0KCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKCkKIHsKLSAgICB3
aGlsZSAobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpICYmICFtX2NhbGxlZVJlZ2lzdGVycy5sYXN0
KCkucmVmQ291bnQoKSkKLSAgICAgICAgbV9jYWxsZWVSZWdpc3RlcnMucmVtb3ZlTGFzdCgpOwor
ICAgIHdoaWxlIChtX2NhbGxlZUxvY2Fscy5zaXplKCkgJiYgIW1fY2FsbGVlTG9jYWxzLmxhc3Qo
KS5yZWZDb3VudCgpKQorICAgICAgICBtX2NhbGxlZUxvY2Fscy5yZW1vdmVMYXN0KCk7CiB9CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdCbG9ja1Njb3BlVmFyaWFibGUoKQpA
QCAtMTkxNSw3ICsxOTkxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFi
bGUoCiAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRT
Y29wZU9mZnNldChsb2NrZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhcktpbmQg
PT0gVmFyS2luZDo6U3RhY2spOwotICAgICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKSk7CisgICAgICAgIHZh
ck9mZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fs
cy5zaXplKCkpKTsKICAgICB9CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZz
ZXQsIDApOwogICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCksIG5l
d0VudHJ5KTsKQEAgLTIzMTIsMTIgKzIzODgsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3Qp
CiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJl
Z2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5p
bmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2Ny
ZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmlu
ZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgo
KSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAg
LTI0NzEsMjAgKzI1NDcsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBk
c3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24o
UmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAg
cmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0
aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVu
c2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChp
bmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAg
ICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU1NSwyNSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3Qs
IFJlZ0V4cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhw
ck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5j
RXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNf
ZXhwIHx8IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1
bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAg
ICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDog
eworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bj
b2RlSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjUx
MiwxNyArMjU4NiwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25D
b21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0
LCBmdW5jLCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25D
b21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQq
IGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFk
YXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUp
OwogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0
b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAg
aWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdl
bmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQogICAgICAgICBl
bWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAgIGVtaXROZXdGdW5jdGlvbkNv
bW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0
aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAg
LTI1NDAsNiArMjYxNSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cgogICAgIHJldHVybiBk
c3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24o
UmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAg
dW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlv
bihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3
X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1
bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBj
YWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAg
ICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NjYsNiAr
Mzg1NCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVl
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0
ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4
dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFy
Z3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRz
dCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0
eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRl
cmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAg
ICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRz
dDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewog
ICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODQyLDQgKzM5NDgsMjE4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdFBhcmFtZXRlcihSZWdp
c3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQp
Cit7CisgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKKyAgICBzaXpl
X3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOworICAg
IGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOworICAgIC8vIEZpcnN0
IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCisgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKyAgICBlbWl0U2F2
ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGVtaXRSZXR1
cm4oYXJndW1lbnQpOworICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFi
ZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBz
aXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgZW1pdE9wY29kZShvcF9z
YXZlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3Ry
dWN0aW9ucygpLnNpemUoKSkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCit7
CisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3Vt
ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
ICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0WWllbGRQ
b2ludChhcmd1bWVudCk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFi
ZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7
CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJh
dG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9y
bWFsTGFiZWwuZ2V0KCkpOworCisgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFi
ZWwoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCks
IHRocm93TGFiZWwuZ2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsK
KyAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJuUmVn
aXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwor
ICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICB9
CisgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAg
IC8vIFRocm93LgorICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhy
b3coZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgIC8vIE5vcm1hbC4KKyAgICBlbWl0
TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3JWYWx1ZVJlZ2lz
dGVyKCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUp
Cit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByZXZpb3VzID0gbmV3VGVtcG9yYXJ5KCk7Cisg
ICAgZW1pdExvYWQocHJldmlvdXMuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAgIHsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgICAgICB7
CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIpOworICAgICAg
ICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnQpOworICAgICAgICAg
ICAgZW1pdENhbGwoaXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGFyZ3MsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2
b3RFbmQoKSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BEb25lID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBuZXh0RWxl
bWVudCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1Vu
ZGVmaW5lZCgpKTsKKworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1lbnQuZ2V0KCkpOwor
CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRMb29w
SGludCgpOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQo
dmFsdWUuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRp
dGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9w
X3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdl
dCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1
bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdMYWJlbCgpOworICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmV0
dXJuLgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktl
eXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5k
ZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1cm5Gcm9tR2Vu
ZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBy
ZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCByZXR1cm5N
ZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0
ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5S
ZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVy
KCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVy
bkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21H
ZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2
YWx1ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRv
ci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3Rl
cigpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVy
YXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgICAgICAgICBlbWl0TGFi
ZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJv
d0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRl
ZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RG
b3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0Fy
Z3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRo
cm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhv
ZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3Qo
KSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5J
dGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICBl
bWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRv
ciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwo
bm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdl
dCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9y
LmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJ
ZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJ
ZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOworICAgIH0KKyAgICBy
ZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCog
Y29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUp
OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgp
Cit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0TGFiZWwobGFiZWwu
Z2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdp
c3RlcklEKiBzdGF0ZSkKK3sKKyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dp
dGNoSW1tZWRpYXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9y
KExhYmVsKiBkZWZhdWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9z
d2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92
ZUxhc3QoKTsKKworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0
cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwt
PmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCArIDMpOworCisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29k
ZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3Mg
PSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAg
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5z
aXplKCkgKyAxKTsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZv
ciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsr
aSkgeworICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFi
ZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hv
dWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQo
aSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNo
QWRkcmVzcyArIDMpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDM4YjY1OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYuLmRmZDAxMWI5
NDMyZWNjZjFkZDNjZDMwYTdlNWFlNTUzZTg2NjY3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIK
QEAgLTI4MCw2ICsyODEsOCBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5j
b25zdHJ1Y3RvcktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JU
aGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgp
OyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5l
cmF0ZSgpOwogCkBAIC0yOTcsNiArMzAwLDggQEAKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29w
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9
CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lz
dGVyLiBSZWdpc3RlcnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVp
cmUgYSBtb2RpZmllZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8v
IHJlZ2lzdGVyIHdpdGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIs
IG1lYW5pbmcgdGhhdApAQCAtNDk5LDEwICs1MDQsOCBAQAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2lnbmVkIGxlbmd0
aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3Qs
IHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhw
cmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25z
dHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2b2lkIGVtaXRO
ZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlE
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJl
Z2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5Niw2ICs1OTksNyBA
QAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0
V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAg
IHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
dFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1Nr
aXApOwpAQCAtNjQ0LDEyICs2NDgsMjggQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdp
c3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNo
KHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwg
TGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAg
ICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVtaXRT
YXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
ICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJl
bCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1l
bnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0
b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVs
dExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KKyAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsg
cmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVt
aXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0
aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjg3LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UG9w
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNj
b3BlKTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKKyAg
ICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBC
YXNlRnVuY0V4cHJOb2RlKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgcHVzaExleGlj
YWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIGJvb2wgY2FuT3B0aW1pemVURFpDaGVj
a3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0gbnVsbHB0cik7CkBA
IC03MzAsNyArNzUxLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCYgcmVnaXN0ZXJGb3IoVmlydHVh
bFJlZ2lzdGVyIHJlZykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXJzW3JlZy50b0xvY2FsKCld
OworICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZUxvY2Fsc1tyZWcudG9Mb2NhbCgpXTsK
IAogICAgICAgICAgICAgaWYgKHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXI7CkBAIC03NTIsMTIgKzc3MywyMiBA
QAogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAg
ICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRp
b24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAg
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwog
ICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0
QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRh
ZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAg
ICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgY29uc3Ry
dWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYg
bWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9
PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5
ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5l
cmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JU
aGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJu
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNv
dXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFi
bGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWls
dGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFoo
VmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5Niw3IEBACiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJl
Z2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBS
ZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoT3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1Jl
Z2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lz
dGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1Jl
Z2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCisgICAgICAg
IHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJik7CiAgICAgICAg
IHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVl
c0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1ldGVycyYsIEZ1bmN0aW9u
Tm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMpOwogCkBA
IC04MDQsNiArODM2LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBu
dWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxs
cHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
eyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBu
dWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0
ciB9OwpAQCAtODExLDcgKzg0NCw3IEBACiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lz
dGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3Rl
cnM7Ci0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdp
c3RlcnM7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVM
b2NhbHM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9wYXJhbWV0
ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TGFiZWwsIDMyPiBtX2xhYmVsczsKICAgICAg
ICAgTGFiZWxTY29wZVN0b3JlIG1fbGFiZWxTY29wZXM7CkBAIC04MjcsNiArODYwLDcgQEAKICAg
ICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7
CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKKyAgICAgICAg
VmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwogICAgICAgICBl
bnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFi
bGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxG
dW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNU
b0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYwOGJkMzc0N2RlZGE3ODY4ZTViYmQw
ZjUyLi4xY2RlNjVkMTQ4YThlYzJiNDI5YjExOTcxN2NmODhiMmFhM2JiMmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgog
I2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWdpc3RlcklEKiBS
ZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAobV9zaG91
bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hl
Y2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVy
aXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9k
ZTo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
QEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAm
Y2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAK
LXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBSZWdpc3RlcklEIGNhbGxl
ZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworfQogCi0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFz
ZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9y
KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1ODksNyBAQCB2b2lkIFJldHVybk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0
ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3Zh
bHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVC
eXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVy
blJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Miw5NiBAQCB2b2lkIEZ1bmN0
aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFy
dE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFt
ZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQo
KSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhp
cy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7Cisg
ICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNp
bmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQo
c2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1l
bnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihz
aW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0
ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwor
ICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2Rl
Kj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBm
dW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVP
YmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAg
ZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgp
KTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0
aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYg
KHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAg
ICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2Nr
Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxh
c3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUo
KSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFz
dFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
d2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVs
ZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0
IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNv
ZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2Ug
cHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVy
YXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5v
ZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBn
ZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0
YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVy
bk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9m
aWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBl
eHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1
c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNz
aW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mg
c291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJh
dG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJp
Y3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01v
ZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5n
ZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdl
dCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9u
ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAg
ICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMt
PnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsK
KworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2Yg
YSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmds
ZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAg
U3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05v
ZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAo
bGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2Rl
Kj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAg
ICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJh
dG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRv
ci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVu
dCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1
c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VS
VChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwODksMjQgQEAgUmVnaXN0ZXJJRCog
QXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBG
SVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3Jz
LCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVy
cm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxl
Z2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAg
ICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJn
dW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChk
c3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAyNGRiZDdiZTJkODc4Njg1Y2UxNTBlNDcxZTM1YjJhODcyNmU2NzIwLi5k
YTk0MDM4ZDZiOTJiZDhjNWQ1NGQ5ZDVmNmRjYWIwN2FkNDg1ZTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TmFOKGdyYXBo
LmZyZWV6ZShqc051bWJlcihQTmFOKSkpCiAgICAgICAgICwgbV9jb25zdGFudE9uZShncmFwaC5m
cmVlemUoanNOdW1iZXIoMSkpKQogICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG1fY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpCi0gICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5t
X251bUNhbGxlZUxvY2FscykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAg
ICwgbV9udW1QYXNzZWRWYXJBcmdzKDApCiAgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQpA
QCAtMTQxMyw3ICsxNDEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAKICAgICBl
bnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFy
dCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIAog
ICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3Np
dGlvbnMuc2l6ZSgpOwogCkBAIC0yOTI3LDcgKzI5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKAogICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZz
ZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5v
ZmZzZXQoKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251
bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOwogICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJl
ck9mUGFyYW1ldGVyczsKICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOwogICAgIApAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVy
IG9mZnNldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAg
ICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzIC0gMSkub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAppbmRleCA1MWFjNTVkNGNhNWY5ZWQ0OThhYjg4
OTdjOTZlZDI1OTMzM2Q2Mjg3Li5mNWY0Y2I1MjM4MGVkYmIzYzlmODk3MTAzMjExMGEwODhjZmQx
MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVCZWZvcmUgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYmVmb3JlLmJ5
dGVjb2RlSW5kZXgpOwogICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQWZ0ZXIgPSBm
dWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYWZ0ZXIuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIAot
ICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
cmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0aXZlTG9j
YWwtLTspIHsKICAgICAgICAgICAgIGlmIChsaXZlQmVmb3JlLmdldChyZWxhdGl2ZUxvY2FsKSAm
JiAhbGl2ZUFmdGVyLmdldChyZWxhdGl2ZUxvY2FsKSkKICAgICAgICAgICAgICAgICBmdW5jdG9y
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHJlbGF0aXZlTG9jYWwpICsgc3RhY2tPZmZzZXQpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNDI4ODcwYjFj
MmEyNTg3MTVjZDcxNTNiOGU3OTliZWFlOTJjNGU1Zi4uMTkxMWNmZWVkNjQxOTAzOTZjOGFlNjVm
M2E3ZWM0OTc4YTc2NmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAt
NzM4LDcgKzczOCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
aW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBmdWxs
TGl2ZW5lc3MgPSBsaXZlbmVzc0Zvcihjb2RlQmxvY2spOwogICAgICAgICAgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoY29kZU9yaWdp
blB0ci0+Ynl0ZWNvZGVJbmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZl
TG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzOyByZWxhdGl2ZUxvY2FsLS07KSB7CiAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHJlZyA9IHN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwocmVsYXRpdmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgcmVwb3J0IGlmIG91ciBjYWxsZWUgYWxyZWFkeSByZXBvcnRlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5jcHAKaW5kZXggZTZjNDIzNWVjNGNhNjgxN2NkMzdlNjk5ODM0Nzg2MDg5ZjJiNmVmYS4u
NWU1YTE1MDRjMjRkMDY0MDRmNzg2YjE3MjJlMmY2MTUwZjhmYWI2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5jcHAKQEAgLTkzLDggKzkzLDggQEAgY2xhc3MgT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAvLyBXZSdkIHJlYWxseSBsaWtlIHRvIHVzZSBh
biB1bnNldCBvcmlnaW4sIGJ1dCBUaHJlYWRlZENQUyB3b24ndCBhbGxvdyB0aGF0LgogICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdp
bigwKSwgZmFsc2UpOwogICAgICAgICAKLSAgICAgICAgVmVjdG9yPE5vZGUqPiBsb2NhbHMoYmFz
ZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKLSAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAw
OyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkgeworICAg
ICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOwor
ICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVl
TG9jYWxzOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQgPSB0YXJn
ZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAoIXByZXZp
b3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBj
bGFzcyBPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAot
ICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzOyArK2xvY2FsKSB7CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwg
PCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAgICAgICAgICAgIE5v
ZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsK
ICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0
cmVhbS5jcHAKaW5kZXggYmU4ZTJhNzkxNDlmNWEyZTMxNDRhZDQ2NGEzNWM2NTRmYzU5OWUwYy4u
NjM5MmYxNGE5ODA0Y2ZiNjkyZTg0YmMzOTAxMjBkMGJhYjdkYmRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCkBAIC0x
MjMsOSArMTIzLDkgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAg
ICAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXM7CiAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKQotICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcklu
bGluZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzICsgVmlydHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCkudG9Mb2NhbCgpICsgMTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVD
b2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5t
X251bUNhbGxlZUxvY2FscyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSArIDE7CiAgICAgZWxzZQotICAgICAgICBudW1W
YXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAg
ICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsK
ICAgICAKICAgICAvLyBDcmF6eSBzcGVjaWFsIGNhc2U6IGlmIHdlJ3JlIGF0IGluZGV4ID09IDAg
dGhlbiB0aGlzIG11c3QgYmUgYW4gYXJndW1lbnQgY2hlY2sKICAgICAvLyBmYWlsdXJlLCBpbiB3
aGljaCBjYXNlIGFsbCB2YXJpYWJsZXMgYXJlIGFscmVhZHkgc2V0IHVwLiBUaGUgcmVjb3Zlcmll
cyBzaG91bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50
cnlKSVRDb2RlLmNwcAppbmRleCAyOWYwNWU1MWQ0NjFmZGY2ZTAxNDM4MzE5OWM5MThmNjQxNWU4
Y2VhLi4zMDgwZGMzNDUwOWM3MzMzMjRiODE0M2QyYTk1NGYwOGVkYWYxM2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCkBA
IC00NSw5ICs0NSw5IEBAIEZvck9TUkVudHJ5SklUQ29kZSogRm9yT1NSRW50cnlKSVRDb2RlOjpm
dGxGb3JPU1JFbnRyeSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgRm9yT1NSRW50cnlK
SVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25lZCBudW1DYWxsZWVS
ZWdpc3RlcnMpCit2b2lkIEZvck9TUkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVy
KFZNJiB2bSwgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKQogewotICAgIG1fZW50cnlCdWZmZXIg
PSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKTsKKyAgICBtX2VudHJ5QnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNp
emUobnVtQ2FsbGVlTG9jYWxzICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEZvck9TUkVudHJ5SklUQ29kZS5oCmluZGV4IDQ0YWY4Zjk1NzkxYWFhNzhlNmU4MWRmYTY0OWM4
NmExNWVhMzQ0ODEuLjlhZTk3M2Y0MGQxMmMxNmI4MDljMGM4Y2ExZTM2ZWJhYThlZTM2OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUu
aApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBGb3JPU1JFbnRyeUpJVENvZGUgOiBwdWJsaWMgRlRM
OjpKSVRDb2RlIHsKICAgICBGb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICB+Rm9yT1NSRW50cnlK
SVRDb2RlKCk7CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNp
Z25lZCBudW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVy
KFZNJiwgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBlbnRy
eUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlCdWZmZXI7IH0KICAgICAKICAgICB2b2lk
IHNldEJ5dGVjb2RlSW5kZXgodW5zaWduZWQgdmFsdWUpIHsgbV9ieXRlY29kZUluZGV4ID0gdmFs
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXggYWM3
MTcxNGY5M2Y1NWFmMjYxOGM3ZTQyMGE3MWI2NmRlMjExNzY2Ni4uNjAxYjQ2MDk0MDY0YWM2MTNh
OThmYTljMjI5Mzg2ZmE2ZWFkZjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFbnRyeS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAg
IH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0g
YmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSog
c2NyYXRjaCA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAgICAgIGVudHJ5Q29k
ZS0+ZW50cnlCdWZmZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAKaW5kZXggMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBl
Yi4uNTVkODI5YTJhNjZiNjI2MDkxNTg0YTczZTExZGJhMDNjMjU2ZWEyOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICAgICB9CiAgICAg
Y2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICAgICAgICAgUmVmUHRyPEZvck9TUkVudHJ5SklU
Q29kZT4gY29kZSA9IGFkb3B0UmVmKG5ldyBGb3JPU1JFbnRyeUpJVENvZGUoKSk7Ci0gICAgICAg
IGNvZGUtPmluaXRpYWxpemVFbnRyeUJ1ZmZlcihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVk
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVu
dHJ5QnVmZmVyKGdyYXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpOwogICAgICAgICBjb2RlLT5zZXRCeXRlY29kZUluZGV4KGdyYXBoLm1fcGxhbi5vc3JF
bnRyeUJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBqaXRDb2RlID0gY29kZTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkNWIxNDky
YWU3ZjUzZGU2Y2E2NTUxOWM1NzJlYjYxZWViMzllMzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2Zm
ZmIyODQ3MzNiZDk2MTU0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgKQEAgLTE1NSw2ICsxNTUsNyBAQAogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQo
Y29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAg
ICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29u
c3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBK
U0NlbGwqKTsKICAgICAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2
b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKQEAgLTM4OCw3ICszODksNyBAQAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNB
dG9tKGNvbnN0IHZvaWQqIHApCiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6Omlz
QXRvbUFsaWduZWQocCkpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21O
dW1iZXIocCk7CkBAIC0zOTksNyArNDAwLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmIChhdG9tTnVtYmVyID49IG1fZW5kQXRvbSkgLy8gRmlsdGVycyBwb2ludGVy
cyBpbnRvIGludmFsaWQgY2VsbHMgb3V0IG9mIHRoZSByYW5nZS4KICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCisgICAgaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICB7CisgICAgICAgIGlm
ICghaXNBdG9tKHApKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
aXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEpTQ2VsbCo+KHApKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM1
NDc1MWNkNzIwZmZmYzExZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMuLjY0ZTc0Y2Y2NTBiMDBkNDg1
YTgzMWNkNTIzNzFlYzQyZGQ0ZGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTUzLDcgKzE1MywxNiBAQCBKU1ZhbHVl
IGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9
IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBjYWxsZXJTY29wZUNo
YWluID0gY2FsbGVyRnJhbWUtPnVuY2hlY2tlZFIoY2FsbGVyQ29kZUJsb2NrLT5zY29wZVJlZ2lz
dGVyKCkub2Zmc2V0KCkpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBl
dmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOwor
ICAgIFVubGlua2VkQ29kZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKworICAgIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAgaWYgKGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
CisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworICAgIGlm
IChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlICYmIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5nZW5lcmF0b3JUaGlz
TW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1vZGUg
PSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
bWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBj
YWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4p
OwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQg
c2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxG
cmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXNDaGVj
ayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVyQ29k
ZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9j
aywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1T
b3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2Nr
LT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUsIGNh
bGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CkBAIC00MTAsNyArNDE4LDcgQEAgdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAgICAgZGF0YUxv
Z0YoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAotICAgIGVuZCA9IGl0IC0gY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycyArIGNvZGVCbG9jay0+bV9udW1WYXJzOworICAgIGVuZCA9
IGl0IC0gY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIGNvZGVCbG9jay0+bV9udW1WYXJz
OwogICAgIGlmIChpdCAhPSBlbmQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSlNWYWx1
ZSB2ID0gKCppdCkuanNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGE2
MWI1N2Q0NjE1ZjlhOTJlOWIzNDM5NmVkMzg4Zjc5NmQ4NDUwZDAuLjg3OWVmYjJiYWI0ZTI0MGM3
YzE5NzViYjQ2ZjlkNDNkNjc2NDJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTIxNCw2ICsyMTQsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb3B5X3Jlc3QpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190
ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERFRklORV9PUChvcF9z
YXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9kaXYpCkBAIC0yNjAsNiArMjYyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAg
REVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhw
KQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKQEAgLTc2Myw5ICs3NjcsOSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAKIHVuc2lnbmVkIEpJVDo6ZnJh
bWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykgPT0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkpOworICAg
IEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSkpOwog
Ci0gICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0
KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbEluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRG
b3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiBpbnQgSklUOjpzdGFj
a1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCBkMjI1ODIzOWQyZWI3MzAzNTFkZGUxMTVlNjhhNzViY2E0NzlkNDJkLi5mY2M4
ZjMwNjY3N2U3NjZjMGQxZmNhNTM3ODc0MjI1ZGEyNTYzOGRhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTQ5Myw2ICs0OTMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfY29weV9yZXN0
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU0MSw2ICs1NDMsOCBA
QAogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19y
ZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQsNyBAQAogICAgICAgICB2b2lkIGVt
aXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9p
ZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3
RnVuY0NvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNv
bW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNs
b3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1
bnNpZ25lZCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApp
bmRleCBkNDk0ODk2NTBlNjg1NDY1OWU1YTYwZGU3OGU2MzNlMWE1MTgzODVhLi42ZWMxNWJiNDRi
MzM0MDVmMGYyY2UyMzcwN2U0MTU0NjgzYWIxYWMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3OCwxNCArOTc4LDI2IEBAIHZvaWQgSklU
OjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
ICNlbmRpZgogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMgPSBtX2NvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKwor
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1
cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdf
ZnVuYykKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIH0KIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rp
b24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAg
CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKQEAg
LTEwMTgsMTEgKzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vsc2UgCiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1Qz
LCByZWdUMik7CiAjZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICB9CiAg
ICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVu
Y0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0
aW9uKTsKQEAgLTE0MDUsNiArMTQzMywxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb3B5X3Jlc3Qo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
fQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDg3M2ExZGRkNjU3
YTI4OTY4YTBlNTFmOTA2MzZkMWRlMmZjZjgxNi4uY2FkOTM0NjljMWJjYmQyYjU3ZGNiNTIwMjNh
YmU5ZjcyM2Y3NDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTk4Nywy
MyArOTg4LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb25UeXBlPgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0
aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxl
KSwgc2NvcGUpKTsKKyAgICBpZiAoaXNJbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9u
RXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlv
blR5cGU6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rp
b25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKK30KKworZXh0ZXJuICJDIiB7CisKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJu
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUpCiB7Ci0gICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rp
b25FeGVjdXRhYmxlOjppbmZvKCkpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhl
Y3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
PEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVy
YXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJl
dHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
c3RhdGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJv
b2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhl
cml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9u
RXhlY3V0YWJsZSk7CkBAIC0xMDE5LDEyICsxMDM5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIHN0YXRp
YyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlCiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29t
bW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKIH0KICAgICAKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1v
bihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKKyAg
ICByZXR1cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5
NjM4ZjE0NWM5ZDU1NzVmMWM5NTJlMjc1ZjU5NGE3NmIzMmE0Yjg4Li4yNTQyNTUwMjI5ZGE0MWUx
YWRkNDZiMGIwMjU4ZThlNDk5NWI5YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaApAQCAtMzAxLDYgKzMwMSw4IEBACiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
OworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJ
bnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpT
Q2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2Rl
ZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggYTZjM2QyN2UyODBhMDQ0NzkyMjg2OWQ3
ODJjZmUyYTU1YWI3ODBjMy4uZjU5MThiNzIxNzBhYzVkZTQ3YzJiZWQzNjM3OTY1MzBlMDE5NTQw
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5j
cHAKQEAgLTEzNCw5ICsxMzQsOSBAQCB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIAogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9j
ayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSkpOwogCi0gICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdp
c3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKKyAgICBy
ZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5S
ZWdpc3RlcnMpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc2NWYxOTc5NTBl
MzIzZjA1NjZlNzJjNzNiNGVlZDYzZTNiMjA4YzUuLjM1MWE0YzhkNDQyZjJkNmM2OGM0YTkyYzMy
ZjE2ZWM2MDJkYTgyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCkBAIC0yMjQsOSArMjI1LDkgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlv
blByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMK
ICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhl
Y3V0YWJsZSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJs
b2NrRm9yKGtpbmQpOwotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZVJlZ2lzdGVycyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCisgICAgZGF0YUxvZ0YoIiVwIC8g
JXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51
bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlTG9jYWxzID0gJXUsIGNhbGxlciA9ICVwLlxuIiwK
ICAgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVjdXRhYmxl
LAotICAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLAorICAgICAgICAgICAgY29k
ZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzLAogICAgICAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CiB9
CiAKQEAgLTQ1OCw3ICs0NTksNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NS
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZAogI2lmIExMSU5U
X1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZ0YoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3
aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOwogICAgIGRhdGFMb2dGKCJDb2RlQmxvY2sgPSAlcC5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKLSAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cisg
ICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFycyA9ICV1Llxu
IiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAt
MTA0MSw2ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVS
TihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUu
b3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNv
ZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigp
IHx8IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51
bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRf
U0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsK
KyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0s
IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZh
bChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkK
ICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9w
ZXJhbmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUy
ZjE1MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAz
MDRhYjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Nv
bnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFiNWIyMGQ5N2Nh
ZjAzMy4uNjEyNjRkOTg4NTc3NTU1MzcxMzVmOWMzNDdjMDBmYmUzZWFmOWU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtNjk3LDcgKzY5Nyw3IEBAIG1hY3JvIHZtRW50cnlSZWNvcmQoZW50cnlGcmFtZVBvaW50ZXIs
IHJlc3VsdFJlZykKIGVuZAogCiBtYWNybyBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9j
ayhjb2RlQmxvY2ssIHNpemUpCi0gICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lz
dGVyc1tjb2RlQmxvY2tdLCBzaXplCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZUxv
Y2Fsc1tjb2RlQmxvY2tdLCBzaXplCiAgICAgbHNoaWZ0cCAzLCBzaXplCiAgICAgYWRkcCBtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc2l6ZQogZW5kCkBAIC0xMjI3LDYgKzEyMjcsMTIg
QEAgX2xsaW50X29wX25ld19mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25l
d19nZW5lcmF0b3JfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgIGRpc3BhdGNoKDQpCisK
KwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1OCw2ICsxNDY0LDExIEBA
IF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisK
IF9sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKQEAgLTE1
NzMsNiArMTU4NCwxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAor
X2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzdW1lOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUp
CisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1l
bnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAppbmRleCBhY2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUyMmI3MGUxZTk2MDliZTAw
Li4yYjg0Y2JhZjM3ZWYwNDYwYmRiOTE2ZDJiYmRhYzAyZTBkMmI0ZDc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzQxLDkgKzM0MSwxMSBAQCBjbGFz
cyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRF
eHByTm9kZShsb2NhdGlvbiwgbnVsbHB0ciwgLyogZGVsZWdhdGUgKi8gZmFsc2UpOwogICAgIH0K
IAotICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSkKKyAgICBZ
aWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
WWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgWWll
bGRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2Nh
dGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAK
ICAgICBDbGFzc0V4cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgVmFyaWFibGVFbnZpcm9ubWVudCYg
Y2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLApAQCAtMzY0LDEy
ICszNjYsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50
IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNl
UGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291
cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAg
ICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0
aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwg
aXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAg
ICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJh
bWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0K
IAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRl
cj4mIGZ1bmN0aW9uSW5mbykKQEAgLTg4Niw2ICs4ODgsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsK
ICAgICB7CiAgICAgICAgIG5vZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7CiAgICAgfQorCisK
KyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9CiAg
ICAgCiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNl
NTAuLjViNmRjNDkzODVkYTc4MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9n
cmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+PiYmIGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3Rh
cnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9j
YXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjIsMTAgKzE2MiwxMSBAQCB2b2lkIFByb2dyYW1O
b2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
JiYgY2xvc2VkVgogICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCiAg
ICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0
KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJv
d0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogeworICAgIEFTU0VS
VChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7
CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IDBhYTMxMWRjMTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2UuLjBiZjAwYjdiZTkz
N2Y3OTc4YTQ1NjM3M2ZhZGUzMWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTE4MTcsNyArMTgxNyw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
LCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAg
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7Cisg
ICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAg
ICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVy
JiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODQyLDggKzE4NDIsOCBAQAogCiAgICAg
ICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zm
c2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmco
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQog
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQog
ICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0
TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNl
dCwgaW50IGxpbmVTdGFydE9mZnNldCkKQEAgLTE4NjksOCArMTg2OSw4IEBACiAgICAgICAgIGlu
dCBtX2xhc3RMaW5lOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAg
ICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDog
MjsKLSAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0x
OTMyLDcgKzE5MzIsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9k
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCi0gICAgY2xhc3Mg
WWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3Mg
WWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFlpZWxkRXhwck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRl
bGVnYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDY4
NzRiMjdlMzkwOTA3YzhlNDE0OTgyNmMzNzllNDJjZjU5Y2U1MmEuLjE2MjVmM2ZiZTBlMWIzMjNm
ZGZjNDRiZTAxODRkMGFlYmJjZjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCAKKyAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgOiBtX3ZtKHZt
KQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogICAgICwgbV9s
YXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCiAgICAg
LCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1
aWx0aW4pCisgICAgLCBtX3N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcpCiAgICAgLCBtX2RlZmF1
bHRDb25zdHJ1Y3RvcktpbmQoZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKICAgICAsIG1fdGhpc1RE
Wk1vZGUodGhpc1REWk1vZGUpCiB7CkBAIC0yNDksNyArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1Jl
cGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxk
ZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4
dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VN
b2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8u
cGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3Myw4ICsyNzcsMTIgQEAK
ICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhw
cmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNN
b2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29u
dGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQor
ICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBi
b29sIHZhbGlkRW5kaW5nOwpAQCAtMzAxLDcgKzMwOSwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAg
IGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJlZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFy
YXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRp
ZmllclNldCB1c2VkVmFyaWFibGVzOworICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRW
YXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgaWYgKHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkpCisgICAgICAgICAgICBjb250ZXh0
LnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpOworICAgIH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0
dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkK
ICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0zMTEsMTAgKzMyNiw5
IEBACiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKICAgICBp
ZiAobW9kaWZpZWRBcmd1bWVudHMpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkQXJndW1l
bnRzRmVhdHVyZTsKKwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9z
ZWRWYXJpYWJsZXM7CiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRp
ZmllclNldCB1c2VkVmFyaWFibGVzOwotICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1
c2VkVmFyaWFibGVzKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdl
ZCBpZiB3ZSB3YW50IHRvIGFsbG93IGJ1aWx0aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9u
cy4KICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsK
ICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQo
bV92bSwgdmFyaWFibGUuZ2V0KCkpOwpAQCAtNDU4LDYgKzQ3Miw0NSBAQAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25T
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1v
ZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxl
bWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFy
dCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0
ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHBh
cmFtZXRlcnNTdGFydDsKKyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGlu
Zm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1l
IG1vZGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291
cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5
bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3Zt
KSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVu
dHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9k
eSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUs
IFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJv
ZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5M
b2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExp
bmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9m
ZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0
byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9u
LCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVu
dChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0
aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBz
dGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGly
ZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVk
IGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQyLDE0IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4s
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFy
YW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5j
dGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAo
IWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNv
dW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYxLDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RN
b2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFy
c2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFy
cm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBl
ckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3Nyw4IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAg
ICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1
bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAg
ICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1NywzNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBh
dXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4
dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2Vu
ZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5k
aW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZh
dGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAg
IGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRl
LCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8g
Z2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24s
IHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsK
KworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBh
dXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbklu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIg
KzE4OTgsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3Vy
Y2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0g
ZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGlu
ZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAg
ICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExv
Y2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVu
ZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RN
b2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBp
c0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3Rv
cktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwg
bW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyArMTkxNSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1v
ZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxp
bmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVu
Y3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYg
KG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAg
IGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAg
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM3LDMzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9s
YXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRT
dGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VG
dW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1
Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwg
bW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAg
ICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rp
b25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9Owor
CisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUp
IHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNo
U2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEg
Z2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0
aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5l
cmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUt
PnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9y
Qm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRl
IG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29w
ZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShl
eHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNh
biBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAg
ICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJm
b3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0
ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhl
IGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0
KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZv
Lm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE5MjksNyArMjAz
MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAg
ICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRp
b24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVu
Y3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsK
QEAgLTIwODAsNyArMjE4Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYg
KGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2Vu
ZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5v
dCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAg
IH0KQEAgLTI3MzEsNyArMjgzMyw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIEV4cHJlc3Np
b25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmllcih0aGlzKTsKIAogI2lmIEVOQUJMRShFUzZfR0VO
RVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlFTEQpKQorICAgIGlmIChtYXRjaChZSUVMRCkgJiYg
IWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRvcigpKSkKICAg
ICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOwogI2VuZGlmCiAKQEAg
LTI4MzYsNiArMjkzOCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9m
dW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fu
bm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlv
biBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJ
RUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAg
IG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDYsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVs
ZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0
ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsK
ICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxl
Z2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0zMDQxLDcgKzMxNDUsNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikK
ICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDog
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0
aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RT
dGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5u
b3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1l
OwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwg
bWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBi
b29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxF
KEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUg
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZh
aWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1l
bnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhw
cmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlv
biwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0
MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9p
c0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxz
ZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNB
cmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3
aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAg
LCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAg
ICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAg
LCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVw
dGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNo
RGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRh
KQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNH
ZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRv
ckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6
CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25C
b3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9v
bCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJv
b2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAg
IHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNj
b3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAg
ICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlm
aWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgp
OwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRT
Y29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5z
KCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikp
CisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwg
OiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5l
c3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNj
b3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNl
IHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAg
IGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhh
c0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91
c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxl
cy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVk
IHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9m
IGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBi
b3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rp
b25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNl
IHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJh
Y2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8
fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBt
X2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAg
IG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMg
ZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwxNCArNTYyLDIyIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAg
ICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRz
ID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVy
YXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigp
CisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3Ig
PSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAg
ICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAg
ICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxl
KCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGlj
YWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9v
bCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsK
ICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3
ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAg
ICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1v
ZGUsIFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1v
ZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1MCw2ICsxMTcxLDcg
QEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwg
U291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJl
ZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVy
JiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVy
YWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3Rp
dmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFz
cyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTkwLDcgKzEyMTIs
NyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5
TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1l
LCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQ
cm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENv
bnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
QUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWls
ZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0
b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9u
Qm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQs
IGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5j
dGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAg
ICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVj
bGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50
JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRy
ZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0
LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFy
RGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29s
JiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyMTUsNiArMTIzNyw3
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZF
Ul9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVx
dWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBl
KTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBp
bnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUs
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFy
c2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2Fj
aGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3Bh
cnNpbmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25z
dHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1f
dGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsK
QEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9k
ZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJv
ciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVs
bHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xhc3MgUGFyc2VyIHsK
IAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAg
ICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBh
cnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7Cisg
ICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2Rl
KTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAq
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmci
KTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1RE
Wk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1v
ZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVj
YmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgx
M2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUg
ewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVy
YXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAg
TWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0
ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9v
bCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJv
Z3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVL
ZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VD
b2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAorI2RlZmluZSBTb3Vy
Y2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAiU291cmNl
Q29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZh
bFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKKworICAgIFNv
dXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5
cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lm
TmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1f
bmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
VHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0K
KworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3Ro
KCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlz
TnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5n
IG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8vIHByb3ZpZGVycyBj
YWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisgICAgU3RyaW5nIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAgICAgICAgJiYgbGVu
Z3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIu
bV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQorICAgICAgICAg
ICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5zaWdu
ZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1Y3QgU291cmNlQ29k
ZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkm
IGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29k
ZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNlQ29kZUtleV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDk1NTM2
YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZkMWQyNTE4NjIzNWUy
ZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2Vy
IHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxk
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZ
aWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
WWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYs
IEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxp
c3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88
U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJv
ZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBp
bnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0
aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQog
ICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAg
LTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0
KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsg
fQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwogcHJpdmF0ZToKICAg
ICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNiMjVlNGM5YjI2
MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi40OTQ1MjBkYmRmNDI4Yzg2NDBkYjVlMjIzZjAw
ZTIxZjJmZWNmZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNo
ZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5
cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9k
ZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFy
c2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRo
aXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpw
YXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29k
ZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5v
ZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwog
ICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlk
KCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2Rl
Q2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0
YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8v
IFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlh
Ymxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBlbXB0eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxl
LT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBu
YW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VD
b2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDQ4YzhjZmVmODQ2
NDlkOGYwOWMyZmIwYjk0ODgxMTFlMTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1MzNiMWZkYTNkYWE4
OTVkMDZjZGM4OTU3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2lu
Y2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJW
YXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01
Niw3MSArNTcsNiBAQAogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwog
Ci1jbGFzcyBTb3VyY2VDb2RlS2V5IHsKLXB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZh
bFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKLQotICAgIFNv
dXJjZUNvZGVLZXkoKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5
cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2Rl
OjpDaGVja0lmTmVlZGVkKQotICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQotICAg
ICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3MoCi0gICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKQotICAgICAgICAgICAgfCAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKQotICAgICAgICAgICAgfCAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpCi0gICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmlt
cGwoKS0+aGFzaCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
aDsgfQotCi0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5s
ZW5ndGgoKTsgfQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNv
ZGUuaXNOdWxsKCk7IH0KLQotICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBz
dHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCi0gICAgLy8gcHJvdmlk
ZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KLSAgICBTdHJp
bmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCi0gICAgICAgICAgICAm
JiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQotICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBv
dGhlci5tX2ZsYWdzCi0gICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCi0gICAg
ICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICB1
bnNpZ25lZCBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1faGFzaDsKLX07Ci0KLXN0cnVjdCBTb3Vy
Y2VDb2RlS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29k
ZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4g
YSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1w
dHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3Vy
Y2VDb2RlS2V5LmlzTnVsbCgpOyB9Ci19OwotCiBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKICAg
ICBTb3VyY2VDb2RlVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIwMTYwODg1NjJiZWU4
ZDc1NTM1NWQ4N2EzYjMzYjEuLmRlMDdmMWM1MWI1NTEyZGNjYWI5YjAyNDhmM2ZkODFiZjFiNGFi
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8o
RXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JG
dW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAg
IG1hY3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTMgQEAKICAgICBtYWNybyhVaW50MzJBcnJh
eSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkg
XAorICAgIG1hY3JvKGdlbmVyYXRvcikgXAorICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCisg
ICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JUaGlzKSBcCisg
ICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggOTBmNjVjMjRkNjMyYjYyMTA4OWRlNWMxYmJkNDk2NGQ0NDk2NDM5MS4uYzY3Y2M3MDIxMTlk
NzM4ODNkZGNlNzFkZjczOWUyZGFiYzZiNzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY0NCw2ICs2NDUsMzggQEAgc3RhdGljIENvbW1vblNs
b3dQYXRoczo6QXJpdHlDaGVja0RhdGEqIHNldHVwQXJpdHlDaGVja0RhdGEoVk0mIHZtLCBpbnQg
c2xvdHNUb0EKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUp
Cit7CisgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4g
VGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFy
YW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50
YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9y
Lm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAg
ICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7CisgICAgZWxzZSB7
CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBp
cyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8g
aXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxz
KCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFBy
b3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsK
KyAgICB9CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNp
Z25lZFZhbHVlOworICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsK
K30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOwor
ICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZy
YW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBC
RUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAppbmRleCAyMjYxODVjNGM3ZWE3Y2M2ZmM3ZjNjYzRmMWYzN2U2MGViNzJmMTdhLi5mMDBk
ODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBA
IGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lk
KiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4
X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9j
bGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAKaW5kZXggYTYzMmM0OGUwMzBiNDFiMzNiMzNkYmExNmEzMWNmNjEzNWI0ZjUwZi4uMDJmMzk1
YzQyYmMxMmVlMDIxODM0YTgyZjgxZjBmYzk3OWJjZGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBjaGVj
a1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dy
YW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiB9CiAKIGJvb2wgY2hlY2tNb2R1bGVTeW50
YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5v
ZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2Rl
OjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBkMzIwZWM3Y2E2MC4u
NDIwNjAwNjcyMjlhYTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBD
b2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAgICAgICBleGVjdXRh
YmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAg
ICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9u
KCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogICAgIHJlY29yZFBh
cnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMo
KSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJl
ZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCkBAIC01NTYsNyArNTU2LDcgQEAgSlNPYmplY3Qq
IFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAocHJvZ3Jh
bU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdh
MTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLjc1YjMwOTFjZjgxYzcyOTZmZTJmYWZl
OWE5Njc2NTM2Mjk5NzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAt
NTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7
IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIg
KzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGlu
RnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0K
LSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVk
TmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgp
OyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBj
YWJiMjIxYzQyOWMuLjVkN2VmMzc2NmFjMGQ2OWIzNTU0NmFmN2U3OTFjZTk0OWJiNDJkNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCkBAIC03OSwyOCArNzksMzAgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01B
IDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHJldHVybiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlKTsKIH0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYg
ZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBv
c2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0
UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewogICAgIC8vIEhvdyB3ZSBz
dHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQot
ICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5z
dHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkg
e1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dy
YW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkg
e1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7Cisg
ICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1
Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDog
IiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9u
ICIpOworICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyon
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKSk7CkBAIC0xMjYsOSArMTI4LDkgQEAgSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogfQogCiAvLyBF
Q01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewot
ICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmco
KSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJm
YzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4uZDExZmIyYTM3NGQ2MTkxNTBjOWQ2YzQyNjI5YmE5
MWNjMTIwNWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYsMTIgKzU2LDE3IEBAIGNsYXNzIEZ1bmN0aW9uQ29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jiwg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKK2VudW0gY2xhc3Mg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIHsKKyAgICBGdW5jdGlvbiwKKyAgICBHZW5lcmF0b3Is
Cit9OworCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsK
K0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEFyZ0xpc3QmLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAg
ICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxp
bmVOdW1iZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRp
b24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19p
bmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJh
bWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCisgICAgOiBCYXNlKHZtLCB2
bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kp
CisgICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUq
IHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAg
ICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZv
ckxvY2FscyhudW1iZXJPZkxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVt
YmVyT2ZMb2NhbHMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkg
c2F2ZSBjYWxsZWUgbG9jYWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2Fs
bGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgQVNT
RVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OworICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNo
ZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKKyAgICB9
KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKK3sKKyAgICAvLyBPbmx5IHJlc3Vt
ZSBjYWxsZWUgbG9jYWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVk
IChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNh
bGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChp
bmRleCkuZ2V0KCk7CisgICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMg
YXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDU0NWIx
NDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDkw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmlu
ZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVu
ZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOwor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0
b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKworICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCisgICAgeworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8
Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuIGxv
Y2FscygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxz
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOworICAgIH0K
KworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVt
YmVyT2ZMb2NhbHMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51
bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0
YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisKK3ByaXZhdGU6
CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisKKyAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0
b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZjU4OTMx
ZmM1NTIwYTVjMjIwMTVlMjVmNzAyYTdkNmUwOTc5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsK
KworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgp
KS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJh
dG9yKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFy
Z0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworfQor
CitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2
Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXAp
KSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMzZmU4ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNO
b25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisg
ICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFmNDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclBy
b3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUg
IkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNl
OjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShH
ZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBl
Lmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVp
bHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRv
ciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90
eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5l
cmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4
ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0
b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlw
ZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsK
KworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRv
clByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAv
LyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMDNlN2IwMjJm
MWM2NjlkMzk3YTliNzdiNWVmMjRlOTVmNTIwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzTW9kZV9oCisjZGVm
aW5lIEdlbmVyYXRvclRoaXNNb2RlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIGh0dHA6Ly9l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0aW9uYWxsb2NhdGUK
Ky8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFz
Y3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlzdC1uZXd0YXJnZXQK
Ky8vIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24sIGl0cyBbW0NvbnN0
cnVjdG9yS2luZF1dIGlzIGFsd2F5cyAiZGVyaXZlZCIuCisvLyBUaGlzIG1lYW5zIHRoYXQgT3Jk
aW5hcnlDYWxsQmluZFRoaXMgaW4gc2VjdGlvbiA5LjIuMiBpcyBuZXZlciBleGVjdXRlZCBmb3Ig
R2VuZXJhdG9yRnVuY3Rpb24uCisvLyBTbywgd2hlbiB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcs
CisvLworLy8gICAgIGZ1bmN0aW9uICpnZW4oKQorLy8gICAgIHsKKy8vICAgICAgICB5aWVsZCB0
aGlzCisvLyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0gZ2VuKCk7Cisv
LyAgICAgICAgIC8vIHx0aGlzfCBzaG91bGQgYmUgZ2xvYmFsLgorLy8gICAgICAgICBnLm5leHQo
KTsKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7
CisvLyAgICAgICAgIC8vIHx0aGlzfCBpbiBnZW4gc2hvdWxkIGJlIFREWiAoYW5kIGl0IHdvbid0
IGJlIGZpbGxlZCkuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyBUaGUg
Zm9sbG93aW5nIGZsYWcgbWFuYWdlcyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVyYXRvckZ1bmN0aW9u
IGlzIGNhbGxlZCBhcyBhIGNvbnN0cnVjdG9yLCBpdCByZXR1cm5zIGEgR2VuZXJhdG9yIHRoYXQg
ZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSBmbGFnLgorLy8gSW4gdGhpcyBj
YXNlLCB3aGVuIGFjY2Vzc2luZyB8dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBlcnJvciBvY2N1cnMu
CitlbnVtIGNsYXNzIEdlbmVyYXRvclRoaXNNb2RlIDogdW5zaWduZWQgeworICAgIEVtcHR5LAor
ICAgIE5vbkVtcHR5Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzTW9kZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVk
ZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2
OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0
aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09i
amVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclBy
b3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVj
dCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250
RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQo
dm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlv
bikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBC
YXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dl
bmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBn
ZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdl
bmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAg
IGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0
b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQor
eworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3
ZGVlN2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5j
dGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVO
QUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNz
IFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBj
bGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUg
PSAwLAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAg
IH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMg
SlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAh
aW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rp
b24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rp
b25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7
CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2Vu
ZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDM3MWU0ZWEwNmUzODY1NWFjNWE3MGJhYWRhZjc0MDJhNzdi
YzBmNTkuLmQ3ZjExNmRjNGZkZGM3ZTFkMDZlMDc5NmI5ZTgxOTJlY2NhOGI1YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUw
LDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUs
NyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0
LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAg
IEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVf
Rk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0
b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9G
T1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTQgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0
ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVy
cm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlz
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1f
Z2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCksIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dl
bmVyYXRvclByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC01NTEs
NiArNTY0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNl
UmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0
cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlz
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKICAgICAKQEAgLTgxOCw2ICs4MzIsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODUwLDYgKzg2Niw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzVi
YmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4
MDc5YmNkZDQzZWI3NjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9j
azsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwor
Y2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJ
bnB1dEN1cnNvcjsKQEAgLTIyOSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQ
cm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3Rv
dHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90
eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJh
cnJpZXI8R2VuZXJhdG9yUHJvdG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRl
cm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUq
IGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCk7IH0KKyAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1
cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2Nv
cGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiAr
NTEzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBzeW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJv
bE9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4
ZDI4YTUwZDk3YTFlMGI3N2I1MDYzYS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZj
MDZjNTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dy
YW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAg
ICAgICAgJnZtLCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkg
ewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3
Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1
bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxl
cihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVk
VHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25S
YXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVy
YXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4u
NTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5
cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsK
KyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
cHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFs
UHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CmluZGV4IGUwYmMzZDUxZmI2YzdhOGYwODliYTRkODdkNGU2NGM2YTk3MGJlNTAuLjExYTRiZjQ2
NGU2NGM3ZmYwN2NlZmU0NzIxNDk2OTRjMzJkMjhiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwKQEAgLTcxOSw3ICs3MTksNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3Vi
Y2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWls
CiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9p
bnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21l
dGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTcy
Nyw3ICs3MjcsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJv
bV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9B
cnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5z
dGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dl
bmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJh
eV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRl
cmFibGVzLmpzCkBAIC03NTMsNyArNzUzLDcgQEAKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdf
bmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1
Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dl
bmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0
cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NjMs
NyArNzYzLDcgQEAKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190
aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193
aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRl
cmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3Bz
X3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC04MDMsNTUgKzgwMyw1
NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rp
b24uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVy
YXRvclByb3RvdHlwZSUuY29uc3RydWN0b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90
eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rp
b25hbGl0eS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NhbnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3No
b3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmlu
ZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVyYXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3NlbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3N0cmluZy1rZXllZF9zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3Bs
YW5lX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9z
aW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19p
c19hX3J1bnRpbWVfZXJyb3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVy
YXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L01hcF9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBfTWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTEwNSw3
ICsxMTA1LDcgQEAKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxf
cGxhbmVfc3RyaW5nc19pbl9mdW5jdGlvbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNf
aW5fYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2Vz
X2luX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4u
X29wZXJhdG9yX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9n
ZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2Nm
YWUxYTViNWE2NmMxM2JkMjNlOGNhZTUyN2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4
ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNf
aXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5k
ZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJh
YmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAo
dHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJl
dHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVu
Z3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhy
b3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtT
eW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4g
aXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5j
dGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
bnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0
ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUyZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJh
Ymxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5l
ZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9i
amVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVv
ZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4g
e307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8
PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93Jzog
bWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9s
Lml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJh
YmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24g
KiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xv
c2luZy5qcwppbmRleCA2ZjY4MmY1YTE2Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4z
MmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlhYzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYg
KHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30K
K2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2Rz
ID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFT
eW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0
ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJy
LnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0
aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRl
cmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1
cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsK
IAogdmFyIGNsb3NlZCA9ICcnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2
YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4xZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQy
OTM4MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2Jh
bCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19j
cmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8
IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRv
cikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7Cisg
IG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9u
ZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4n
XSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9Owor
aXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsg
fQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2Vk
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjM2JjZDlhN2UxODgzNzA3MGNhZWU4ZGY4YmNiMTY5Yjc1NTU2OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWAp
OworfQorCitmdW5jdGlvbiBzaG91bGRCZUFycmF5KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBz
aG91bGRCZShhY3R1YWwubGVuZ3RoLCBleHBlY3RlZC5sZW5ndGgpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHByaW50KEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOworICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KK30KKworCitmdW5jdGlvbiAqZ2VuKGEsIGIs
IGMpCit7CisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICByZXR1cm4gYXJndW1l
bnRzOworICAgIH0KKworICAgIHJldHVybiB0ZXN0OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAz
KTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3Ro
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYx
NDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJp
bmcoYWN0dWFsKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwg
YiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5
aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOwor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoy
fWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsK
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAg
eworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAg
IHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9
CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICAidXNlIHN0cmljdCI7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAg
ICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBm
dW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
IH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50
YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFz
cy1tZXRob2RzLXN5bnRheC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1
YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCAr
MSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAg
ICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9y
IGluc3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5
bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAg
dHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6
ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29h
IHsKKyAgICAqY29uc3RydWN0b3IoKQorICAgIHsKKyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6
IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rl
c3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgICpvaygpCisgICAgeworICAgICAgICB5aWVs
ZCA0MjsKKyAgICB9Cit9CitgKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAg
c3RhdGljICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNs
YXNzLW1ldGhvZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjVhNTRhMmRjNDEyNzA3OWMzMWNm
ZDMxZjliMzFjZjUwYWQ2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjIg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3Ry
aW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVz
c2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51
bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlm
ICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOwor
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2NsYXNzIEEgewor
ICAgICpnZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhp
czsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KKworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkK
KyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAg
IHJldHVybiA0MjsKKyAgICB9Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBn
ID0gYS5nZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBu
ZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgYS5n
ZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOworfQorCit7CisgICAgbGV0IGcgPSBBLnN0YXRp
Y0dlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IEEuc3RhdGljR2VuKCk7CisgICAgfSwgYFR5cGVF
cnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBBLnN0
YXRpY0dlbigpJylgKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWJkNzhkZjc2
YTBjYjc1OGI4MWVlYWIyYzI1NWI5ZGFkMWI0NDc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCkBAIC0w
LDAgKzEsNjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1l
c3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsK
KyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAq
Z2VuKCkgeworICAgIHlpZWxkIGV2YWwoInRoaXMiKTsKK30KKwordmFyIGcgPSBuZXcgZ2VuKCk7
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0KCkudmFsdWU7Cit9LCBgUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3Mg
QiB7IH0KKworKGZ1bmN0aW9uKCkgeworICAgIGV2YWwoJ3RoaXMnKTsKKyAgICBldmFsKCd0aGlz
Jyk7Cit9KCkpOworCitjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgY29uc3RydWN0b3IoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBuZXcgQSgpOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEMgeworICAgICpnZW5lcmF0b3Io
KQorICAgIHsKKyAgICAgICAgeWllbGQgZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxk
VGhyb3coKCkgPT4geworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IG5ldyBjLmdl
bmVyYXRvcigpOworICAgIGcubmV4dCgpOworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBjLmdlbmVyYXRvcigpJylgKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcgPSBjLmdlbmVyYXRv
cigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBjKTsKK30oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1j
b25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTZhZTVmZDE5ZjlkOGM4
YjA4ZGU2YjBlZDZhNWJhZTc1YWZkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpA
QCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcgRnVuY3Rpb24oInJldHVy
biB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVyYXRvckZ1bmN0aW9uLCAn
dW5kZWZpbmVkJyk7Cit2YXIgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IChmdW5jdGlv
biAqKCkgeyB9KS5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjc3MzZjNDIzNGUx
ODc5MTBiOGNhNjM1M2NiZjQ1YjBkNjAwNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpAQCAt
MCwwICsxLDEyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9rID0gZnVuY3Rpb24gKmdlbmVyYXRvcigpCit7
CisgICAgeWllbGQgZ2VuZXJhdG9yOworfTsKKwordmFyIGcgPSBvaygpOworc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1n
ZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2MWQ5MzA3NjBkMjBlZTZlZjRjZTU3MDNlZjczYjlm
ZjlhZTU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEs
MzEgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7Cit9Cit2YXIg
ZyA9IGdlbigpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0LmNhbGwoe30pOwor
fSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBnLnRocm93LmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRo
aXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
Zy5yZXR1cm4uY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2Vu
ZXJhdG9yYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1yZWxhdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhNGRjOGNlMDc2YzczMWM0
MjRhODg1ZmIzOGUzNTdlNDkzZmZmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpAQCAtMCwwICsxLDMw
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbmVyYXRvckZ1bmN0aW9uKCkgeworfQorbGV0IGdl
bmVyYXRvciA9IGdlbmVyYXRvckZ1bmN0aW9uKCk7CisKK3Nob3VsZEJlKGdlbmVyYXRvciBpbnN0
YW5jZW9mIGdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKHR5cGVvZiBnZW5lcmF0
b3IuX19wcm90b19fLCAnb2JqZWN0Jyk7CitzaG91bGRCZShnZW5lcmF0b3IuX19wcm90b19fLCBn
ZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUpOworCitsZXQgR2VuZXJhdG9yUHJvdG90eXBlID0g
Z2VuZXJhdG9yLl9fcHJvdG9fXy5fX3Byb3RvX187CisKK2xldCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZSA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXzsKK2xldCBHZW5lcmF0b3JGdW5j
dGlvbiA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJl
KEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
Oworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VvZiBHZW5lcmF0b3JGdW5jdGlv
biwgdHJ1ZSk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18sIEZ1bmN0aW9u
KTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLl9fcHJvdG9fXywgRnVuY3Rp
b24ucHJvdG90eXBlKTsKKworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJv
dG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUpOworc2hvdWxkQmUoR2VuZXJhdG9yUHJvdG90eXBl
LmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2xldCBhcnJheUl0
ZXJhdG9yID0gW11bU3ltYm9sLml0ZXJhdG9yXSgpOworbGV0IEFycmF5SXRlcmF0b3JQcm90b3R5
cGUgPSBhcnJheUl0ZXJhdG9yLl9fcHJvdG9fXzsKK2xldCBJdGVyYXRvclByb3RvdHlwZSA9IEFy
cmF5SXRlcmF0b3JQcm90b3R5cGUuX19wcm90b19fOworCitzaG91bGRCZShJdGVyYXRvclByb3Rv
dHlwZSwgR2VuZXJhdG9yUHJvdG90eXBlLl9fcHJvdG9fXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0
LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1y
ZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEyMTdmNzJjODdjMDg5
OGU1OTA5YWJhZjM4NWJmMjA4OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5q
cwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cg
bmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJs
ZSgpOworfQorCit2YXIgZyA9IGdlbigpOworZy5yZXR1cm4oIkhlbGxvIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ODBhZjZlMDc4OWRjMThiYmFkM2EwYWZiYmY1YWQ5YTg1ZWMxMzVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
dGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworCit2YXIgZ2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCBnbG9iYWwpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3
IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQo
KTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7
fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAg
ICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsK
KyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgfQorICAg
IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAg
ICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNP
YmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7Cisg
ICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVhYzBkOWEzZTQxODc5ZWRkZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9u
IHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0
aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2
YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhyb3duID0gbnVsbDsKK3RyeSB7Cisg
ICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNoIChlKSB7CisgICAgdGhyb3duID0gZTsKK30KK2lm
ICh0aHJvd24gIT09IGVycm9yKQorICAgIHVucmVhY2hhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5l
dy10YXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzYjJkZjk5YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2
ZWFiOGRiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpAQCAtMCwwICsxLDE1IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgeWllbGQgbmV3LnRhcmdldDsKK30KKwordmFy
IGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworCit2YXIg
ZzIgPSBuZXcgZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdp
dGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci13aXRoLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNi
ZjhkNmM4OTc3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRlc3QoKSB7CisgICAgICAgIHJldHVybiBldmFsKCdzdXBlcicpOworICAgIH0KKworICAgIHNo
b3VsZFRocm93KCgpID0+IHRlc3QoKSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlk
IGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAg
ICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIuZ2VuKCknKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGEu
Z2VuKCkubmV4dCgpOworICAgIH0sIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBp
bnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBC
IHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAg
ICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKK30oKSk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5k
cyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93
KCgpID0+IHsKKyAgICAgICAgbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBl
ZDU2Njg4YTZhMjk4Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRW
ZWN0b3IgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9y
RWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAg
dW5zaWduZWQgbiA9IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyArK2kpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZm
MTIwMTNjNjQ4Li5mNDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAh
ZGVmaW5lZChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5F
UkFUT1JTIDAKKyNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0
MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVk
MTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFT
X1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5F
UkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwog
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVO
VF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcx
MjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDlj
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJP
WFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
Tkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFT
U19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJ
TFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1Njhk
NTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZf
QVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwog
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZf
R0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQppbmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNj
Li4wMmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9E
UkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9GSUxFX1NZU1RFTSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4
IGQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2
ZjdhMDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UK
QEAgLTc3LDcgKzc3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCAiVG9nZ2xlIEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2Vu
ZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklW
QVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9n
Z2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVt
cGxhdGUgbGl0ZXJhbCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUg
TGV2ZWwgMiIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZDJkYjIyODc3OWUxOGE1OWU4NTAzNzFiNjVmYzIzZWY1YmIyZGQ5
ZC4uYTY5OGU5MTFlYmU3N2Y3ZDg4NGY1MDlhODk4ZTg3Mzk0Yzc2YWU2YiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTUtMTEtMjIgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBydW4td2Via2l0LXRlc3RzOiBodHRwIHNlcnZlciBmb3IgaW1wb3J0ZWQgVzNDIHRlc3Rz
IGRvZXNuJ3Qgd29yayB3aXRoIC0tbGF5b3V0LXRlc3RzLWRpcmVjdG9yeSBzd2l0Y2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjZGViNTI1Y2Y5NGI1YThlMTIx
YmEyNGUzNzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNjNTMyOTliYzI3MWQ5Yjc3Zjc0OGFk
MzA3MDVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xODUs
NyArMTg1LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5U
QVgiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0
aW9uID0+ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBF
UzYgbW9kdWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVT
IiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzlhNmJjZjY3NTRlMGYxNTEzZWQ2OGUxNGE4
YjA5MDE4MjI0NDhhYS4uMzM4YWE1MDIyNDZmYWExYWZmNTBkZmJmMDVlN2RiZWZjYjU1Y2U0OSAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE1LTExLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMjAg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgTkVUV09SS19QUk9DRVNTIGNvbXBpbGUgZmxhZwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggMGM4YWYy
YWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4uZGQ5NWUyZDdkOTI1NDI2NjE5MGVl
MGI5NjEwNDJmOGU1MmJiZTg1YSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3Jz
IGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3Bz
OgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6
CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5hbmRyb25pa29zLXdlYmtp
dEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgYW5kIGNvbXBpbGUg
dGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlvbnMgQVBJIGFuZCBtb2RlbC4KZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
cy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
cy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJlNGRmYTc5MjlkN2UzM2NjZGNmLi5i
MDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4OGVkIDEwMDY0NAotLS0gYS9XZWJL
aXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKKysrIGIv
V2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBA
IC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPC9FTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgog
ICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4KZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5l
c0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFmMTU4ZWM1ZWU0ODNkMDY5NmM3MWNl
NDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2OWExYTk4MzUzODBhOCAxMDA2NDQK
LS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fp
cm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVE
ZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPgog
ICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJB
VE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JT
PC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAg
IDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAg
PEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266128</attachid>
            <date>2015-11-24 02:17:58 -0800</date>
            <delta_ts>2015-11-24 06:06:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151124191738.patch</filename>
            <type>text/plain</type>
            <size>325918</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi5hNDYzNTM2ZDVhNTEzOGJh
MGQxM2I0NzNiNDJiMGNhMDQ2OWM2YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsNDkzIEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJh
c2ljIGZ1bmN0aW9uYWxpdHkgb2YgRVM2IEdlbmVyYXRvcnMgaW4gTExJbnQgYW5kIEJhc2VsaW5l
IHRpZXJzLgorICAgICAgICBXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgaW5lZmZp
Y2llbnQgcGFydCwgdGhlIGltcGxlbWVudGF0aW9uIGNvdmVycyBlZGdlIGNhc2VzLgorICAgICAg
ICBMYXRlciwgd2Ugd2lsbCBtYWtlIHRoaXMgZWZmaWNpZW50LgorCisgICAgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ2CisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CisgICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTUyCisgICAg
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTYwCisg
ICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2
CisKKyAgICAgICAgVG8gZW5jb3VyYWdlIERGRyAvIEZUTCBsYXRlciwgd2UgdGFrZSB0aGUgZm9s
bG93aW5nIGRlc2lnbi4KKworICAgICAgICAxLiBVc2Ugc3dpdGNoX2ltbSB0byBqdW1wIHRvIHRo
ZSBzYXZlL3Jlc3VtZSBwb2ludHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgLyByZXN0
b3JpbmcgaW5zdHJ1Y3Rpb24gcG9pbnRlciB0byByZXN1bWUgZnJvbSBpdCwgd2UgdXNlIHN3aXRj
aF9pbW0gdG8ganVtcCB0byB0aGUgcmVzdW1lIHBvaW50LgorICAgICAgICBUaGlzIGxpbWl0cyBv
bmUgZW50cnkgcG9pbnQgdG8gYSBnaXZlbiBnZW5lcmF0b3IgZnVuY3Rpb24uIFRoaXMgZGVzaWdu
IG1ha2VzIGlubGluaW5nIGVhc3kuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgY29kZSBiZWNvbWVz
IHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIEBnZW5lcmF0b3JOZXh0KEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEBnZW5lcmF0
b3JTdGF0ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW5pdGlhbDoKKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgc2VxdWVuY2UuCisgICAgICAg
ICAgICAgICAgICAgIC4uLgorCisKKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8w
KTsgIC8vIG9wX3NhdmUgY29udGFpbnMgKnZpcnR1YWwqIGp1bXAgdG8gWWllbGRfMC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENGRyBzaG93cyBhIGp1bXAgZWRn
ZSB0byBZaWVsZF8wIHBvaW50LCBidXQgaXQgd29uJ3QgYmUgYWN0dWFsbHkgdXNlZC4KKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MDoKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIC8vIHNlbnRWYWx1ZSBpcyBhIHZhbHVlIHNl
bnQgZnJvbSBhIGNhbGxlciBieSBgZ2VuZXJhdG9yLm5leHQoc2VudFZhbHVlKWAuCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIG9wX3NhdmUoWWllbGRfMSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAuLi47CisKKyAgICAgICAgICAgICAgICBjYXNlIFlpZWxkXzE6
CisgICAgICAgICAgICAgICAgICAgIG9wX3Jlc3VtZSgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUgPT0gVGhyb3cpCisgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQGdlbmVyYXRvclJlc3VtZU1vZGUg
PT0gUmV0dXJuKQorICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBzZW50VmFsdWUgPSBAZ2VuZXJhdG9yVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZXN1bWUgc2VxdWVuY2Ug
c2hvdWxkIG5vdCBiZSBlbWl0dGVkIHBlciB5aWVsZC4KKyAgICAgICAgICAgIFRoaXMgc2hvdWxk
IGJlIGRvbmUgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU1
Mi4KKworICAgICAgICAyLiBTdG9yZSBsaXZlIGZyYW1lIHJlZ2lzdGVycyB0byBHZW5lcmF0b3JG
cmFtZQorCisgICAgICAgIFRvIHNhdmUgYW5kIHJlc3VtZSBnZW5lcmF0b3IncyBzdGF0ZSwgd2Ug
c2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGluIEdlbmVyYXRvckZyYW1lLgorICAgICAgICBB
bmQgd2hlbiByZXN1bWluZywgd2UgcmVmaWxsIHJlZ2lzdGVycyB3aXRoIHNhdmVkIG9uZXMuCisg
ICAgICAgIFNpbmNlIHNhdmVkIHJlZ2lzdGVyIGNvbnRhaW5zIHNjb3BlIHJlZ2lzdGVyLCB8dGhp
c3wgZXRjLiwgdGhlIGVudmlyb25tZW50IGluY2x1ZGluZyB0aGUgc2NvcGUgY2hhaW4gd2lsbCBi
ZSByZWNvdmVyZWQgYXV0b21hdGljYWxseS4KKyAgICAgICAgV2hpbGUgc2F2aW5nIGFuZCByZXN1
bWluZyBjYWxsZWUgcmVnaXN0ZXJzLCB3ZSBkb24ndCBzYXZlIHBhcmFtZXRlciByZWdpc3RlcnMu
CisgICAgICAgIFRoZXNlIHJlZ2lzdGVycyB3aWxsIGJlIHVzZWQgdG8gY29udHJvbCBnZW5lcmF0
b3IncyByZXN1bWUgYmVoYXZpb3IuCisKKyAgICAgICAgV2UgcGVyZm9ybSBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgaW4gQ29kZUJsb2NrIHRvIGRldGVybWluZSB3aGljaCByZWdpc3RlciBpcyBs
aXZlLgorICAgICAgICBSZWdpc3RlcnMgcmVzaWRlIGluIEMgc3RhY2suIFNvIGlmIHdlIGRvbid0
IHBlcmZvcm0gaXQsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB2YWx1ZSBp
cyBKU0NlbGwgb3Igbm90CisgICAgICAgIHRvIGVtaXQgd3JpdGUgYmFycmllcnMuCisgICAgICAg
IEJ5IHBlcmZvcm1pbmcgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLCB3ZSBjYW4gZGV0ZXJtaW5l
IGFjdHVhbGx5IGBkZWZgaW5lZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAg
ICAgICAgMy4gR2VuZXJhdG9yRnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9y
ZSBnZW5lcmF0aW5nIEdlbmVyYXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBz
aG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3Ig
ZXhhbXBsZSwKKworICAgICAgICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAg
ICAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHlpZWxkIGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdl
bigyMCk7ICAvLyBOb3csIGhlbGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5h
YmxlIHRoaXMsIHdlIGV2YWx1YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFu
ZCBhZnRlciB0aGF0LCB3ZSBjcmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAg
ICAgVGhpcyBjYW4gYmUgZXhwbGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisK
KyAgICAgICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgIDQuIG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBq
dW1wCisKKyAgICAgICAgV2Ugd29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFj
dHVhbGx5LiBCdXQgd2UgYWRkIGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9z
YXZlIHRvIHRoZSBwb2ludCBzbyBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29u
c3RydWN0IHRoZSBDRkcgYXMgZm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0
b3Igc3dpdGNoKSAtPiAoaW5pdGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1l
cmdlIHBvaW50KSAtPiAobmV4dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHYgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT4ob3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGlu
ZyBzdWNoIGEgZ3JhcGgsCisKKyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZy
b20gKG9wX3NhdmUpIHRvIChtZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVz
ZSogbG9jYWxzIHRoYXQgYXJlIGRlZmluZWQgYmVmb3JlIChvcF9zYXZlKQorICAgICAgICAgICAg
Mi4gb3Bfc2F2ZSBzaG91bGQgY2xhaW0gdGhhdCBpdCBkb2VzIG5vdCBkZWZpbmUgYW55dGhpbmcu
CisgICAgICAgICAgICAzLiBhdCBvcF9yZXN1bWUsIHdlIHNlZSAqdXNlKmQgbG9jYWxzIGF0IG1l
cmdlIHBvaW50IGFuZCBkZWZpbmUgYWxsIG9mIHRoZW0uCisKKyAgICAgICAgV2UgY2FuIGRvIHRo
ZSBhYm92ZSB0aGluZ3MgaW4gdXNlLWRlZiBhbmFseXNpcyBiZWNhdXNlIHVzZS1kZWYgYW5hbHlz
aXMgaXMgYmFja3dhcmQgYW5hbHlzaXMuCisgICAgICAgIEFuZCBhZnRlciBhbmFseXppbmcgdXNl
LWRlZiBjaGFpbnMsIGluIG9wX3NhdmUgLyBvcF9yZXN1bWUgd2Ugb25seSBzYXZlIC8gcmVzdW1l
IGxpdmUgcmVnaXN0ZXJzIGF0IHRoZSBoZWFkIG9mIG1lcmdlIHBvaW50LgorCisgICAgICAgICog
QVBJL0pTU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUV4
ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlw
ZS5qczogQWRkZWQuCisgICAgICAgIChnZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6
CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NG
aXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAg
ICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtQ2FsbGVlTG9jYWxzKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6CisgICAg
ICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNh
Y2hlOjp0cnlHZXQpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAg
ICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6aXNDYWNoZWFibGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpnZW5lcmF0b3JUaGlz
TW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUluZm86OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omlz
QXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRp
YWxpemVQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1Jl
Z2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25D
b21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9u
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
dGVyYXRvck5leHRXaXRoVmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNh
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24pOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnJlZ2lzdGVyRm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VG
dW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjplbWl0SG9t
ZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OmVtaXRTdXBlckJhc2VGb3JDYWxsZWUp
OgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Qnl0ZUNvZGVQYXJzZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdGb3JB
bGxLaWxscy5oOgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxs
TG9jYWxzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAg
ICAgICAgKiBmdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxpemVFbnRyeUJ1ZmZlcik6CisgICAgICAgICog
ZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRyeS5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwv
RlRMU3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNBdG9t
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5l
d0Z1bmNDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcik6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6dHJh
Y2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVy
Lmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSk6CisgICAgICAgICogcGFyc2VyL05vZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNl
dElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpp
c01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVLZXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5ndGgpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omlz
TnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OnN0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJhdG9yPT0pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxl
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6Y2hl
Y2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpz
YXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9j
YWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExG
b3JPU1JFbnRyeUpJVENvZGUuY3BwLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55
YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19p
dGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxl
LlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAg
ICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVy
YWJsZXMuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5
bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6
CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVy
YXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0
cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93Lmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRh
eCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9y
LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAg
ICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAo
c3RhdGljR2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAg
ICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRvcik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5
cGVFcnJvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
b2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1n
ZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAg
ICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItdGhpcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxs
LmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAg
ICAgIChjYXRjaCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10
YXJnZXQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlw
ZS5nZW4pOgorICAgICAgICAoQik6CisgICAgICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAg
ICAoQSk6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIxID09CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDgwYTU3OTRjMDZmNGZhYjA5ZmYwM2E2NDE3ODBlM2YyNmFjM2FkOGQuLjhhM2RjNjg3OGZlZmIw
MWNmZmM0MDk1M2U4OWYzMTdkMGNlN2ExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTEt
MjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFu
ZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RC
aXRWZWN0b3I6OmZvckVhY2hTZXRCaXQpOgorICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5o
OgorCiAyMDE1LTExLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTEVEOiB0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0KCkgPT0g
Jy8nIGluIFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWYxYTIz
ZTIyOGU3ZGRjMGM4YmQwYmUwMWY1MDY3MDBkNzZjOWMxLi45ZjBhOWJhNTRhMmM4YWJjYTdmYWRi
YTY0ODIwYjFlOTQ5YjQ5YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEt
MjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFu
ZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
CiAyMDE1LTExLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRm9udCBzZWxlY3Rpb24gc2hvdWxkIG5vdCBjb25zdWx0IGZvbnQtdmFyaWFudCBw
cm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDNiOTlmNDg4MTkxY2EyMzA2MWVkMjBkNzhlODcx
MzMxZDQ1MWU0NjAuLjc3MWVlOTAzNDU2MjJhN2RiNzViZDQ2Yzk1MmNjMDU3YTI4ZGY5NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEgKzEsMTAgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50
L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiA9PSBSb2xsZWQgb3ZlciB0
byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNlNjM3ODg3MjYyODRjMGJh
M2YxNWM4YTNiNTljYzFmN2IxNjBkM2MuLmJlMzYzN2JkYWMyM2FlMTI2YTk1NjUzNDM3Y2YxZjVl
M2UxNzVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEt
MjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuIEFkZCBtaXNzaW5nIGluc3BlY3RvciBmaWxlIHRvIEdUSysgY29tcGlsYXRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IDNiN2I3
NmJmM2E0NDRjOTIxYmU5NzNjNTc2YzE5ZjY5MmU4ZDIzMmQuLjJmMzc0MjMwMDk3YjUwODI1ODNm
ODQ0MjdiOTI1NzkzN2QzMDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTY3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHRSZWYuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBib29sIHBhcnNlU2NyaXB0KFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAg
cmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKICAgICAgICAgZXJy
b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQzMGZmZTMw
YzkyMmU4ZGY0MDc3MTlkMzY0NzViNmI2MTFlODI5Ni4uZDcwN2UzM2JkMzFhMTAwM2M3NTFjN2Q4
OGIwZTcwMDQxZWNjZDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NTYzLDYgKzU2MywxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAg
cnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNl
dHRlci5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGlu
Z1R5cGUuY3BwCkBAIC02MDIsNiArNjA2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVf
U09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJv
bm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC03MzcsNiArNzQyLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJv
dG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwCkBAIC0xMTk1LDYgKzEyMDEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09V
UkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnBy
b3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheS5wcm90
b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb24ucHJv
dG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvci5w
cm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2Jq
ZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9J
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRh
NjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5D
VElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VT
Nl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VO
RVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9S
UzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyZjY1ZGI1NWExZWVkMzY0OWNmZTMzZDc4
YjkyNmM2MjUxM2E5ZjY4Li5mZGU1N2U5MzhkYmQ0ZmEyZGJlNWMxNGQ3YmM4ZmJlMTE1MTcwMWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNiAr
ODQsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9uLnByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yLlByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgXAogICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzIFwKQEAg
LTExOSw2ICsxMjAsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgRGF0ZUNvbnN0cnVj
dG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclByb3RvdHlw
ZS5sdXQuaCBcCisgICAgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggXAogICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggM2U3Zjk5NGUzMDdjNDZkMDNiNzRiOTc5ZjUx
YmU2NTZlNTlhYzA0My4uY2FmZTFmMjczNDhjZWJlYTE5NGU2Yzc1ODFmMGYzYTNlMzU1NGQ3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03NTYsNiArNzU2LDEw
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25SYXJlRGF0YS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZyYW1lLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmllci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nVHlwZS5jcHAi
IC8+CkBAIC03OTUsNiArNzk5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTRGF0ZU1hdGguY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAi
IC8+CkBAIC05NDUsNiArOTUwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xEYXRlQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZVByb3RvdHlwZS5sdXQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJv
clByb3RvdHlwZS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4KQEAgLTE1MTUs
NiArMTUyMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFyc2VyVG9r
ZW5zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUmVzdWx0VHlwZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaCIgLz4KQEAgLTE2MDEsNiArMTYwOCwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvclByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JUaGlzTW9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZW5lcmljQXJndW1lbnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEdlbmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiArMTY3Miw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
YTZkM2ZmMDBlMjUwM2FjYmMzNjc5MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMWI5NzhlZTQ4MWMxODQ4
N2E4MjUzNWRmNzc5ODUwMTU4MjdhMWNmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjY2LDYgKzY2NiwxOCBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYgKzc1OSw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2ICsyNjI3LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgogICAgICAg
PEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRlcj5wYXJz
ZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxTb3VyY2VQcm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yODEzLDYgKzI4MzEsMjEgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmF0b3JUaGlzTW9kZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC0yOTE4LDYgKzI5NTEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
R2VuZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9i
YWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KQEAgLTMyODIsNiArMzMxOCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUu
bHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xIZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBl
ZDc0OTE2Y2NjYzI2ZWQzZDg2NGRiZDUwZjBkOTE2MzM5MzBhZTEzLi42MzViNzMwZmU3ZjEzYTBl
MDg4MjY4Yzg4ODJjMmU0NDg0MWY5ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTIwMyw2ICsxMjAzLDE5IEBACiAJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAq
LzsgfTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFF
MzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8q
IFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkxMUMwMjRB
MTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29k
ZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OworCQk3MEI3OTE5MzFDMDI0QTI4MDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcw
Qjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsg
fTsKKwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkx
OTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTcw
Qjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODgxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTgxQzAyNEEyOTAw
MjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5
MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvclRoaXNNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICov
OyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEQx
QzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNF
MDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBE
QzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwODFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3Nl
bWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBE
RTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLzsgfTsKQEAgLTE5NjIs
OCArMTk3NSw4IEBACiAJCUZFMEQ0QTA5MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0
V2l0aEZpbmFsaXplclRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRo
RmluYWxpemVyVGVzdC5jcHAgKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBK
SVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdG
NTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJRkUxODdBMDExQkZC
RTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklU
TXVsR2VuZXJhdG9yLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAz
OEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAo
KTsgfTsgfTsKKwkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlG
RjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUxODdB
MDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMDAxQkZCQzczQzAwMzhCQkNBIC8q
IEpJVE11bEdlbmVyYXRvci5oICovOyB9OwogCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyog
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUz
RkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsg
fTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAw
REYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAtMzI2Nyw2ICszMjgwLDIwIEBACiAJ
CTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2
MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4
ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yVGhpc01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9y
VGhpc01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEMxQzAyNDQ2
MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEUxQzAyNDRDOTAw
MjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlQ29kZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4
RjFDMDI0NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9yLnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEdlbmVyYXRvci5wcm90b3R5cGUuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBE
QzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9y
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREU5QTA4MUJFN0Q2
NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExMSW50QXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUw
NzcsNiArNTEwNCw3IEBACiAJCQkJOTk2QjczMDgxQkQ5RkEyQzAwMzMxQjg0IC8qIERhdGVDb25z
dHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQ
cm90b3R5cGUubHV0LmggKi8sCisJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyog
SW5pdEJ5dGVjb2Rlcy5hc20gKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJQTVFQTcxMEQxOUY2REY4MTAwOThGNUVDIC8q
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oICovLApAQCAtNTIwNSw2ICs1
MjMzLDcgQEAKIAkJCQk4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICov
LAogCQkJCTBGOEYyQjlEMTczMDZDOEIwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCAqLywKIAkJ
CQk2NUU4NjZFRTBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlQ29kZS5oICovLAorCQkJCTcwQjc5
MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8sCiAJCQkJMEY0OTNBRjgx
NkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLywKIAkJCQk2NUU4NjZFRDBE
RDU5QUZBMDBBMkIyQTEgLyogU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlFNDlEQzE1NTEyRUYy
NzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi8sCkBAIC01MzM0LDYgKzUz
NjMsMTUgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5
cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0
YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURh
dGEuaCAqLywKKwkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
Y3BwICovLAorCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
ICovLAorCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAorCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJNzBCNzkxODgxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJNzBC
NzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJ
NzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovLAorCQkJ
CTcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovLAogCQkJ
CTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzLmggKi8sCiAJCQkJ
MEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggKi8s
CiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCAqLywKQEAg
LTU0MzMsNiArNTQ3MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVu
Y3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9u
LmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVz
LmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJCQkwRjJCNjZDNTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAq
LywKQEAgLTY1NDEsNiArNjU4MSw3IEBACiAJCQkJQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8q
IEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWls
dGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMgLyogRnVuY3Rpb24u
cHJvdG90eXBlLmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0
b3IucHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5QTMwMDlEQjFFRiAvKiBHbG9i
YWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4
NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCkBAIC02OTUyLDYgKzY5OTMs
NyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBC
OUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIw
NTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgx
QkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTcw
MDEsNiArNzA0Myw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVj
dHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTA4NTYxOUEyOTBCMjAw
RjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJB
MTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCkBAIC03MjIxLDYgKzcyNjQsNyBAQAogCQkJCUE1MEU0QjYyMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFy
cmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50
MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8q
IEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ3LDYgKzcyOTEsNyBAQAogCQkJCTcw
MTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3Jp
cHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMUExODhF
MEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4
LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTAsNiArNzQzNSw3IEBACiAJCQkJMUEyOEQ0QTgxNzdC
NzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBK
U0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyQTBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGQjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NDI2LDYgKzc0NzIsNyBAQAogCQkJCUZFMTg3QTAyMUJGQkU1NjEw
MDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0Mz
MTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQz
MTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0NjBDRjAwNjAxRjA2IC8qIExp
dGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU1MUI3OTRGOEEwMEVEQUY3
MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzOTEzNTYxQjc5NEY4
RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTgsNiAr
NzY0NSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNj
cmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5
IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5RDFDMDI0QTU2MDAy
NDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcy
OTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzYzMCw2ICs3Njc4LDcgQEAKIAkJCQlCQzE4QzQ2QTBF
MTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXNNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0
cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2NDcsNiArODY5Niw3IEBACiAJ
CQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3MEI3OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZDMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5
MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC04NjczLDYgKzg3MjMsNyBAQAogCQkJCTBGNzY2RDI4MTVBOENDMUUw
MDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQy
QjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkxRTE2ODc4RjdB
MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzcxMkUyMTdD
RDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1
ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODEwLDYgKzg4NjEsNyBAQAogCQkJCTE0
MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5MDUxQUYwMEQ3M0NDQSAv
KiBNYXRoQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1
MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIzQTQw
QzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk1
Niw2ICs5MDA4LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5
bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0
Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTYxQzAyNEEy
ODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2Vk
Q29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAwMEY0QkY0
QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5
NjQsNiArOTAxNyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUx
NjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5
U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgxNmI0YTVkMzBiNTIwYjVk
MWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMuLmE5ZTY5YmVhNmVlYWU1NzhiOTJkOTg5ZTFlODkxOTFh
MzM0ODk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFy
c2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9k
ZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAotICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IsCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQp
OwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJp
bGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwg
Y29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZh
cmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRh
YmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAg
IHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3IucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Njk5
MTA1ZDE1OTNkZjIwYjEwZGUxOGJiY2MxN2M2YmZkMDBmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2Z1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBHZW5lcmF0b3JTdGF0
ZS4KKyAgICBjb25zdCBDb21wbGV0ZWQgPSAtMTsKKyAgICBjb25zdCBFeGVjdXRpbmcgPSAtMjsK
KworICAgIC8vIFJlc3VtZU1vZGUuCisgICAgY29uc3QgTm9ybWFsTW9kZSA9IDA7CisgICAgY29u
c3QgUmV0dXJuTW9kZSA9IDE7CisgICAgY29uc3QgVGhyb3dNb2RlID0gMjsKKworICAgIGxldCBz
dGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0IGRvbmUgPSBmYWxzZTsK
KyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAnbnVtYmVyJykKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3Ii
KTsKKworICAgIGlmIChzdGF0ZSA9PT0gRXhlY3V0aW5nKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOworCisgICAgaWYgKHN0YXRlID09PSBD
b21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKHJlc3VtZU1vZGUgPT09IFRocm93TW9kZSkKKyAgICAg
ICAgICAgIHRocm93IHNlbnRWYWx1ZTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
aWYgKHJlc3VtZU1vZGUgPT09IFJldHVybk1vZGUpCisgICAgICAgICAgICB2YWx1ZSA9IHVuZGVm
aW5lZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgPSBzZW50VmFsdWU7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBFeGVjdXRpbmc7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJh
dG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUs
IHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICB0aHJvdyBl
cnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBkb25lLCB2YWx1ZSB9OworfQor
CitmdW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBOb3JtYWxNb2RlICovIDApOworfQor
CitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0
dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgdmFsdWUsIC8qIFJldHVybk1vZGUgKi8gMSk7Cit9
CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBleGNlcHRpb24sIC8qIFRocm93TW9kZSAq
LyAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNTRkZmQxNjhjYTYwMGViZWYxMzU4MDQzMmM3N2UyNWFk
NDQ0YWQwYy4uNTk2MDY0YzQwNjgyNDk3ODA4OWM0NjQzZjFjM2RmYmQwNTM0Yjk5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bj
b2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJp
bmc6CiAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgY2FzZSBvcF9zYXZlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
aW5kZXggMjk5MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFjNjJlOC4uYjQ5YjRmMmJi
ZWFlOTBjNWQ2NGZjMjkxODJhMmMxOTlkYWFmZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIg
OiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyb3df
ZnVuY19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Nh
bGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2Fs
bCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwgImxlbmd0aCIgOiAyIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKLSAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0KKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiAzIH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAgfSwK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGM3N2FiZWFhMjkyMDllMzI5OTEzY2Q5
NGNmYWQ3NTE1MTliZDk5ZjEuLjcyMjhiMDMzMzY2YzdhNjdiNTEwNDg4ZGZlNDVmM2RkM2NmYTQz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0CiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVm
LCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVz
CiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBV
c2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0
cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lk
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYg
dXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4
ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkg
Zmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlz
IGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFu
ZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxOSArMTE2LDE5IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRo
ZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFu
ZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2Fs
KCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0g
ICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAg
ICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3
ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhh
bmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1
bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewpAQCAtMTM4LDEwICsx
MzgsMTAgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0
cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNv
ZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAg
ICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGUKICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNv
ZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBzdGVw
T3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CkBAIC0xODAsNyArMTgw
LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2MKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1
bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVyczsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAg
ICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbiht
X2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwog
ICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAg
fQogICAgIH0KQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClb
aV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAg
ICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAogICAg
ICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5k
ZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBhNjEzMmMzMmFhY2U5OWE3Mjk4ZjM4NDkxY2JmODg2ZTVkNjY2ODQ1Li44Yjk4NGQ4
Y2I2ZjNjZGY3N2FhYmI3MDNkZjAxODVmYWNiZTM1NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIsNyArMzIsNyBAQAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC03MCw4ICs3MCwxMCBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAgICBj
YXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzogCi0g
ICAgY2FzZSBvcF9jb3B5X3Jlc3Q6IHsKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX2Nv
cHlfcmVzdDoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjYsNyBA
QCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJv
cGVydHlfZW51bWVyYXRvcjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAg
ICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRl
eF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1
Miw2ICsxNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2Fz
ZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19m
dW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3Bh
cmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNh
c2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CkBAIC0yNDAsNyArMjQ0LDcgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC0yNTUsNiArMjU5LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAg
ICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBj
YXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAg
ICBjYXNlIG9wX3JldDoKQEAgLTMxNSw2ICszMjAsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNh
c2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19m
dW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2Fs
bF92YXJhcmdzOgpAQCAtMzkwLDcgKzM5NywxNSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykKICAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0g
fQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChi
bG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3Nv
cnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZmNhNjMwMTQ5MTgyNmJl
ZTEwMDEyNGMyZjZhZTQyZjE4ZGVmOTllZS4uMWIxZGIxYjJjNDBiMGY0Y2QxOGZlYzIyM2NhYzc5
Y2UwMGYyYzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQpCiAgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
OyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocyki
LAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBt
X251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKKyAgICAgICAgbV9udW1QYXJhbWV0ZXJz
LCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJzKTsKICAgICBpZiAobmVlZHNBY3RpdmF0aW9u
KCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIG91dC5wcmludGYoIjsg
bGV4aWNhbCBlbnZpcm9ubWVudCBpbiByJWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQo
KSk7CiAgICAgb3V0LnByaW50ZigiXG4iKTsKQEAgLTY4MCw2ICs2ODAsMTggQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChp
IDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQog
CisgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9j
YWxzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBkbyB7CisgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbaV07CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICUxZCA9ICIs
IGkpOworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiXG4iKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKKyAgICB9CisKICAgICBv
dXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xMjk0LDYgKzEzMDYsMTQgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CkBAIC0xMzExLDYgKzEzMzEsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgK
ICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsKKyAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5m
b3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYgKzE1MjcsMjEgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRl
YnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAg
IGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICV1LCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3Ip
LmRhdGEoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1l
OiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICV1IiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAg
ICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNjYzLDcgKzE3MDYsNyBAQCBjbGFz
cyBQdXRUb1Njb3BlRmlyZURldGFpbCA6IHB1YmxpYyBGaXJlRGV0YWlsIHsKICAgICA6IEpTQ2Vs
bCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KG90aGVyLm1fZ2xvYmFsT2Jq
ZWN0KQogICAgICwgbV9oZWFwKG90aGVyLm1faGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKG90aGVyLm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHMo
b3RoZXIubV9udW1DYWxsZWVMb2NhbHMpCiAgICAgLCBtX251bVZhcnMob3RoZXIubV9udW1WYXJz
KQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90aGVyLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0xNzIwLDYgKzE3NjMsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3Ro
ZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1f
c3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOworICAgICAgICBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5tX2NvZGVCbG9ja3MuYWRk
KHRoaXMpOwpAQCAtMTczMCw3ICsxNzc0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIDog
SlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9iYWxPYmplY3Qoc2NvcGUtPmdsb2Jh
bE9iamVjdCgpLT52bSgpLCB0aGlzLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgLCBtX2hl
YXAoJm1fZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVy
cyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpCisgICAgLCBtX251bUNh
bGxlZUxvY2Fscyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpCiAgICAgLCBt
X251bVZhcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1
Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9zaG91bGRB
bHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTE5MDAsNiArMTk0NCw5IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxl
IGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmds
eVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKKyAgICAvLyBCb29ra2VlcCB0aGUgbWVy
Z2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KKyAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzOworCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0
cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAh
aW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CkBAIC0yMTg4LDYgKzIyMzUsMTQgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMTk5LDYgKzIyNTQsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGOjptb3ZlKGluc3RydWN0aW9ucyk7CiAK
KyAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3
aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5n
IG9wX3Jlc3VtZS4KKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICBpZiAoc2l6ZV90IGNvdW50
ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0
IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxp
dmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9u
bHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAg
Ly8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1p
dHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1v
cmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMjIyMiw3ICsyMjkx
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVy
ZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwg
bV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAg
LCBtX251bVZhcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkKGZhbHNlKQpAQCAtMzA0OSw2ICszMTE4LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1f
cmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5z
aHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2Ug
ZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVk
IHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDAyMCw3ICs0MDkwLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhl
YWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KDApOwogICAgIAot
ICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlTG9jYWxzKSkgewogICAgICAgICBiZWdpblZhbGlk
YXRpb25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9uZyBudW1iZXIgb2YgYml0
cyBpbiByZXN1bHQhXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIFJlc3VsdDogIiwgbGl2ZUF0
SGVhZCwgIlxuIik7CkBAIC00MDI4LDcgKzQwOTgsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQogICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgIH0KICAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZVJlZ2lzdGVyczsgaS0tOykgeworICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fbnVtQ2FsbGVlTG9jYWxzOyBpLS07KSB7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChsaXZlQXRIZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUy
ZDgyZWMuLjNjYmU3NWM0OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAwYWE5OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBu
ZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1DYWxsZWVMb2NhbHM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsg
cmV0dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TnVtUGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVt
UGFyYW1ldGVycyk7IH0KIApAQCAtNjU0LDYgKzY1NywxOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBU
YWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1w
VGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FT
U0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlp
ZWxkIHBvaW50cy4KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fcmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtpbmRleF07CisgICAgfQorICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2luZGV4XTsKKyAgICB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29k
ZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04NTUsNyAr
ODcwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gRklYTUU6
IE1ha2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAogICAgIGludCBtX251bUxv
Y2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OworICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICAKQEAgLTkwMCw2ICs5MTUsOCBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJs
ZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBt
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+
IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisKICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2
YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdkNGVhZjQzODU4YzA2Y2Vl
N2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4YmVkYjA3MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAogCiAgICAgY2xhc3MgRXZh
bENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0
KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUq
IHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250
ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJs
ZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdldCgpOwotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0
LCBldmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0
Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2
YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNU
RFpNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoc291cmNlQ29k
ZUtleSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2Nv
cGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2Rl
LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAg
ewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAg
ICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSwgdmFyaWFi
bGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxl
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBp
blN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgICAg
ICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFy
aWFibGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwg
c2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKQotICAgICAgICAg
ICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBXcml0ZUJhcnJpZXI8RXZh
bEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOworICAgICAg
ICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUp
ICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVL
ZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZh
bFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5z
ZXQoc291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgp
LCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAgICB9CkBAIC04MCwxNyAr
ODcsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIHx8IHNjb3BlLT5p
c1ZhclNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXND
YWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwg
SlNTY29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShi
b29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29w
ZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2YWwoKSBpcyBjYWxsZWQg
YW5kIGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBjYW4ndCBzb3VuZGx5IGNh
Y2hlIGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5IGhhcyBhY2Nlc3MgdG8g
dGhlICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAgICAgICAgICAgIHJldHVy
biAhaW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2YWxTb3VyY2UubGVuZ3Ro
KCkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpIAorICAgICAg
ICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJjZS5sZW5ndGgoKSkgPCBP
cHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpCiAgICAgICAgICAgICAg
ICAgJiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+PiBFdmFs
Q2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VDb2RlS2V5LCBXcml0ZUJh
cnJpZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwgU291cmNlQ29kZUtleUhh
c2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi4y
NjAyYmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMjYsMjEgKzI2LDI4
IEBACiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAog
CisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2Rl
cyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQu
CisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0
aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9y
LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0
aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1
Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVk
c0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2
YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1f
aXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAg
ICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3N1cGVy
QmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKKyAgICAgICAgLCBt
X3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworICAgICAg
ICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmlu
ZGluZykpOworICAgICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9kZSA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRz
QWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC00OCw4
ICs1NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIEdl
bmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJp
bmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBAIHN0cnVjdCBFeGVjdXRh
YmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAgU291cmNlUGFyc2VNb2Rl
IG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGQ2
MGZkZjdkM2NmMzYwZTNlYzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQuLjk4OTkzOWIyMzMyMTRjZmQ0
NWJlMDdiYWU4NjA5ZmM4NGM3ZWIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHN0
YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9w
X2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfc2F2ZToK
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5k
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXgg
YzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uODdlODIzM2YxZmUzYThi
ZWM0MDIzMGQyOThiMDllNmRmZjlhMzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01NCw3ICs1NCw3IEBACiBV
bmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQog
ICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtVmFycygwKQotICAgICwgbV9u
dW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBt
X251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVjdFJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQpAQCAtNjUsMTAgKzY1LDEyIEBACiAgICAgLCBtX2hh
c0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZv
LmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9kZSgpKSkKKyAgICAsIG1f
c3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkK
ICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRD
b2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAg
ICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJy
YXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjVi
ODYxZjBmODNjZi4uYmNhMmMwNGFjYTQzODI5MjE3NTY5NThiYWE2OGRiMzBlOGYxMzVjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNv
bnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2lu
Y2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTQxLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlZh
cmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsxMTgsNyBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wg
bmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFp
bjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25z
dHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4obV9nZW5lcmF0
b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAogICAg
IHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIzMiw3ICsyMzYsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgaW50IG1fbnVtVmFyczsKICAg
ICBpbnQgbV9udW1DYXB0dXJlZFZhcnM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwor
ICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKIAogICAgIC8vIEp1bXAgVGFibGVzCiAKQEAgLTM4
NywxMiArMzkxLDE0IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQg
bV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBt
X2dlbmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7
CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsK
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNl
TW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVU
eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4
YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li4zZjQ5NDg4NWFmNDljMjhlMjZmNDk3ZDY3NWY2NGExNmM5
YjlhZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQAog
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmls
ZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJy
b3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNT
RVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9k
ZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJyb3IsIG51bGxwdHIpOwor
ICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGlu
ZygpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFT
U0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAg
IGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVu
Y3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0
aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7
CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4
ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9k
ZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBn
ZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9u
LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5w
YXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVy
YXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52
aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0
b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9u
YW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5h
bWUoKSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJp
bGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5k
KCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBt
X2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJh
dG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKKyAg
ICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRp
bmcoKSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBAIC0xODAsNyArMTgxLDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dp
dGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2
LDcgKzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
ICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlz
QXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li5j
OGJiYTBhYzMyYmU0MzdmZmI1ZGYzZTNmOWUwNWIwNDc4YTUzNjFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVk
ZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAg
KzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUg
PSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhp
c01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAg
ICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92
ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCks
IHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlv
bktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsOCBAQCBjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wg
aXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9
CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9y
S2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJh
dG9yVGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9k
ZT4obV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGlu
Zyk7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxp
bmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRD
b2x1bW47IH0KQEAgLTk1LDcgKzk4LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0g
ICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNl
UGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJv
bUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDEwICsxMjgsOSBA
QCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0KICAg
ICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3Ry
dWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAm
bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxl
RW52aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNl
T3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENv
bnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTgsNyArMTYwLDgg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8g
RnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVu
c2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5k
aW5nIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBiOTM3MGM4ZDI4NGEzODRmMjFlMGU3ODkyNjg1NDVjOTJiMTk4
MjNiLi44NzcwMmVjMzlhMzNiNjI5MDBmOGNjY2ViYzU4ZDk2YjFmNzY5YTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtMjI3LDkgKzIyOSwzMyBA
QCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICB9CiAg
ICAgfQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNvZGVCbG9jay0+cGFyc2VN
b2RlKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9zaG91bGRF
bWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29r
cyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IGZ1
bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKwor
ICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHNjb3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlKQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOworCisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3Vt
ZW50cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRz
Ii4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50
cyIuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Ig
c2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCisgICAgICAgIC8vIFRvIHdv
cmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBhcyBhcmd1bWVudHMgb2Yg
YSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVuY2UgaXQgZnJvbSBhIGdl
bmVyYXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0g
aGVsbG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3Is
IEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkK
KyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3Mg
YXJndW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgLy8gICAg
ICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAgIC8vICAgIH0KKyAgICAgICAg
c2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHNo
b3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVuY3Rpb25Ob2RlLT52YXJEZWNs
YXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogICAgIApAQCAtMjU0LDE0
ICsyODAsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0
SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGluaXRpYWxpemVQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24s
IGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEg
Z2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFt
ZXRlcnNbMV07CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRo
aXNNb2RlOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVn
aXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5l
cmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291
bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFz
ZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3Vp
dGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5lcmF0b3IoZ2VuZXJhdG9y
U3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAgICBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5hbWVJ
c0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9k
ZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVT
Y29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhm
dW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJl
ZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVt
aXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVS
ZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91bGRD
YXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBl
bnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25z
LiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmly
b25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFrZSBz
dXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5k
IG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcg
YXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7
IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4
KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0
byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRlcm4t
PmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0
UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJl
c3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJlIG91
dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9vbCBj
YXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwzNiBAQCBQYXJzZXJFcnJv
ciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0
UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9u
KCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhp
cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dG
dW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVt
aXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKKyAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgICAg
IGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAg
ICAgZW1pdENyZWF0ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAg
ICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCisg
ICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0NvbnN0
cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZt
X3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpEZXJpdmVkKQpAQCAtNDkyLDkgKzU1Myw4IEBAIFBhcnNlckVycm9yIEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8
IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlv
blRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAog
ICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNh
bGxlZApAQCAtNzk5LDYgKzg1OSwyMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKQogICAgIHJldHVybiAmcGFyYW1ldGVyOwogfQogCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtu
b3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFt
ZXRlcnMKKyAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgorICAgIG1fcGFy
YW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9y
ICJ0aGlzIgorICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1l
dGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVy
cy5hdChpKS5maXJzdDsKKyAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1ldGVyKTsKKyAgICAgICAg
ICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0
dGVybik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0
ZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVWYXJM
ZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKQEAgLTgyNiwxNyAr
OTAyLDE3IEBAIFVuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVyYXRvcjo6dmlzaWJsZU5h
bWVGb3JQYXJhbWV0ZXIoRGVzdHJ1Y3R1cmluZ1BhdHRlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdSZWdpc3RlcigpCiB7Ci0gICAgbV9jYWxsZWVSZWdpc3RlcnMuYXBwZW5k
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkpOwotICAg
IGludCBudW1DYWxsZWVSZWdpc3RlcnMgPSBtYXg8aW50PihtX2NvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMsIG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSk7Ci0gICAgbnVtQ2FsbGVlUmVn
aXN0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksIG51bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzID0gbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3Rl
cnMubGFzdCgpOworICAgIG1fY2FsbGVlTG9jYWxzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzID0g
bWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBtX2NhbGxlZUxvY2Fscy5z
aXplKCkpOworICAgIG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVMb2NhbHMpOworICAgIG1fY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsKKyAgICByZXR1cm4gJm1f
Y2FsbGVlTG9jYWxzLmxhc3QoKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVjbGFp
bUZyZWVSZWdpc3RlcnMoKQogewotICAgIHdoaWxlIChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkg
JiYgIW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKS5yZWZDb3VudCgpKQotICAgICAgICBtX2NhbGxl
ZVJlZ2lzdGVycy5yZW1vdmVMYXN0KCk7CisgICAgd2hpbGUgKG1fY2FsbGVlTG9jYWxzLnNpemUo
KSAmJiAhbV9jYWxsZWVMb2NhbHMubGFzdCgpLnJlZkNvdW50KCkpCisgICAgICAgIG1fY2FsbGVl
TG9jYWxzLnJlbW92ZUxhc3QoKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
Om5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpCkBAIC0xOTE1LDcgKzE5OTEsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zm
c2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOwogICAgIGVsc2Ug
ewogICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJLaW5kOjpTdGFjayk7Ci0gICAgICAgIHZh
ck9mZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkpKTsKKyAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOwogICAgIH0KICAgICBTeW1ib2xU
YWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgMCk7CiAgICAgc3ltYm9sVGFibGUtPmFkZChs
b2NrZXIsIHByb3BlcnR5LmltcGwoKSwgbmV3RW50cnkpOwpAQCAtMjMxMiwxMiArMjM4OCwxMiBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3RlcklEKiBj
b25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
cmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMo
bV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAgICBtX2Nv
ZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU0Nyw2IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50
Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwo
ZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikp
KTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbklu
dGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1pdE9wY29k
ZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBk
c3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4cCk7CkBA
IC0yNDkzLDEzICsyNTU1LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0dXJuIGRz
dDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJl
Z2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9u
KFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAgIEFTU0VS
VChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93
X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gPSBm
dW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1
bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
KSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogewor
ICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6
IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9
CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNTg2LDE4IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5j
RXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rp
b25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAg
IGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7CisgICAg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBk
c3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykK
IHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3Ig
PSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgIGlm
IChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JU
aGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlzUmVnaXN0ZXIoKSk7CiAg
ICAgCi0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Fycm93X2Z1
bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYyk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjU0MCw2ICsyNjE1LDE5IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQq
IGRzdCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5h
ZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgaWYgKGZ1bmN0aW9u
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkK
KyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UKKyAg
ICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIo
KS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKKyAgICByZXR1
cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVk
RnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0
LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOwpAQCAtMzc2Niw2ICszODU0LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
aXRlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBp
dGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKQoreworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBlbWl0
R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsK
KyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsK
KyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Ip
OworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZh
bHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0eXBl
SXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2Ug
aXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0
KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFi
ZWwoKTsKQEAgLTM4NDIsNCArMzk0OCwyMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IG1lcmdlUG9p
bnQgPSBuZXdMYWJlbCgpOworICAgIHNpemVfdCB5aWVsZFBvaW50SW5kZXggPSBtX2dlbmVyYXRv
clJlc3VtZUxhYmVscy5zaXplKCk7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxk
UG9pbnRJbmRleCk7CisgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlh
bCBzZXF1ZW5jZS4KKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBv
aW50SW5kZXggLSAxOworICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CisgICAgZW1pdFJldHVybihhcmd1bWVudCk7CisgICAgZW1pdFJlc3VtZSht
ZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KQoreworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNp
emUoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVy
Z2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7Cit9CisKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgp
OworICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOworfQor
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50KQoreworICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50KTsKKworICAgIFJlZlB0cjxM
YWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3Rl
cSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQdHI8
TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0
cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBl
bWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRK
dW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8gUmV0
dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0g
Z2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygp
KSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3Bl
UmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdp
c3Rlci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93
TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwor
CisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAg
cmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJl
dmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2aW91cy5nZXQoKSwganNV
bmRlZmluZWQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0b3Ig
PSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHByb3BlcnR5TmFtZXMoKS5p
dGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJn
cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3Rl
cigpLCBhcmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVyYXRvci5nZXQoKSwgaXRl
cmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAg
ICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAg
ZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAgICBlbWl0
SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9v
cFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0
KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBlbWl0WWllbGRQb2ludCh2YWx1ZS5nZXQoKSk7CisKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1v
ZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1
YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkp
KTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5TZXF1
ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1l
dGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRl
cmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwg
cmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVy
bkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5
KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5l
d0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3Vs
dC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRocm93
LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dNZXRob2RO
b3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRo
b2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0
ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRo
cm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmpl
Y3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVND
SUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZE5vdEZvdW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0
KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlM
aXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhv
ZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgor
ICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQo
KSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3VzLmdldCgpLCBub2RlKTsK
KyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJv
cGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQu
Z2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVtaXRMYWJlbChsb29w
RG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5nZXQoKTsKK30KKworCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBz
dGF0ZSkKK3sKKyAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRlKSkpOworICAgIGVtaXRQdXRC
eUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVBy
aXZhdGVOYW1lLCBjb21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0g
bmV3TGFiZWwoKTsKKyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwuZ2V0
KCkpOworICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQoreworICAgIGJlZ2luU3dp
dGNoKHN0YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBT
d2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAg
bV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClb
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dp
dGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVP
ZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwor
ICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7Cisg
ICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXpl
KG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFu
Y2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5n
IHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28K
KyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2Vz
CisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgp
KTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+
YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzhiNjU5YTMzNjg1YmIzYzcyNjQ3ZGNm
YWZiOGQ1ODIwNDIyYmE4Ni4uZGZkMDExYjk0MzJlY2NmMWRkM2NkMzBhN2U1YWU1NTNlODY2Njc3
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBCeXRlY29kZUdlbmVy
YXRvcl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlz
TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4IEBACiAKICAgICAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3Ry
dWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdl
bmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCk7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQog
CiAgICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTI5Nyw2ICszMDAsOCBAQAog
CiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVn
aXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0
dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0
IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyByZXR1cm5lZCBieQogICAg
ICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNl
IGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAg
aXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBAIC00OTksMTAgKzUwNCw4
IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdpc3RlcklEKiBkc3QsIEVs
ZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlv
bkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4
cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1
Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBC
YXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdF
eHAqKTsKIApAQCAtNTk2LDYgKzU5OSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1Vu
ZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlKTsKICAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3Rl
cklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwg
dW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CkBAIC02NDQsMTIgKzY0OCwyOCBAQAogICAg
ICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBl
KTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxM
YWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1p
biwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3Rl
cklEKik7CisgICAgICAgIHZvaWQgZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdFJlc3VtZShMYWJlbCog
bWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICB2
b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdh
dGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsK
KyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQg
ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAgQ29kZVR5cGUg
Y29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBz
aG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2Nyw2ICs2ODcs
NyBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQdXNoRnVu
Y3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkV4cHJl
c3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2Rl
KiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9s
VGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTczMCw3ICs3NTEsNyBAQAogICAgICAgICBSZWdp
c3RlcklEJiByZWdpc3RlckZvcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxs
ZWVSZWdpc3RlcnNbcmVnLnRvTG9jYWwoKV07CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2Fs
bGVlTG9jYWxzW3JlZy50b0xvY2FsKCldOwogCiAgICAgICAgICAgICBpZiAocmVnLm9mZnNldCgp
ID09IEpTU3RhY2s6OkNhbGxlZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdp
c3RlcjsKQEAgLTc1MiwxMiArNzczLDIyIEBACiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25t
ZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoo
dmFyaWFibGVzVW5kZXJURFopOwogCisgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3Ms
IFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSBy
ZW9yZ2FuaXplZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE1NDcKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBtZXRhZGF0YS0+cGFyc2VNb2RlKCk7CiAgICAgICAgICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAgICAg
ICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUpKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lKQorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkg
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYg
bWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQorICAgICAg
ICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7CisKKyAgICAgICAgICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2Rl
ID0gR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhpc01vZGU6OkVt
cHR5OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5j
dGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9u
LCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICByZXR1
cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+
c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5l
cmF0b3JUaGlzTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC03NjUs
NiArNzk2LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIs
IFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGlu
dDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywg
UmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQs
IFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CiAKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1ldGVycyhGdW5j
dGlvblBhcmFtZXRlcnMmKTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplVmFyTGV4aWNhbEVudmly
b25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgICAgICB2b2lkIGluaXRp
YWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soRnVu
Y3Rpb25QYXJhbWV0ZXJzJiwgRnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJp
bmdJbXBsKik+JiBjYXB0dXJlcyk7CiAKQEAgLTgwNCw2ICs4MzYsNyBAQAogICAgICAgICBSZWdp
c3RlcklEKiBtX3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCog
bV9hcmd1bWVudHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9s
ZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogbV9nZW5lcmF0b3JSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCog
bV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
Z2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
bmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC04MTEsNyArODQ0LDcgQEAKIAogICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCosIDE2PiBtX2xvY2FsUmVnaXN0ZXJzRm9y
Q2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQs
IDMyPiBtX2NvbnN0YW50UG9vbFJlZ2lzdGVyczsKLSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJl
Z2lzdGVySUQsIDMyPiBtX2NhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFJlZ2lzdGVySUQsIDMyPiBtX2NhbGxlZUxvY2FsczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFJlZ2lzdGVySUQsIDMyPiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxM
YWJlbCwgMzI+IG1fbGFiZWxzOwogICAgICAgICBMYWJlbFNjb3BlU3RvcmUgbV9sYWJlbFNjb3Bl
czsKQEAgLTgyNyw2ICs4NjAsNyBAQAogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0
Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250
ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1f
dHJ5Q29udGV4dFN0YWNrOworICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50
OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9Owog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25W
YXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25l
ZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDMxMmE4YzdhY2Uw
NDE1NjA4YmQzNzQ3ZGVkYTc4NjhlNWJiZDBmNTIuLjFjZGU2NWQxNDhhOGVjMmI0MjliMTE5NzE3
Y2Y4OGIyYWEzYmIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTQ1
LDcgKzE0Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgIGlm
IChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5lcmF0b3JUaGlz
TW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEsMTYgQEAgUmVnaXN0ZXJJ
RCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJh
c2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0YXRpYyBSZWdpc3Rl
cklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
KQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNr
OjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmpl
Y3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUs
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK3N0YXRp
YyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9t
ZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAgLTI1ODQsNiArMjU4
OSw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgZHN0ID0gMDsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5v
ZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwg
anNVbmRlZmluZWQoKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJl
Z2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxs
eUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CkBAIC0yOTY2
LDI2ICsyOTcyLDk2IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNl
dCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1
cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUo
KSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsK
KyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3Rh
dGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVu
dCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNf
Y2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQo
ZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIg
PSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKKworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAgICAgICBpZiAoZ2VuZXJh
dG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSB7CisgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVl
KGdlbmVyYXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5l
eHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CiAKLSAgICAvLyBDaGVjayBm
b3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBv
ZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRl
bWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0
YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRl
bWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0
YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAg
ICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0
b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4K
KyAgICAgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBK
U0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMr
KyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKworICAgICAg
ICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVy
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBu
ZXh0LmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0
b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lLCBnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIFJl
Z2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051
bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3Iu
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBp
bnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdpc3RlcklEKiBy
MCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkg
OiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0
YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxl
IGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJl
Y3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVu
dCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1
c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAgICAgQVNTRVJUKHN0
YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5n
ZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBn
ZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgeworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3Rl
cSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
ci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodGhyb3dMYWJlbC5n
ZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGdlbmVyYXRvci5nZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKworICAgICAg
ICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1
cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgZGVmYXVsdDogeworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgU3RhdGVtZW50Tm9k
ZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIFJl
dHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworCisgICAgICAgIC8vIENoZWNrIGZvciBhIHJldHVy
biBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xl
IGJsb2NrLgorICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+
aXNCbG9jaygpKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5C
bG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0
ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3Rh
dGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuTm9k
ZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0
aWNhbGx5IGluc2VydCBvbmUuCisgICAgICAgIGlmICghcmV0dXJuTm9kZSkgeworICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgorICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zm
c2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2Fs
bEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIH0KIApAQCAtMzAxMywx
MSArMzA4OSwyNCBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBZaWVs
ZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBzdHViLiBXaGVu
IGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1wbGVtZW50IGl0LgotICAg
IGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50
ZWQgeWV0LiIpKTsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0WWllbGQo
YXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwor
ICAgIH0KKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGVsZWdhdGVZaWVsZChh
cmcuZ2V0KCksIHRoaXMpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TG9hZChkc3Qs
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdl
dCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENsYXNzRGVjbE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDI0ZGJkN2JlMmQ4Nzg2ODVj
ZTE1MGU0NzFlMzViMmE4NzI2ZTY3MjAuLmRhOTQwMzhkNmI5MmJkOGM1ZDU0ZDlkNWY2ZGNhYjA3
YWQ0ODVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAg
ICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpzTnVtYmVyKFBOYU4pKSkKICAgICAg
ICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051bWJlcigxKSkpCiAgICAgICAgICwg
bV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKLSAgICAgICAgLCBt
X251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpCisgICAgICAgICwg
bV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICAgICAsIG1f
cGFyYW1ldGVyU2xvdHMoMCkKICAgICAgICAgLCBtX251bVBhc3NlZFZhckFyZ3MoMCkKICAgICAg
ICAgLCBtX2lubGluZVN0YWNrVG9wKDApCkBAIC0xNDEzLDcgKzE0MTMsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgQ2FsbFZhcgogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAxICsKLSAgICAgICAgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpOworICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2NrLT5t
X251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90IGFyZ3VtZW50UG9zaXRpb25TdGFy
dCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAKQEAgLTI5MjcsNyArMjky
Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgCiAgICAgLy8g
U3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXN0
IGluLXVzZSByZWdpc3Rlci4KICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbCgKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycyAtIDEpLm9mZnNldCgpOworICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAg
ICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOwogICAgIHJlZ2lzdGVyT2Zm
c2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgCkBAIC0zMDk2LDcgKzMw
OTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIAogICAgICAg
ICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhl
IGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMg
LSAxKS5vZmZzZXQoKTsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0
ZXJzOwogICAgICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JB
bGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCmlu
ZGV4IDUxYWM1NWQ0Y2E1ZjllZDQ5OGFiODg5N2M5NmVkMjU5MzMzZDYyODcuLmY1ZjRjYjUyMzgw
ZWRiYjNjOWY4OTcxMDMyMTEwYTA4OGNmZDEyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBmb3JBbGxLaWxsZWRP
cGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5vZGUqIG5vZGVBZnRlciwg
Y29uc3QKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUJlZm9yZSA9IGZ1bGxMaXZl
bmVzcy5nZXRMaXZlbmVzcyhiZWZvcmUuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVBZnRlciA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhhZnRlci5i
eXRlY29kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVM
b2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTsp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FsczsgcmVsYXRpdmVMb2NhbC0tOykgewogICAgICAgICAgICAgaWYgKGxpdmVC
ZWZvcmUuZ2V0KHJlbGF0aXZlTG9jYWwpICYmICFsaXZlQWZ0ZXIuZ2V0KHJlbGF0aXZlTG9jYWwp
KQogICAgICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwocmVsYXRp
dmVMb2NhbCkgKyBzdGFja09mZnNldCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA0Mjg4NzBiMWMyYTI1ODcxNWNkNzE1M2I4ZTc5OWJlYWU5MmM0ZTVm
Li4xOTExY2ZlZWQ2NDE5MDM5NmM4YWU2NWYzYTdlYzQ5NzhhNzY2ZmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03MzgsNyArNzM4LDcgQEAgY2xhc3MgR3JhcGggOiBw
dWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAg
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIGZ1bGxMaXZlbmVzcyA9IGxpdmVuZXNzRm9yKGNvZGVCbG9j
ayk7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGZ1bGxMaXZl
bmVzcy5nZXRMaXZlbmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUluZGV4KTsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0aXZlTG9j
YWwtLTspIHsKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gc3RhY2tPZmZz
ZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXBvcnQgaWYgb3VyIGNhbGxlZSBhbHJl
YWR5IHJlcG9ydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCBlNmM0MjM1ZWM0Y2E2ODE3
Y2QzN2U2OTk4MzQ3ODYwODlmMmI2ZWZhLi41ZTVhMTUwNGMyNGQwNjQwNGY3ODZiMTcyMmUyZjYx
NTBmOGZhYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTMsOCArOTMsOCBAQCBjbGFz
cyBPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIC8v
IFdlJ2QgcmVhbGx5IGxpa2UgdG8gdXNlIGFuIHVuc2V0IG9yaWdpbiwgYnV0IFRocmVhZGVkQ1BT
IHdvbid0IGFsbG93IHRoYXQuCiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gTm9kZU9yaWdp
bihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSk7CiAgICAgICAgIAotICAgICAg
ICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwot
ICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzOyArK2xvY2FsKSB7CisgICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2Vs
aW5lLT5tX251bUNhbGxlZUxvY2Fscyk7CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAgICAgICAgICAg
IE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2Fs
KTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIE9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKKyAgICAgICAg
Zm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fsczsg
Kytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52YXJp
YWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hlYWQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAppbmRleCBiZThlMmE3OTE0OWY1YTJl
MzE0NGFkNDY0YTM1YzY1NGZjNTk5ZTBjLi42MzkyZjE0YTk4MDRjZmI2OTJlODRiYzM5MDEyMGQw
YmFiN2RiZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVFdmVudFN0cmVhbS5jcHAKQEAgLTEyMyw5ICsxMjMsOSBAQCB2b2lkIFZhcmlhYmxlRXZl
bnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlczsK
ICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIG51bVZhcmlhYmxl
cyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBWaXJ0dWFsUmVnaXN0ZXIoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyAxOworICAgICAg
ICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlTG9jYWxzICsgVmlydHVhbFJlZ2lz
dGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpICsg
MTsKICAgICBlbHNlCi0gICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIAogICAgIC8vIENyYXp5IHNwZWNpYWwgY2Fz
ZTogaWYgd2UncmUgYXQgaW5kZXggPT0gMCB0aGVuIHRoaXMgbXVzdCBiZSBhbiBhcmd1bWVudCBj
aGVjawogICAgIC8vIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgYWxsIHZhcmlhYmxlcyBhcmUgYWxy
ZWFkeSBzZXQgdXAuIFRoZSByZWNvdmVyaWVzIHNob3VsZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCmluZGV4IDI5ZjA1ZTUxZDQ2
MWZkZjZlMDE0MzgzMTk5YzkxOGY2NDE1ZThjZWEuLjMwODBkYzM0NTA5YzczMzMyNGI4MTQzZDJh
OTU0ZjA4ZWRhZjEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Rm9yT1NSRW50cnlKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEZvck9TUkVudHJ5SklUQ29kZS5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgRm9yT1NSRW50cnlKSVRD
b2RlKiBGb3JPU1JFbnRyeUpJVENvZGU6OmZ0bEZvck9TUkVudHJ5KCkKICAgICByZXR1cm4gdGhp
czsKIH0KIAotdm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxpemVFbnRyeUJ1ZmZlcihW
TSYgdm0sIHVuc2lnbmVkIG51bUNhbGxlZVJlZ2lzdGVycykKK3ZvaWQgRm9yT1NSRW50cnlKSVRD
b2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25lZCBudW1DYWxsZWVMb2Nh
bHMpCiB7Ci0gICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKG51bUNh
bGxlZVJlZ2lzdGVycyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIG1fZW50cnlCdWZm
ZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVMb2NhbHMgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKaW5kZXggNDRh
ZjhmOTU3OTFhYWE3OGU2ZTgxZGZhNjQ5Yzg2YTE1ZWEzNDQ4MS4uOWFlOTczZjQwZDEyYzE2Yjgw
OWMwYzhjYTFlMzZlYmFhOGVlMzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEZvck9T
UkVudHJ5SklUQ29kZSA6IHB1YmxpYyBGVEw6OkpJVENvZGUgewogICAgIEZvck9TUkVudHJ5SklU
Q29kZSgpOwogICAgIH5Gb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICAKLSAgICB2b2lkIGluaXRp
YWxpemVFbnRyeUJ1ZmZlcihWTSYsIHVuc2lnbmVkIG51bUNhbGxlZVJlZ2lzdGVycyk7CisgICAg
dm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBudW1DYWxsZWVMb2NhbHMp
OwogICAgIFNjcmF0Y2hCdWZmZXIqIGVudHJ5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbnRy
eUJ1ZmZlcjsgfQogICAgIAogICAgIHZvaWQgc2V0Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCB2YWx1
ZSkgeyBtX2J5dGVjb2RlSW5kZXggPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmNwcAppbmRleCBhYzcxNzE0ZjkzZjU1YWYyNjE4YzdlNDIwYTcxYjY2ZGUy
MTE3NjY2Li42MDFiNDYwOTQwNjRhYzYxM2E5OGZhOWMyMjkzODZmYTZlYWRmMDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcApAQCAtODMsNyArODMsNyBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKAot
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxvY2FscygpKSA9PSBiYXNl
bGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlcy5udW1iZXJPZkxvY2FscygpKSA9PSBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOwog
ICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpT
VmFsdWUqPigKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1ZmZlcigpLT5kYXRhQnVmZmVyKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCAwMzA3ZTBlZDA1YzVh
MjU2MWNjNGVmODJiNWFhMmU1ZmZjZjhjMGViLi41NWQ4MjlhMmE2NmI2MjYwOTE1ODRhNzNlMTFk
YmEwM2MyNTZlYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAt
NTYsNyArNTYsNyBAQAogICAgIH0KICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9kZTogewogICAg
ICAgICBSZWZQdHI8Rm9yT1NSRW50cnlKSVRDb2RlPiBjb2RlID0gYWRvcHRSZWYobmV3IEZvck9T
UkVudHJ5SklUQ29kZSgpKTsKLSAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdy
YXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwor
ICAgICAgICBjb2RlLT5pbml0aWFsaXplRW50cnlCdWZmZXIoZ3JhcGgubV92bSwgZ3JhcGgubV9w
cm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgICAgIGNvZGUtPnNldEJ5dGVj
b2RlSW5kZXgoZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGpp
dENvZGUgPSBjb2RlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5YzU3MmViNjFlZWIzOWUz
MGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRlMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYgKzE1NSw3IEBACiAgICAg
ICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNM
aXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCop
OworICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtl
ZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwpA
QCAtMzg4LDcgKzM4OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CiAgICAgICAgIHNpemVf
dCBhdG9tTnVtYmVyID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5OSw3ICs0MDAsMTMgQEAK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9l
bmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBjZWxscyBvdXQgb2YgdGhl
IHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2
b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxs
Kj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFlMTVkMzUyNTZiMDYzNzVj
MGI2ZThhYy4uNjRlNzRjZjY1MGIwMGQ0ODVhODMxY2Q1MjM3MWVjNDJkZDRkZGUyYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAg
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwog
ICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFtZS0+dW5jaGVja2VkUihj
YWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSkuUmVnaXN0ZXI6OnNjb3Bl
KCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2Rl
Q2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNv
dXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNhbGxlclVu
bGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwor
CisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERa
TW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVt
cHR5KQorICAgICAgICB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsKKwor
ICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UpKTsKKyAg
ICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgp
LnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBzb3VyY2VDb2RlLCB0aGlz
VERaTW9kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICBpZiAoIWV2YWwpIHsKICAgICAgICAg
aWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CkBAIC0xNzEsOCArMTgwLDcg
QEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAvLyBJZiB0aGUg
bGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlv
bnMuCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKIAotICAg
ICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
ID8gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrIDogVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7
Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93
KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpLCB0aGlzVERaTW9kZSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAg
ICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxG
cmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0
aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAgICAgICAgIGlmICgh
ZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTQxMCw3
ICs0MTgsNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIH0KICAgICBkYXRhTG9nRigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwog
Ci0gICAgZW5kID0gaXQgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgY29kZUJs
b2NrLT5tX251bVZhcnM7CisgICAgZW5kID0gaXQgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzICsgY29kZUJsb2NrLT5tX251bVZhcnM7CiAgICAgaWYgKGl0ICE9IGVuZCkgewogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSAoKml0KS5qc1ZhbHVlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2MTVmOWE5MmU5YjM0Mzk2ZWQzODhmNzk2
ZDg0NTBkMC4uODc5ZWZiMmJhYjRlMjQwYzdjMTk3NWJiNDZmOWQ0M2Q2NzY0MmVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE0LDYgKzIxNCw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvcHlfcmVzdCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2Vy
dCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERFRklORV9PUChvcF9yZXN1
bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2Rl
bF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI2MCw2ICsyNjIsOCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9u
ZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAg
IERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhwKSAKICAgICAgICAgREVG
SU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQpA
QCAtNzYzLDkgKzc2Nyw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCkKIAogdW5zaWduZWQgSklUOjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tB
bGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVMb2NhbHMpKSk7CiAKLSAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVy
Q291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOworICAgIHJldHVy
biByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lz
dGVycyk7CiB9CiAKIGludCBKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGQyMjU4MjM5ZDJlYjczMDM1MWRk
ZTExNWU2OGE3NWJjYTQ3OWQ0MmQuLmZjYzhmMzA2Njc3ZTc2NmMwZDFmY2E1Mzc4NzQyMjVkYTI1
NjM4ZGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDkzLDYgKzQ5Myw4IEBACiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVj
dGlvbiopOwpAQCAtNTQxLDYgKzU0Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
YXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwpAQCAtNjYwLDYg
KzY2NCw3IEBACiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29s
IGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVk
KTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwog
ICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wg
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ0OTQ4OTY1MGU2ODU0NjU5ZTVhNjBkZTc4
ZTYzM2UxYTUxODM4NWEuLjZlYzE1YmI0NGIzMzQwNWYwZjJjZTIzNzA3ZTQxNTQ2ODNhYjFhYzEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTY3LDcgKzk2
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbV9jb2RlQmxvY2stPnJlZ2V4cChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19mdW5j
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmND
b21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1wIGxhenlK
dW1wOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAt
OTc4LDE0ICs5NzgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2VuZGlmCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworCisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7Cisg
ICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jKQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1Qw
LCBmdW5jRXhlYyk7CisgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19m
dW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNF
eHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5l
d0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdG
dW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJ
bnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAxOCwxMSArMTAzMCwyNyBAQCB2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAj
ZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsKICNlbmRpZgotICAgIGVsc2UKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNf
ZXhwKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0
LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChv
cGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0
aW9uKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkb25lLmxpbmsodGhpcyk7CiB9Ci0gICAgCisK
K3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24p
OworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1
cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJvd19mdW5j
X2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXROZXdGdW5j
RXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTQwNSw2ICsxNDMzLDE4IEBAIHZv
aWQgSklUOjplbWl0X29wX2NvcHlfcmVzdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBkODczYTFkZGQ2NTdhMjg5NjhhMGU1MWY5MDYzNmQxZGUyZmNmODE2Li5j
YWQ5MzQ2OWMxYmNiZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0NDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkpT
QXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgpAQCAtOTg3LDIzICs5ODgsNDIgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUq
IGV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5V2l0aFNpemVR
dWlyayhleGVjLCBwcm9maWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNpemVWYWx1
ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIGJvb2wgaXNJbnZhbGlk
YXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAgIGlmIChpc0ludmFsaWRh
dGVkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRl
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworfQorCitl
eHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNG
dW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsKLSAgICBBU1NFUlQoZnVuY3Rpb25F
eGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICByZXR1cm4g
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5j
dGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
PEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRy
dWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21t
b24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQorRW5j
b2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VS
VChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKQEAgLTEwMTksMTIgKzEwMzks
MTIgQEAgRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUKICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBm
dW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1
cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5j
dGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRy
dWUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFs
c2UpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDk2MzhmMTQ1YzlkNTU3NWYxYzk1MmUyNzVmNTk0YTc2
YjMyYTRiODguLjI1NDI1NTAyMjlkYTQxZTFhZGQ0NmIwYjAyNThlOGU0OTk1YjliNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zMDEsNiArMzAxLDgg
QEAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRK
U1ZhbHVlIHNpemUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRl
eCBhNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4MmNmZTJhNTVhYjc4MGMzLi5mNTkxOGI3MjE3MGFj
NWRlNDdjMmJlZDM2Mzc5NjUzMGUwMTk1NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtMTM0LDkgKzEzNCw5IEBAIHZvaWQgc2V0
RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogCiB1bnNpZ25lZCBmcmFt
ZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSA9PSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKSk7CisgICAg
QVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
KSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpKSk7CiAK
LSAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQo
Y29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsSW5SZWdpc3RlcnMpOworICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZv
ckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzICsgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggNzY1ZjE5Nzk1MGUzMjNmMDU2NmU3MmM3M2I0ZWVkNjNlM2IyMDhjNS4u
MzUxYTRjOGQ0NDJmMmQ2YzY4YzRhOTJjMzJmMTZlYzYwMmRhODI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
U3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTIyNCw5ICsyMjUsOSBA
QCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0gICAgZGF0YUxvZ0YoIiVw
IC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUs
IG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gJXUsIGNhbGxlciA9ICVw
LlxuIiwKKyAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1
dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVMb2Nh
bHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBj
b21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCi0gICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVt
VmFycywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMsCisgICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMsCiAgICAgICAgICAg
ICBleGVjLT5jYWxsZXJGcmFtZSgpKTsKIH0KIApAQCAtNDU4LDcgKzQ1OSw3IEBAIHN0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbios
IENvZGVCbG9jayogY29kCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9n
RigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CiAgICAg
ZGF0YUxvZ0YoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOwotICAgIGRh
dGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAg
ZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJz
KTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDQxLDYgKzEwNDIsMTggQEAgaW5saW5lIEpTVmFs
dWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBz
dWJzY3JpcHQpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJs
b2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAorTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIWNv
ZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFzQWN0aXZhdGlvbigpKTsKKyAg
ICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdp
c3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2dG
KCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10u
dS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTA1Miw2ICsxMDY1LDE3
IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
U2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVy
OjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9j
ay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisKKyAgICBMTElOVF9SRVRVUk4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQogewogICAg
IExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCmluZGV4IGUyNDQ4MjlmZGQxZTJmMTUwNmEzNWQxMGE0ZWI4MWZjYmUzMmM1MzEuLjI3
MTMyNGIxODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFiNDU2NTk1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05OSw2ICs5OSw4IEBACiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7CitMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmOGUxMjhjY2Q5
YTA0YTExYWNmOTkxY2JjMWI1YjIwZDk3Y2FmMDMzLi42MTI2NGQ5ODg1Nzc1NTUzNzEzNWY5YzM0
N2MwMGZiZTNlYWY5ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC02OTcsNyArNjk3LDcgQEAgbWFjcm8gdm1FbnRy
eVJlY29yZChlbnRyeUZyYW1lUG9pbnRlciwgcmVzdWx0UmVnKQogZW5kCiAKIG1hY3JvIGdldEZy
YW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2l6ZSkKLSAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10sIHNpemUKKyAgICBsb2Fk
aSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW2NvZGVCbG9ja10sIHNpemUKICAgICBsc2hp
ZnRwIDMsIHNpemUKICAgICBhZGRwIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLCBzaXpl
CiBlbmQKQEAgLTEyMjcsNiArMTIyNywxMiBAQCBfbGxpbnRfb3BfbmV3X2Z1bmM6CiAgICAgZGlz
cGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJy
YXkpCkBAIC0xNDU4LDYgKzE0NjQsMTEgQEAgX2xsaW50X29wX25ld19mdW5jX2V4cDoKICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCiAgICAgZGlzcGF0Y2go
NCkKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
Y19leHApCisgICAgZGlzcGF0Y2goNCkKKwogX2xsaW50X29wX25ld19hcnJvd19mdW5jX2V4cDoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2Fycm93X2Z1bmNfZXhwKQpAQCAtMTU3Myw2ICsxNTg0LDE4IEBAIF9sbGludF9vcF9hc3Nl
cnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9v
cF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIxNjJlOGRmMTI0
OWY1OTdmODZmNTIyYjcwZTFlOTYwOWJlMDAuLjJiODRjYmFmMzdlZjA0NjBiZGI5MTZkMmJiZGFj
MDJlMGQyYjRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CkBAIC0zNDEsOSArMzQxLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBudWxscHRyLCAvKiBk
ZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHByTm9kZSogY3JlYXRlWWll
bGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3Vt
ZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9v
bCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVu
dCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9k
ZSogY29uc3RydWN0b3IsCkBAIC0zNjQsMTIgKzM2NiwxMiBAQCBjbGFzcyBBU1RCdWlsZGVyIHsK
ICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0
Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVu
YSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAog
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rvcktp
bmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0
b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFy
cm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtODg2LDYgKzg4
OCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAgbm9kZS0+c2V0U3RhcnRP
ZmZzZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNl
KCkgeyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNjb3Bl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZWEzNzYzOTNiNjQ2
N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uNWI2ZGM0OTM4NWRhNzgzNThjMjc5YmMwODAw
YmY4OWEwYTY1NzljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVj
dG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgIFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0g
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1u
KHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2Miwx
MCArMTYyLDExIEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAgICAgICwgbV9wYXJhbWV0
ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAg
ICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCisgICAgICAgICwg
bV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQogICAg
ICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiB7CisgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMGFhMzExZGMxMWQ3ZjhhOGIwMWZlYzdlNDRi
ZGUyMWZhNTc4ZWVjZS4uMGJmMDBiN2JlOTM3Zjc5NzhhNDU2MzczZmFkZTMxZjVjNzVmOWQ3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgxNyw3ICsxODE3LDcgQEAK
ICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291
cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAg
LTE4NDIsOCArMTg0Miw4IEBACiAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICAgICAg
U3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmlu
ZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25l
ZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KQpAQCAtMTg2
OSw4ICsxODY5LDggQEAKICAgICAgICAgaW50IG1fbGFzdExpbmU7CiAgICAgICAgIFNvdXJjZVBh
cnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4
dCA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5z
aWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24gOiAxOwogICAgIH07CiAKQEAgLTE5MzIsNyArMTkzMiw3IEBACiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjg3NGIyN2UzOTA5MDdjOGU0MTQ5ODI2YzM3OWU0MmNm
NTljZTUyYS4uMTYyNWYzZmJlMGUxYjMyM2ZkZmM0NGJlMDE4NGQwYWViYmNmOTEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBACiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigK
ICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwgCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLAog
ICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0
aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJjZSgmc291cmNlKQpAQCAt
MjEwLDYgKzIxMCw3IEBACiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAs
IG1fc291cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW4oYnVpbHRpbk1vZGUg
PT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN1
cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZChkZWZhdWx0Q29uc3Ry
dWN0b3JLaW5kKQogICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9kZSkKIHsKQEAgLTI0OSw3
ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFs
c2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7Cisg
ICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKQor
ICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiAhaGFzRXJyb3Io
KSkgewpAQCAtMjczLDggKzI3NywxMiBAQAogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBw
YXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAg
ICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMg
PSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JT
dHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7CkBAIC0zMDEsNyArMzA5
LDE0IEBACiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRGVjbGFyYXRpb25zID0gc2NvcGUt
PmRlY2xhcmVkVmFyaWFibGVzKCk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhcHR1cmVkVmFy
aWFibGVzKQogICAgICAgICB2YXJEZWNsYXJhdGlvbnMubWFya1ZhcmlhYmxlQXNDYXB0dXJlZChl
bnRyeSk7Ci0gICAgCisKKyAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgc2Nv
cGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBpZiAo
dXNlZFZhcmlhYmxlcy5jb250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1w
bCgpKSkKKyAgICAgICAgICAgIGNvbnRleHQucHJvcGFnYXRlQXJndW1lbnRzVXNlKCk7CisgICAg
fQorCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAg
IGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2Rl
RmVhdHVyZTsKQEAgLTMxMSwxMCArMzI2LDkgQEAKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZp
ZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3VtZW50cykKICAgICAgICAg
ZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCiAgICAgVmVjdG9yPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbikgewotICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7Ci0gICAgICAg
IHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAgICAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8gYWxsb3cgYnVpbHRpbnMg
dG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZh
cmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5nZXQoKSk7CkBAIC00NTgs
NiArNDcyLDQ1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250
ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3sKKyAgICBhdXRvIHNvdXJjZUVsZW1lbnRz
ID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworCisgICAgdW5zaWduZWQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRv
a2VuU3RhcnRQb3NpdGlvbigpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1
bW4oKTsKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQ7CisgICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5z
dGFydE9mZnNldDsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsK
KyAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Cisg
ICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsK
KyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OworICAgIGluZm8uc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVy
YXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQorCisgICAgeworICAgICAgICBBdXRvUG9w
U2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAg
Z2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5lcmF0b3JGdW5jdGlvbkNv
bnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgZmFp
bElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQsIG1v
ZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9yIik7CisgICAgICAgIHBv
cFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxl
SW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNv
bHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5k
aW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUs
IGZhbHNlKTsKKworICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8uZW5k
T2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8uYm9keVN0YXJ0Q29sdW1u
ID0gc3RhcnRDb2x1bW47CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25FeHByKHN0YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1dG8gc3RhdGVtZW50ID0g
Y29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwg
c3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAgY29udGV4dC5hcHBlbmRT
dGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAgICByZXR1cm4gc291cmNl
RWxlbWVudHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIq
JiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQogewogICAgIC8v
IFRoZSBncmFtbWFyIGlzIGRvY3VtZW50ZWQgaGVyZToKQEAgLTE1ODksMTUgKzE2NDIsMTQgQEAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5
KAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQorICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEZ1bmN0
aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gRnVuY3Rpb25C
b2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5VHlwZTsKICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
IHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRv
a2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29u
c3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjA5LDcgKzE2NjEsNyBA
QAogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50
YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNh
bm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50
LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBhcnNl
TW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3Qg
Y2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMTYy
NSw2ICsxNjc3LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgogICAgICAgICByZXR1cm4gImdlbmVyYXRv
ciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToKKyAg
ICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpAQCAtMTcwMyw2ICsxNzU3
LDM3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0
ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdCgpOworCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0
UG9zaXRpb24oKTsKKworICAgIC8vIEBnZW5lcmF0b3IKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5l
cmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworCisgICAgLy8gQGdlbmVyYXRv
clN0YXRlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIo
cGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclZhbHVl
CisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFs
dWVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JW
YWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOworCisgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUK
KyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1
bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKworICAgIHJldHVy
biBwYXJhbWV0ZXJzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWly
ZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29w
ZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVk
U3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBmdW5j
dGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJz
ZU1vZGUobW9kZSkpOwpAQCAtMTgxMywxMiArMTg5OCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAg
ZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7Ci0gICAgICAg
IAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5m
by0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5
cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGNhY2hlZElu
Zm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGNh
Y2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3Bl
LT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIHBv
cFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8p
OwpAQCAtMTgzMiw3ICsxOTE1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51
bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAotICAgICAgICBpZiAoaXNB
cnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8t
PmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlv
bkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTE4NTQsMTQgKzE5Mzcs
MzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25O
YW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRlKCk7Ci0gICAgCi0gICAg
ZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0
aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVu
Y3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1dG8gcGVyZm9ybVBhcnNp
bmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkJvZHko
Y29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGV4
cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1l
dGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2Vu
ZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9k
eVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9k
eSgpOworCisgICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0b3IgaGFzIGEgInVzZSBzdHJpY3QiIGRp
cmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3JhcHBpbmcgaXQgc2hvdWxkIGJlIHN0cmlj
dCBtb2RlLgorICAgICAgICBpZiAgKGdlbmVyYXRvckJvZHlTY29wZS0+c3RyaWN0TW9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3RyaWN0TW9kZSgpOworCisgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2NvcGUtPmhhc0RpcmVjdFN1cGVyKCksICJD
YW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3RvciIpOworICAg
ICAgICBpZiAoZ2VuZXJhdG9yQm9keVNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5kaW5nID09IFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBh
IGRlcml2ZWQgY2xhc3MiKTsKKworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUs
IFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0gZWxzZQorICAgICAg
ICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAgICAg
CiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbklu
Zm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJv
ZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0
cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwg
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+
cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5j
dGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFt
ZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2Rl
Iik7CiAgICAgfQpAQCAtMTkyOSw3ICsyMDMxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYg
RU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJz
ZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgog
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5lZWRz
TmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rp
b24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRl
bWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA4MCw3ICsyMTgyLDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAgICAgICAgICAgICAg
ICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlwZSciKTsKICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2Nv
bnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjczMSw3ICsyODMzLDcgQEAgc3RydWN0
IExhYmVsSW5mbyB7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3NpZmllciBjbGFzc2lmaWVyKHRo
aXMpOwogCiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQotICAgIGlmIChtYXRjaChZSUVMRCkp
CisgICAgaWYgKG1hdGNoKFlJRUxEKSAmJiAhaXNZSUVMRE1hc2tlZEFzSURFTlQoY3VycmVudFNj
b3BlKCktPmlzR2VuZXJhdG9yKCkpKQogICAgICAgICByZXR1cm4gcGFyc2VZaWVsZEV4cHJlc3Np
b24oY29udGV4dCk7CiAjZW5kaWYKIApAQCAtMjgzNiw2ICsyOTM4LDcgQEAgc3RydWN0IExhYmVs
SW5mbyB7CiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQaGFzZSA9PSBGdW5jdGlvblBh
cnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gd2l0aGlu
IHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50
ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAtMjg0MywxMyArMjk0NiwxNCBA
QCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQo
bG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0ZSA9IGNvbnN1bWUoVElNRVMpOworICAgIEpT
VGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBU
cmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQ
b2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWll
bGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2Nh
dGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVs
ZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZvdFN0YXJ0LCBhcmd1bWVudFN0YXJ0
LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KQEAgLTMwNDEsNyArMzE0NSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNV
bmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2NhdGlvbiBtZXRob2RMb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0ID0gdG9rZW5T
dGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsK
LSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CisgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIG1l
dGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMyOTQsNyArMzM5OCw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2Vu
KQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1
bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwg
IkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTdiMGU4MWFlYTFkODljNGZlYzk0NDc1N2M3ZjQ5
NWVjNTA0NzczZS4uNzI1OWE1ZDQ3NTU2ZjQwNTNhNDBhYTNlYzM0MzU5ZTk2NzkzOGM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzIsNiArMTcyLDcgQEAgc3Ry
dWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKGZhbHNlKQogICAgICAgICAs
IG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1v
ZGUodHJ1ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAgICAgLCBtX2xv
b3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkKICAgICB7CkBAIC0xOTIsNiAr
MTkzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKHJocy5t
X2lzTGV4aWNhbFNjb3BlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5tX2lz
RnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHJocy5tX2lz
VmFsaWRTdHJpY3RNb2RlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRzKHJocy5tX2hhc0FyZ3Vt
ZW50cykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29wRGVwdGgpCiAgICAgICAgICwg
bV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAgICAgLCBtX21vZHVsZVNjb3Bl
RGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC0yNDYsNiArMjQ4LDEwIEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgYnJlYWs7
CiAKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToK
KyAgICAgICAgICAgIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAg
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKQEAgLTI2OCw2ICsyNzQsOCBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1
bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzR2VuZXJhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0dlbmVyYXRvcjsgfQogCisgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2hhc0FyZ3VtZW50czsgfQorCiAgICAgdm9pZCBzZXRJc0xleGljYWxTY29wZSgpIAogICAg
IHsgCiAgICAgICAgIG1faXNMZXhpY2FsU2NvcGUgPSB0cnVlOwpAQCAtNDUwLDE2ICs0NTgsMjAg
QEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwgPSB0cnVlOwogCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG5lc3RlZFNj
b3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKElkZW50aWZpZXJT
ZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1f
ZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNh
bFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgIGZvciAoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgaW1wbCA6IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1fZGVjbGFyZWRWYXJpYWJsZXMu
Y29udGFpbnMoaW1wbCkgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlu
cyhpbXBsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAg
ICAvLyAiYXJndW1lbnRzIiByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlc29sdmVkIGF0IGZ1bmN0aW9u
IGJvdWRhcnkuCisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5pc0Z1bmN0aW9uQm91
bmRhcnkoKSAmJiBuZXN0ZWRTY29wZS0+aGFzQXJndW1lbnRzKCkgJiYgaW1wbCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKCpwdHIpOworCisgICAg
ICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgICAgICAv
LyBXZSBkb24ndCB3YW50IGEgZGVjbGFyZWQgdmFyaWFibGUgdGhhdCBpcyB1c2VkIGluIGFuIGlu
bmVyIHNjb3BlIHRvIGJlIHRob3VnaHQgb2YgYXMgY2FwdHVyZWQgaWYKICAgICAgICAgICAgICAg
ICAvLyB0aGF0IGlubmVyIHNjb3BlIGlzIGJvdGggYSBsZXhpY2FsIHNjb3BlIGFuZCBub3QgYSBm
dW5jdGlvbi4gT25seSBpbm5lciBmdW5jdGlvbnMgYW5kICJjYXRjaCIgCiAgICAgICAgICAgICAg
ICAgLy8gc3RhdGVtZW50cyBjYW4gY2F1c2UgdmFyaWFibGVzIHRvIGJlIGNhcHR1cmVkLgogICAg
ICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcyAmJiAobmVzdGVkU2Nv
cGUtPm1faXNGdW5jdGlvbkJvdW5kYXJ5IHx8ICFuZXN0ZWRTY29wZS0+bV9pc0xleGljYWxTY29w
ZSkpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZCgq
cHRyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZXMuYWRk
KGltcGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFByb3BhZ2F0ZSBj
bG9zZWQgdmFyaWFibGUgY2FuZGlkYXRlcyBkb3dud2FyZHMgd2l0aGluIHRoZSBzYW1lIGZ1bmN0
aW9uLgpAQCAtNTUwLDE0ICs1NjIsMjIgQEAgc3RydWN0IFNjb3BlIHsKICAgICB7CiAgICAgICAg
IG1faXNGdW5jdGlvbiA9IHRydWU7CiAgICAgICAgIG1faXNGdW5jdGlvbkJvdW5kYXJ5ID0gdHJ1
ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAgICBzZXRJc0xleGljYWxT
Y29wZSgpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFsc2U7CiAgICAgfQogCisgICAgdm9p
ZCBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHNldElzRnVuY3Rpb24o
KTsKKyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgfQorCiAgICAgdm9pZCBzZXRJ
c0dlbmVyYXRvcigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CiAgICAgICAgIG1f
aXNHZW5lcmF0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IGZhbHNlOwogICAg
IH0KIAogICAgIHZvaWQgc2V0SXNNb2R1bGUoKQpAQCAtNTc5LDYgKzU5OSw3IEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgYm9vbCBtX2lzTGV4aWNhbFNjb3BlIDogMTsKICAgICBib29sIG1faXNGdW5j
dGlvbkJvdW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0cmljdE1vZGUgOiAxOworICAg
IGJvb2wgbV9oYXNBcmd1bWVudHMgOiAxOwogICAgIGludCBtX2xvb3BEZXB0aDsKICAgICBpbnQg
bV9zd2l0Y2hEZXB0aDsKIApAQCAtNjI3LDcgKzY0OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAKIHB1
YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFy
c2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLAorICAg
ICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNl
clN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLAogICAgICAgICBDb25z
dHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCk7CiAgICAgflBhcnNl
cigpOwogCkBAIC0xMTUwLDYgKzExNzEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIH0KIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9y
RnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3Rh
dGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZl
LCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwg
Y29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhw
b3J0ZWQgfTsKQEAgLTExOTAsNyArMTIxMiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVlQnVp
bGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5lcmF0b3IpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0dGVyU2V0dGVyKFRy
ZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSwgdW5zaWduZWQgZ2V0
dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCk7Ci0gICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkg
cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
QUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWls
ZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVGb3JtYWxQYXJh
bWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4
dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyaWFibGVEZWNsYXJh
dGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwg
SlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpT
VGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0LCBEZWNsYXJh
dGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERvZXNOb3RIYXZlSW5pdGlh
bGl6ZXIpOwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9v
bCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcs
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVl
QnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAK
QEAgLTEzNDAsNiArMTM2Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3Vy
Y2VFbGVtZW50czsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CisgICAgU3VwZXJCaW5kaW5n
IG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2luZCBtX2RlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQ7CiAgICAgVGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsKICAgICBWYXJpYWJsZUVudmly
b25tZW50IG1fdmFyRGVjbGFyYXRpb25zOwpAQCAtMTQ2Myw3ICsxNDg3LDcgQEAgY2xhc3MgUGFy
c2VyIHsKIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBWTSogdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAorICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAogICAgIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCkBAIC0xNDcyLDcg
KzE0OTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIo
KS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNl
KCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFy
c2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVy
QmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFy
c2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE0ODUsNyArMTUwOSw3IEBAIGNs
YXNzIFBhcnNlciB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQg
YWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUs
IHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2Vk
Tm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0OWVhMjliZDcxNTUyOGJl
ODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjljYjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00Nyw2ICs0Nyw3IEBACiBl
bnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVuY3Rpb25Nb2RlLAogICAg
IEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2RlLAogICAgIEdldHRlck1v
ZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAtNjEsNiArNjIsNyBAQCBp
bmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
CiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBA
IC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRl
ck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CkBAIC0xMDQsNiAr
MTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNDlhN2UxNzNiMjUw
MGRhZmI1Zjg0YWE0YzJlNmY0MTY2NDlkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtMCwwICsxLDk4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU291
cmNlQ29kZUtleV9oCisjZGVmaW5lIFNvdXJjZUNvZGVLZXlfaAorCisjaW5jbHVkZSAiUGFyc2Vy
TW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFp
dHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNvdXJjZUNvZGVLZXkgeworcHVibGlj
OgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlw
ZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisgICAgeworICAgIH0KKwor
ICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgICAgIDogbV9zb3VyY2VDb2Rl
KHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9mbGFncygo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpY3RN
b2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCisgICAgICAg
ICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQorICAgIHsKKyAgICB9CisKKyAgICBT
b3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBt
X3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKwor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KKworICAgIC8vIFRvIHNhdmUgbWVt
b3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQg
c291cmNlCisgICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlz
IGVmZmljaWVudC4KKyAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VD
b2RlLnRvU3RyaW5nKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2Rl
S2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIu
bV9oYXNoCisgICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQorICAgICAg
ICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCisgICAgICAgICAgICAmJiBtX25hbWUg
PT0gb3RoZXIubV9uYW1lCisgICAgICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmco
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CisgICAg
U3RyaW5nIG1fbmFtZTsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworICAgIHVuc2lnbmVkIG1faGFz
aDsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Cisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNl
Q29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3N0cnVjdCBTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwor
ICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VD
b2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9Cit9OworCit9CisKKyNl
bmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKaW5kZXggOTU1MzZjM2M3NTY3MjI3MzUxYmM2OTA3MTgyZWQ1M2FiNmM3
MTkxYi4uM2UwYzMwZmQxZDI1MTg2MjM1ZTJkYjAzODQ0MTRjNjFmODE1N2I4MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVt
cHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVF
bXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
WWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWllbGRFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Np
b24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0
aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2ws
IGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVy
QmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rp
b25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRh
eENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlv
bk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0
dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMzg1LDYgKzM4NSw4IEBAIGNsYXNzIFN5bnRheENo
ZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBz
ZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAKKyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3RvcEJpbmFyeUV4cHI7CiAgICAgaW50
IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5Y2RjN2NiZWRmMGUuLjQ5
NDUyMGRiZGY0MjhjODY0MGRiNWUyMjNmMDBlMjFmMmZlY2ZmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBF
eGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291
cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBDYWNo
ZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZXJyb3IsIG51bGxwdHIs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOworICAgICAgICBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsK
ICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTYwLDcg
KzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0
aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLAor
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yLCAmcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC0xODgsNyArMTg4LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJv
bUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkg
aGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1
bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlU
RFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNl
LCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
Q29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVz
KTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNl
Q29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKaW5kZXggNDhjOGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4ODExMWUxNjkzNmJkNy4u
OWI4YzE1MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNp
bmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTU2LDcxICs1Nyw2IEBACiBjbGFzcyBTb3VyY2VDb2Rl
OwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNvZGVLZXkgewotcHVibGlj
OgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlw
ZSwgTW9kdWxlVHlwZSB9OwotCi0gICAgU291cmNlQ29kZUtleSgpCi0gICAgewotICAgIH0KLQot
ICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCi0gICAgICAgIDogbV9z
b3VyY2VDb2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwg
bV9mbGFncygKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8
IDMpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8
IDIpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwg
MSkKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNURFpNb2RlKSkKLSAg
ICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0gICAgewotICAgIH0KLQot
ICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAg
ICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQotCi0gICAgLy8gVG8gc2F2
ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQuIEl0J3MgZXhwZWN0ZWQg
dGhhdCBzb3VyY2UKLSAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIgc3RyaW5ncyB0byBtYWtl
IHRoaXMgZWZmaWNpZW50LgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUNvZGUudG9TdHJpbmcoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaCA9PSBv
dGhlci5tX2hhc2gKLSAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90aGVyLmxlbmd0aCgpCi0g
ICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKLSAgICAgICAgICAgICYmIG1f
bmFtZSA9PSBvdGhlci5tX25hbWUKLSAgICAgICAgICAgICYmIHN0cmluZygpID09IG90aGVyLnN0
cmluZygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsK
LSAgICBTdHJpbmcgbV9uYW1lOwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7Ci0gICAgdW5zaWduZWQg
bV9oYXNoOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5JiBhLCBjb25zdCBT
b3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IFNv
dXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNvdXJjZUNvZGVL
ZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRy
dWU7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJjZUNvZGVLZXkmIHNv
dXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7IH0KLX07Ci0KIHN0
cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1ZSgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggNGNmNjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNiMS4uZGUwN2YxYzUxYjU1
MTJkY2NhYjliMDI0OGYzZmQ4MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2ICszOSw3IEBACiAgICAg
bWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlv
bikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkp
IFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApAQCAtMzI5LDYgKzMzMCwx
MyBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5KSBc
CiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yKSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvclN0YXRlKSBcCisgICAg
bWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgXAorICAg
IG1hY3JvKGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JSZXN1bWVNb2RlKSBc
CiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA5MGY2NWMyNGQ2MzJiNjIxMDg5ZGU1YzFiYmQ0
OTY0ZDQ0OTY0MzkxLi5jNjdjYzcwMjExOWQ3Mzg4M2RkY2U3MWRmNzM5ZTJkYWJjNmI3NzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9y
SGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjQ0LDYg
KzY0NSwzOCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0YSogc2V0dXBB
cml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVORCgpOwogfQogCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVz
IGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRl
ZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1
c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBh
cmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisgICAgQkVHSU4oKTsKKyAg
ICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKKyAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5l
cmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJh
bWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAg
ICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKKyAgICAgICAg
YXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVj
dChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQ
cml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgZnJhbWUtPnNhdmUoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5q
c1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSkpOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
KTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdm
M2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdk
ZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQ
YXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Nh
dmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2Ri
YTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRhODJmODFmMGZjOTc5YmNk
YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApA
QCAtNjMsNyArNjMsNyBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsK
IH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMsNyArNzMsNyBAQCBib29s
IGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxN
b2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7Cisg
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmICgh
bW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4MzY1MjkyZDU3YmM5ZGVj
MDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFm
ZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3
Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxp
bmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2Us
IGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgCi0gICAgICAgICAgICBl
eGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLT5w
YXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSgpLCAKQEAg
LTU1Niw3ICs1NTYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwg
bV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEw
NC4uNzViMzA5MWNmODFjNzI5NmZlMmZhZmU5YTk2NzY1MzYyOTk3ODJmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNs
YXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
ICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2Vu
ZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAg
IHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBA
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
ewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNl
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlvbk1vZGUg
ZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9k
ZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAg
ICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
KCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9
CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKKyAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
OyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJl
NDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uNWQ3ZWYzNzY2YWMwZDY5YjM1
NTQ2YWY3ZTc5MWNlOTQ5YmI0MmQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBD
YWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3Rv
cgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmll
ciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNv
bnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2Fn
ZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBv
c2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwg
cG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwogfQogCiBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdz
LCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCAKLSAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVM
aW5lTnVtYmVyKQorICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlk
ZUxpbmVOdW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUpCiB7CiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVz
IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsK
ICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7
ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAg
ICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBm
dW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5z
aXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBm
dW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkg
e1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CiAg
ICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChmdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5j
dGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsK
QEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1
Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywg
U3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlv
bigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuaAppbmRleCAyMmVjYjU3YjkzZjY5YmZjOWY4YjFiMzA2ZmI0YzQyYTBhNjdkMmUzLi5kMTFm
YjJhMzc0ZDYxOTE1MGM5ZDZjNDI2MjliYTkxY2MxMjA1ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01NiwxMiAr
NTYsMTcgQEAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOwotSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYpOworZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgeworICAg
IEZ1bmN0aW9uLAorICAgIEdlbmVyYXRvciwKK307CisKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBX
VEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOwogCiBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFi
bGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
JiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4
dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsKKyAgICBjb25zdCBTdHJp
bmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAt
MSwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpG
dW5jdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2ZWE3YTEwMDI1
OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSGVhcEl0
ZXJhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CisKK0dl
bmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgp
KQorICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKK3sK
K30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKKyAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwor
fQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitHZW5lcmF0b3JG
cmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2Fs
cykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAg
ICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+
KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCisgICAg
ICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7CisgICAgcmVzdWx0LT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBHZW5lcmF0b3JG
cmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVMb2NhbHMpCit7CisgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCisgICAgLy8gRXZl
cnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNo
b3VsZCBiZSByZXBsYWNlZC4KKyAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkg
PD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNo
U2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXgpKS5qc1ZhbHVlKCkpOworICAgIH0pOworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpy
ZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YWxzKQoreworICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCisgICAgLy8gRXZlcnkg
dGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3Vs
ZCBiZSByZXBsYWNlZC4KKyAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNp
emVfdCBpbmRleCkgeworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKKyAgICAgICAgbG9jYWxBdChp
bmRleCkuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdlbmVy
YXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAvLyBTaW5j
ZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNh
ZmVseSBtYXJrIHRoZW0uCisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9j
YWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKKworI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6
U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5k
aWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2Fscygp
KTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOworICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOworICAgIH0KKworICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9m
KEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKKyAgICB7CisgICAgICAgIHJl
dHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZv
aWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxv
Y2FsczsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjhmNTg5MzFmYzU1MjBhNWMyMjAxNWUyNWY3MDJhN2Q2ZTA5Nzll
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZv
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5jdGlvbiIpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVy
bmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9u
KGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAg
ICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNiOWE1NmM0ZDk3MjNlM2Y4
MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKyNkZWZp
bmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1
bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBvc2l0aW9uOworfQorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisKK2Ns
YXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBz
dGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUzMWJkMzExYjkyZTQyNzQ3
NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
OworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9
IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsKKworR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7
Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5MjY5OWMzMTM1Nzc2ZTFm
NzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVf
aAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZh
dGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5NzE3NGNhZTZhZDQ2NjQ3
YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvclByb3RvdHlwZTo6c19p
bmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVyYXRvclByb3RvdHlwZVRh
YmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlwZSkgfTsKKworLyogU291
cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBnZW5lcmF0b3JQcm90b3R5
cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
cmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRocm93ICAgICBK
U0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwordm9pZCBHZW5lcmF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJv
bCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAg
IHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9y
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBnZW5lcmF0b3JQ
cm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRv
clByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdlbmVyYXRvclByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9y
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2YXRlOgorICAgIEdlbmVy
YXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVyYXRvclByb3RvdHlwZV9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhp
c01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXNNb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGMwM2U3YjAyMmYxYzY2OWQzOTdhOWI3N2I1ZWYyNGU5NWY1MjA2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clRoaXNNb2RlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEdlbmVyYXRvclRoaXNNb2RlX2gKKyNkZWZpbmUgR2VuZXJhdG9yVGhpc01vZGVfaAorCituYW1l
c3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVj
dC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5l
cmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVk
Ii4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDku
Mi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVu
IHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8vCisvLyAgICAgZnVuY3Rpb24gKmdlbigpCisv
LyAgICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8v
ICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBn
bG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyAgICAgeworLy8g
ICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBz
aG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8vICAgICAgICAgZy5uZXh0
KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3Rh
dGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0
IHJldHVybnMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlvbiBoYXMgR2VuZXJhdG9yVGhpc01vZGU6
OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBU
RFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0gY2xhc3MgR2VuZXJhdG9yVGhpc01vZGUg
OiB1bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9uRW1wdHkKK307CisKK30KKworI2VuZGlm
IC8vIEdlbmVyYXRvclRoaXNNb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAyZGIwM2U2NGViNDY5MGZh
ZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRhMmUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wg
SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBudWxscHRy
OworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAg
ICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwor
CiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRo
aXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0Y2JjZTAyZDY2MjkwNWUw
ZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVyYXRvckZ1bmN0aW9uOjpK
U0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29w
ZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpCit7Cit9CisK
K0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorewor
ICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVhcCkpIEpTR2VuZXJhdG9y
RnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NFUlQoZ2VuZXJhdG9yRnVu
Y3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgZ2VuZXJhdG9yRnVuY3Rp
b24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9
CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7Cisg
ICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZt
LCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24o
KS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxsb2NhdGluZyBhIGdlbmVy
YXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNH
ZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4
ZWN1dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmYxMDcyYTUyMTY1ZGQxN2RlZTA5NjdkZWU3YjhhZTQ4OTBmMmQ0NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
aApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHZW5lcmF0
b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTEludERlc2lyZWRPZmZzZXRz
OworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24geworICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNz
IERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7
CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1
bmN0aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQz
Ml90IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJldHVybk1vZGUgPSAxLAor
ICAgICAgICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGUoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVy
biBzaXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbihWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzcxZTRlYTA2
ZTM4NjU1YWM1YTcwYmFhZGFmNzQwMmE3N2JjMGY1OS4uZDdmMTE2ZGM0ZmRkYzdlMWQwNmUwNzk2
YjllODE5MmVjY2E4YjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2luY2x1ZGUgIkVycm9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgog
I2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJB
VE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAg
IG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5
cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAK
ICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIApAQCAt
NDIwLDYgKzQyNSwxNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBt
X3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJvciIpKSk7CiAgICAgbV90
eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90
eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7CiAgICAgbV9VUklFcnJv
ckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1
Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAgbV9nZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7Cisg
ICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9y
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSkpOworCisgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBEb250RW51
bSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3Is
IERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKQEAgLTU1MSw2ICs1NjQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFtZSgp
LCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNl
UHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
UHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0s
IHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2VuZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVz
dW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9B
UlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtODE4LDYgKzgzMiw4IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheVByb3Rv
dHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JQcm90b3R5cGUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90
eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CkBAIC04NTAsNiArODY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9i
amVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2NjNzgxODkzYjg0ZDg1MTA0
Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDYgKzYzLDgg
QEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwog
Y2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CitjbGFz
cyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNz
IEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtMjI5LDYgKzIzMSw4IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFByb3RvdHlwZTsKICAgICBX
cml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQcm90b3R5cGU7CisgICAg
V3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2Vu
ZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dl
clNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3Bl
U3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVu
Y3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5h
bWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CkBAIC00NTMs
NiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBl
KiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvclByb3RvdHlw
ZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5
cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0
cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dl
bmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNw
cAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3YjUwNjNhLi4zN2I4YWZj
NzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTI4MSw3ICsy
ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBh
cnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFy
c2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZp
ZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVy
cm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBl
cnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29k
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUxMzVmNDBkMTBkNmYw
MDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0ZjM3ZjE5NTdkYmVlMjhl
ZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDQsNiArMjQ1LDcgQEAg
c3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFi
bGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJy
ZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJy
ZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBjZWQzMTk0MDg5MDA2YmYz
ZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMyZjQzYjUyN2ExYmZhNzlm
Mjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMwNCw2ICszMDQs
NyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBm
dW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4
N2Q0ZTY0YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3MjE0OTY5NGMzMmQyOGI0
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzE5LDcgKzcxOSw3IEBA
CiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hh
aW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRo
b2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9k
c19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2luc3RhbmNlc19vZl9n
ZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcyNyw3IEBACiAtIHBhdGg6IGVzNi9BcnJh
eV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBy
dW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21f
bWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNf
QXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFw
X2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1Myw3ICs3NTMsNyBAQAog
LSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwogICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9pbnN0YW5jZXNfb2ZfZ2Vu
ZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMsNyBAQAogLSBwYXRoOiBlczYvZm9yLi5v
Zl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mb3Iu
Lm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21kOiBydW5FUzYgOmZhaWwK
IC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVy
YWJsZXMuanMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1l
X3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclBy
b3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUudGhyb3cu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY2FudF91c2Vf
dGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3Jz
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnNfY2xhc3Nlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfZ2VuZXJhdG9yX2Z1
bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3No
b3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0
b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtleWVkX3Nob3J0aGFuZF9n
ZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXJyYXlzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJp
Y19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJs
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJvci5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3RyaW5n
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2UuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvTWFwX2l0ZXJhdG9y
X2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L01hcF9NYXBbU3lt
Ym9sLnNwZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogLSBwYXRoOiBlczYvc3ByZWFk
Xy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2luX2Z1bmN0aW9uX2NhbGxz
LmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9y
X3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRv
cl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZh
aWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmljX2l0ZXJhYmxl
c19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQyM2U4Y2FlNTI3YWFhNC4u
OWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJp
Y19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTEsMyArMSwyNCBAQAor
aWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsK
K30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRo
b2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8
ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFy
IGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTog
YXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzog
bWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIg
aXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyBy
ZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgp
IHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9yKCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKaW5kZXgg
YjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4uODE2N2RhNTJkZjZmZDFl
YThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxl
cy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0
eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9Citm
dW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9
IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3lt
Ym9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVy
YXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5z
aGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhv
ZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJh
YmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJu
IGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAK
IHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZmNjgyZjVhMTZjYWI5ZThi
NWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUyOTQzNDNmOWFjODhmZjhl
YTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2lu
Zy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcp
IHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVj
dChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBT
eW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307
Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAw
IH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0
aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0
ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxl
OworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gJyc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
dGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93Lmpz
CmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0YTA0ZDQuLjFmNDdkMzI4
YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCkBAIC0xLDMg
KzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2Jh
bCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9k
cykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1
bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5n
dGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAg
J3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdydd
Cit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVu
Y3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0
aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0
aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJn
dW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNkOWE3ZTE4ODM3MDcwY2Fl
ZThkZjhiY2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCkBA
IC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJyYXko
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKGFjdHVhbC5sZW5ndGgsIGV4cGVjdGVk
Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoYWN0dWFsW2ldLCBleHBlY3Rl
ZFtpXSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcHJpbnQoSlNPTi5zdHJp
bmdpZnkoYWN0dWFsKSk7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQor
fQorCisKK2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7
Cit9CisKK2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQo
KTsKK3Nob3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIyNjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMuanMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBn
MSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcy
KGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAg
ICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFy
IGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
NDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFs
dWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjo0MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisg
ICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAg
ZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBh
ID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQg
YjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7
IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIx
IjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9
KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAq
ZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAg
IGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVs
ZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1t
ZXRob2RzLXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNj
cmlwdCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChl
cnJvcikgeworICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7Cisg
ICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0
aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0
U3ludGF4RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3RvcigpCisgICAgewor
ICAgIH0KK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFt
ZWQgJ2NvbnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAg
Km9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOworCit0ZXN0U3lu
dGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlp
ZWxkIDQyOworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjFmNWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNz
LW1ldGhvZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KKworY2xhc3MgQSB7CisgICAgKmdlbigpCisgICAgeworICAgICAgICB5aWVs
ZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQor
CisgICAgc3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAg
ICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBs
ZXQgYSA9IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0
cnVlKTsKK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9
CisKK3sKKyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUp
OworfQoreworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5z
dGF0aWNHZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIp
OworfQorCit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5l
eHQoKS52YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZh
bCgndGhpcycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBC
IHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICByZXR1cm4gZXZhbCgndGhpcycp
OworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKwor
Y2xhc3MgQyB7CisgICAgKmdlbmVyYXRvcigpCisgICAgeworICAgICAgICB5aWVsZCBldmFsKCd0
aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBg
VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3
IGMuZ2VuZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIGMpOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xv
YmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBn
bG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxk
QmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3No
b3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9y
LCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1mdW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sg
PSBmdW5jdGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2
YXIgZyA9IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRo
LW5vbi1nZW5lcmF0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTYxZDkz
MDc2MGQyMGVlNmVmNGNlNTcwM2VmNzNiOWZmOWFlNTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5v
bi1nZW5lcmF0b3IuanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qg
dGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwor
ZnVuY3Rpb24gKmdlbigpIHsKK30KK3ZhciBnID0gZ2VuKCk7CisKK3Nob3VsZFRocm93KCgpID0+
IHsKKyAgICBnLm5leHQuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJl
IGEgZ2VuZXJhdG9yYCk7CisKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcudGhyb3cuY2Fs
bCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnJldHVybi5jYWxsKHt9KTsKK30sIGBUeXBlRXJy
b3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZmE0ZGM4Y2UwNzZjNzMxYzQyNGE4ODVmYjM4ZTM1N2U0OTNmZmY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cmVsYXRpb25zLmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAqZ2VuZXJh
dG9yRnVuY3Rpb24oKSB7Cit9CitsZXQgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yRnVuY3Rpb24oKTsK
Kworc2hvdWxkQmUoZ2VuZXJhdG9yIGluc3RhbmNlb2YgZ2VuZXJhdG9yRnVuY3Rpb24sIHRydWUp
Oworc2hvdWxkQmUodHlwZW9mIGdlbmVyYXRvci5fX3Byb3RvX18sICdvYmplY3QnKTsKK3Nob3Vs
ZEJlKGdlbmVyYXRvci5fX3Byb3RvX18sIGdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSk7CisK
K2xldCBHZW5lcmF0b3JQcm90b3R5cGUgPSBnZW5lcmF0b3IuX19wcm90b19fLl9fcHJvdG9fXzsK
KworbGV0IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlID0gZ2VuZXJhdG9yRnVuY3Rpb24uX19w
cm90b19fOworbGV0IEdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yRnVuY3Rpb24uX19wcm90
b19fLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlLCBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbiBp
bnN0YW5jZW9mIEdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1
bmN0aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuX19wcm90b19fLCBGdW5jdGlvbi5wcm90b3R5cGUpOworCitzaG91bGRCZShHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUsIEdlbmVyYXRvclByb3RvdHlwZSk7Citz
aG91bGRCZShHZW5lcmF0b3JQcm90b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKTsKKworbGV0IGFycmF5SXRlcmF0b3IgPSBbXVtTeW1ib2wuaXRlcmF0b3JdKCk7
CitsZXQgQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGFycmF5SXRlcmF0b3IuX19wcm90b19fOwor
bGV0IEl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5fX3Byb3RvX187
CisKK3Nob3VsZEJlKEl0ZXJhdG9yUHJvdG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUuX19wcm90
b19fKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMDk2YTIxN2Y3MmM4N2MwODk4ZTU5MDlhYmFmMzg1YmYyMDg5OTM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHVu
cmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9u
ICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitnLnJl
dHVybigiSGVsbG8iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MGFmNmUwNzg5ZGMxOGJiYWQzYTBh
ZmJiZjVhZDlhODVlYzEzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIg
ZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0g
dHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVy
cm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJv
cjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisKK3ZhciBnbG9iYWwgPSBuZXcgRnVuY3Rpb24o
J3JldHVybiB0aGlzJykoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkg
eworICAgICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBn
ZW4oKTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGdsb2JhbCk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgewor
ICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRo
aXNPYmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7
CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgewor
ICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgdW5kZWZpbmVkKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAg
ICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAg
ICAgIGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0
LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10
aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDZjYjRmOTdlZTEwYzM4NTA2
ZTE4ZWFjMGQ5YTNlNDE4NzllZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMK
QEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5l
dyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUo
KTsKK30KKwordmFyIGcgPSBnZW4oKTsKK3ZhciBlcnJvciA9IG5ldyBFcnJvcigiT0siKTsKK3Zh
ciB0aHJvd24gPSBudWxsOwordHJ5IHsKKyAgICBnLnRocm93KGVycm9yKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICB0aHJvd24gPSBlOworfQoraWYgKHRocm93biAhPT0gZXJyb3IpCisgICAgdW5yZWFj
aGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDNiMmRm
OTlhODQ4MGNiMzVhN2RkNmIzNGU2NjI1MzZlYWI4ZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0
LmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB5
aWVsZCBuZXcudGFyZ2V0OworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIHVuZGVmaW5lZCk7CisKK3ZhciBnMiA9IG5ldyBnZW4oKTsKK3Nob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1
M2M3OTE3MzhlY2Y4YjlkMzQ5ODM1ZWE4M2JmOGQ2Yzg5NzdiYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIu
anMKQEAgLTAsMCArMSw4MiBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNz
YWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVs
bDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYg
KCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7Cisg
ICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIGV2YWwo
J3N1cGVyJyk7CisgICAgfQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4gdGVzdCgpLCBgU3ludGF4
RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAg
ICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBC
IHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzdXBlci5nZW4o
KScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgYS5nZW4oKS5uZXh0KCk7CisgICAgfSwgYFN5bnRheEVy
cm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAg
ICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7
CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRCZShhLmdlbigp
Lm5leHQoKS52YWx1ZSwgNDIpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBC
IHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAg
ICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBuZXcgYS5nZW4oKTsK
KyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IGEuZ2VuKCknKWApOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5
ZjE4OGJjYzJmNWI1ZWNjMzUzMDUxNGMyMGVkNTY2ODhhNmEyOThjLi45OGZmZjVjZjczNTNlNmJj
NjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0xODEs
NyArMTgxLDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuID0gYXJyYXlMZW5ndGgoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkgewpAQCAtMTk1LDcgKzE5NSw3
IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IDQyMTk0
MWYzYTQ0YWM2ZGM1ZDliNjdmZDJjZGQ4NmYxMjAxM2M2NDguLmY0NmUxMTk3M2U1MjRjYTQyODU2
YjBkNzY4Mzc5ZTFhOWY0NTkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtMzY0LDcg
KzM2NCw3IEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
KQotI2RlZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMAorI2RlZmluZSBFTkFCTEVfRVM2X0dF
TkVSQVRPUlMgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2X01PRFVMRVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4
ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00
Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVS
QVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7
CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291
cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0
ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcg
KzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9T
WU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFT
U19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9S
UyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVO
QUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgg
PSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklM
VEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZj
YjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcx
Yjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVf
Q0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9F
UzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJM
RV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVT
ID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVN
UExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IDljZDg0NjVjMDljOWYx
Nzg2MDRjOWFiMjkyNWE3MGFiNDdjNjNlM2MuLjAyY2M3OThiMjBiZDZlNDYyNjNiZTM5ZDkwMWE4
ZmU5NGNiOWVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0zNCw3ICszNCw3IEBAIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04gUFVC
TElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCi1XRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9G
RikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfR0VORVJBVE9S
UyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2
X01PRFVMRVMgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVNIFBVQkxJQyBPRkYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZDk2MjI0ZDQxNzFiZGJhNzE3MGM0NWQzZGQ3MjE3
NTQ3NzEyZjUwZC4uMDBlZGJjMDEzYmZmNjZmN2EwM2ZkZDI5YjYzMWY0NjI1MGJlMjQzNCAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNyArNzcsNyBAQCBtYWNybyhXRUJLSVRf
T1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIgIlN1cHBvcnQgRU1FIHYyIiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYICJUb2dnbGUgRVM2IGFycm93
IGZ1bmN0aW9uIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYICJUb2dnbGUgRVM2IGNsYXNzIHN5bnRheCBz
dXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZf
R0VORVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQor
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9nZ2xlIEVT
NiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0VTNl9NT0RVTEVTICJUb2dnbGUgRVM2IG1vZHVsZXMgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWCAiVG9nZ2xlIEVTNiB0ZW1wbGF0ZSBsaXRlcmFsIHN5bnRheCBzdXBwb3J0IiBQ
UklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9GSUxURVJTX0xFVkVM
XzIgIlRvZ2dsZSBGaWx0ZXJzIE1vZHVsZSBMZXZlbCAyIiBQUklWQVRFIE9GRikKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMmRiMjI4Nzc5ZTE4
YTU5ZTg1MDM3MWI2NWZjMjNlZjViYjJkZDlkLi5hNjk4ZTkxMWViZTc3ZjdkODg0ZjUwOWE4OThl
ODczOTRjNzZhZTZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2Vs
aW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxNS0xMS0yMiAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHJ1bi13ZWJraXQtdGVzdHM6IGh0dHAgc2Vy
dmVyIGZvciBpbXBvcnRlZCBXM0MgdGVzdHMgZG9lc24ndCB3b3JrIHdpdGggLS1sYXlvdXQtdGVz
dHMtZGlyZWN0b3J5IHN3aXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CmluZGV4IGNkZWI1MjVjZjk0YjVhOGUxMjFiYTI0ZTM3OWQyMzNkNjkxYzZiODkuLjQ2MjE4ODE1
YjE1M2M1MzI5OWJjMjcxZDliNzdmNzQ4YWQzMDcwNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KQEAgLTE4NSw3ICsxODUsNyBAQCBCRUdJTgogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRj
bGFzc1N5bnRheCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlbmVyYXRvcnMiLCBkZXNjID0+ICJU
b2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9F
UzZfR0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9y
dCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+
IDEsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJt
b2R1bGVzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfRVM2X01PRFVMRVMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbW9k
dWxlc1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3
OWE2YmNmNjc1NGUwZjE1MTNlZDY4ZTE0YThiMDkwMTgyMjQ0OGFhLi5kNGQyNDI1ZTM3ZjNhMWFm
N2Q1YmQ1ZDhkYTU5YjVlOWMwYTIyMjQwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2Vs
aW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0
dXJlcy5jbWFrZToKKwogMjAxNS0xMS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBORVRXT1JLX1BST0NFU1MgY29tcGlsZSBm
bGFnCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFy
aWVzL0NoYW5nZUxvZwppbmRleCAwYzhhZjJhYmIxMTI0OGViYTFmYTA4M2I5MzIyOTdjMjdjNDI4
MGI1Li5kZDk1ZTJkN2Q5MjU0MjY2MTkwZWUwYjk2MTA0MmY4ZTUyYmJlODVhIDEwMDY0NAotLS0g
YS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUg
U3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL3Rvb2xzL3Zz
cHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHM6CisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMv
RmVhdHVyZURlZmluZXNDYWlyby5wcm9wczoKKwogMjAxNS0xMS0wNSAgTmlrb3MgQW5kcm9uaWtv
cyAgPG5pa29zLmFuZHJvbmlrb3Mtd2Via2l0QGNpc3JhLmNhbm9uLmNvbS5hdT4KIAogICAgICAg
ICBBZGQgcnVudGltZSBhbmQgY29tcGlsZSB0aW1lIGZsYWdzIGZvciBlbmFibGluZyBXZWIgQW5p
bWF0aW9ucyBBUEkgYW5kIG1vZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDBkNzRhOGY3ZWU1MjFlMDRm
OWZlYmU0ZGZhNzkyOWQ3ZTMzY2NkY2YuLmIwN2RjNTBhYmUyNWUwYjcwZmNhNWMzMDVkMTY2YmY1
ZTcwYTg4ZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lcy5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJv
cHMvRmVhdHVyZURlZmluZXMucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPkVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjI8L0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJB
VE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JT
PC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAg
IDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAg
PEVOQUJMRV9GSUxFX1NZU1RFTSAvPgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCA5MWVlODBm
ZGY0YWYxNThlYzVlZTQ4M2QwNjk2YzcxY2U0ODY0MTJkLi5mNWIwOGZmODEwZjdlNjFiN2NlYzZh
YzVlYTY5YTFhOTgzNTM4MGE4IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwpAQCAtMzIsNyArMzIs
NyBAQAogICAgIDxFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIg
Lz4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJB
VE9SUz5FTkFCTEVfRVM2X0dFTkVSQVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8
RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266134</attachid>
            <date>2015-11-24 06:07:06 -0800</date>
            <delta_ts>2015-11-24 06:10:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151124230649.patch</filename>
            <type>text/plain</type>
            <size>324320</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OGMwMzQxZjNjZTBkM2QzMjg3ZDhjZmU4NzdhMTUwNjllYjk0NTE3Li41ZTA3M2UxNGIzZDRlYWQ5
YmVhNzJjZjc5YmExZjJmN2M2YTNhZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OTUgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlZ2lzdGVyIGlz
IGxpdmUuCisgICAgICAgIFJlZ2lzdGVycyByZXNpZGUgaW4gQyBzdGFjay4gU28gaWYgd2UgZG9u
J3QgcGVyZm9ybSBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIHZhbHVl
IGlzIEpTQ2VsbCBvciBub3QKKyAgICAgICAgdG8gZW1pdCB3cml0ZSBiYXJyaWVycy4KKyAgICAg
ICAgQnkgcGVyZm9ybWluZyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMsIHdlIGNhbiBkZXRlcm1p
bmUgYWN0dWFsbHkgKmRlZippbmVkIHJlZ2lzdGVycyBhdCB0aGF0IHJlc3VtZSBwb2ludC4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgNC4gb3Bfc2F2ZSBzZWVtcyBzaW1pbGFyIHRvIGNvbmRpdGlvbmFs
IGp1bXAKKworICAgICAgICBXZSB3b24ndCBqdW1wIHRvIGVsc2V3aGVyZSBmcm9tIG9wX3NhdmUg
YWN0dWFsbHkuIEJ1dCB3ZSBhZGQgYSAqdmlydHVhbCoganVtcCBlZGdlIChmbG93KSBmcm9tIG9w
X3NhdmUgdG8gdGhlIHBvaW50IHNvIGNhbGxlZCAqbWVyZ2UgcG9pbnQqLgorICAgICAgICBXZSBj
b25zdHJ1Y3QgdGhlIENGRyBhcyBmb2xsb3dzLAorCisgICAgICAgICAgICAoZ2xvYmFsIGdlbmVy
YXRvciBzd2l0Y2gpIC0+IChpbml0aWFsIHNlcXVlbmNlKSAtPiAob3Bfc2F2ZSkgLS0tLSstPiAo
bWVyZ2UgcG9pbnQpIC0+IChuZXh0IHNlcXVlbmNlKSoKKyAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdiAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BfcmV0KSAgICAgIHwKKyAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPihvcF9yZXN1bWUpLS0rCisKKyAgICAgICAgQnkgY29uc3RydWN0
aW5nIHN1Y2ggYSBncmFwaCwKKworICAgICAgICAgICAgMS4gU2luY2Ugd2UgaGF2ZSBhIGZsb3cg
ZnJvbSAob3Bfc2F2ZSkgdG8gKG1lcmdlIHBvaW50KSwgYXQgbWVyZ2UgcG9pbnQsIHdlIGNhbiAq
dXNlKiBsb2NhbHMgdGhhdCBhcmUgZGVmaW5lZCBiZWZvcmUgKG9wX3NhdmUpCisgICAgICAgICAg
ICAyLiBvcF9zYXZlIHNob3VsZCBjbGFpbSB0aGF0IGl0IGRvZXMgbm90IGRlZmluZSBhbnl0aGlu
Zy4KKyAgICAgICAgICAgIDMuIGF0IG9wX3Jlc3VtZSwgd2Ugc2VlICp1c2UqZCBsb2NhbHMgYXQg
bWVyZ2UgcG9pbnQgYW5kIGRlZmluZSBhbGwgb2YgdGhlbS4KKworICAgICAgICBXZSBjYW4gZG8g
dGhlIGFib3ZlIHRoaW5ncyBpbiB1c2UtZGVmIGFuYWx5c2lzIGJlY2F1c2UgdXNlLWRlZiBhbmFs
eXNpcyBpcyBiYWNrd2FyZCBhbmFseXNpcy4KKyAgICAgICAgQW5kIGFmdGVyIGFuYWx5emluZyB1
c2UtZGVmIGNoYWlucywgaW4gb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB3ZSBvbmx5IHNhdmUgLyByZXN1
bWUgbGl2ZSByZWdpc3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAg
KiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3IucHJvdG90
eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgIChuZXh0
KToKKyAgICAgICAgKHJldHVybik6CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVz
c0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlS2lsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1DYWxsZWVMb2NhbHMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKToKKyAg
ICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2Rl
Q2FjaGU6OnRyeUdldCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldFNsb3cpOgor
ICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjppc0NhY2hlYWJsZSk6CisgICAgICAgICogYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4
ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmdlbmVyYXRvclRo
aXNNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnN1cGVyQmluZGluZyk6Cisg
ICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpnZW5lcmF0b3JUaGlzTW9kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aXNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5p
dGlhbGl6ZVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bmV3
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVjbGFpbUZyZWVS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFi
bGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rp
b25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdB
cnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbik6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JUaGlzTW9kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6cmVnaXN0ZXJGb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFr
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAg
ICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmVtaXRI
b21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdFN1cGVyQmFzZUZvckNhbGxl
ZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6WWllbGRFeHBy
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpCeXRlQ29kZVBhcnNlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0Zv
ckFsbEtpbGxzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yQWxsS2lsbGVkT3BlcmFuZHMpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpmb3JB
bGxMb2NhbHNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5cG9pbnRD
cmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QpOgor
ICAgICAgICAqIGZ0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkZvck9TUkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKToKKyAgICAgICAg
KiBmdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmg6CisgICAgICAgICogZnRsL0ZUTE9TUkVudHJ5
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGZ0
bC9GVExTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0F0
b20pOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcik6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TmV3RnVuY0NvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZnVuYyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZXdfZnVuY19leHApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbik6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojp0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxk
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6cHJvcGFnYXRlQXJndW1lbnRzVXNlKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToK
KyAgICAgICAgKEpTQzo6c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OnNldElzRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTY29wZTo6
c2V0SXNHZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6
OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9ncmFtUGFyc2VNb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVL
ZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtl
eTo6aGFzaCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVL
ZXk6OnN0cmluZyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNo
VHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9i
YWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6bGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6
aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6OmVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiBydW50aW1l
L0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFt
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjps
b2NhbHMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRh
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJ
VENvZGUuY3BwLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpHZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9i
amVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvZXM2
LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmlj
X2l0ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFi
bGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgor
ICAgICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0
ZXJhYmxlcy5qczoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUu
U3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAg
ICAgICAqIHRlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5q
czoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cu
anM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5p
dGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChnMSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0U3lu
dGF4KToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvcik6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IuQ29jb2EpOgorICAgICAgICAodGVzdFN5bnRheC5Db2NvYS5wcm90b3R5cGUub2spOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYSk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hLm9rKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocHJvdG90eXBlLmdlbik6CisgICAgICAg
IChzdGF0aWNHZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChCKToKKyAgICAgICAgKEEpOgor
ICAgICAgICAoQy5wcm90b3R5cGUuZ2VuZXJhdG9yKToKKyAgICAgICAgKEMpOgorICAgICAgICAo
VHlwZUVycm9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNv
bnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnVuY3Rpb24tbmFtZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChvayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1tZXRob2RzLXdpdGgtbm9u
LWdlbmVyYXRvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoZ2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNh
bGwuanM6IEFkZGVkLgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKGNhdGNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3
LXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90
eXBlLmdlbik6CisgICAgICAgIChCKToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAg
ICAgIChBKToKKwogMjAxNS0xMS0yMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBmaXggdGhlIE1hYyBDTWFrZSBidWlsZCBhZnRlciByMTkyNzkz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCA4MGE1Nzk0YzA2ZjRmYWIwOWZmMDNhNjQxNzgwZTNmMjZhYzNhZDhkLi44YTNkYzY4
NzhmZWZiMDFjZmZjNDA5NTNlODlmMzE3ZDBjZTdhMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9yOjpmb3JFYWNoU2V0Qml0KToKKyAgICAgICAgKiB3dGYvRmVhdHVyZURl
ZmluZXMuaDoKKwogMjAxNS0xMS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogdGVtcG9yYXJ5RmlsZVBhdGgubGFz
dCgpID09ICcvJyBpbiBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWFhN2MxNDdmZGIxOGQxOWE0ZjBmODM5ODk1NzEzMDcxNjU1NWM5ZS4uYzFhNzE4MzVmMGYyYWRm
M2Y5MTdiMGQ0MjQ5ODI2ZDcwN2YxNzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzoKKwogMjAxNS0xMS0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjE5MDk4Myk6IE5vbi1lbGVtZW50LCBub24tdGV4dCBub2Rl
cyBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIHRvIHNsb3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
M2I5OWY0ODgxOTFjYTIzMDYxZWQyMGQ3OGU4NzEzMzFkNDUxZTQ2MC4uNzcxZWU5MDM0NTYyMmE3
ZGI3NWJkNDZjOTUyY2MwNTdhMjhkZjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSArMSwxMCBA
QAorMjAxNS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdl
bmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE1LTExLTIxID09CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZTI0ODZkYjExMDNlYzg3NDQ2MTNhZTZlYzUwZDllNDhmMWFlNjZmNC4uYjlk
ZGRjN2FhMzQyNjY1YTU2ZTZkMDk5MGUzYTg0OTNjNGUyMTQ1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMS0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIHRoZSBuZXR3b3JrIHByb2Nl
c3MgdW5jb25kaXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCmluZGV4IDNiN2I3NmJmM2E0NDRjOTIxYmU5NzNjNTc2YzE5ZjY5MmU4ZDIzMmQuLjJmMzc0
MjMwMDk3YjUwODI1ODNmODQ0MjdiOTI1NzkzN2QzMDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBib29sIHBh
cnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigKICAg
ICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwKICAgICAgICAgZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTkxZWY2NmE1YWM0MTAxZDUyYjc5ZTNjNjYzYzRjZDFlYzI5ZGI0Mi4uOTQ2NTVlNTQ1
OTBjZWQxZWYzNjIzZWJmMzhiNDE5NzAxOGU3MGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTYzLDYgKzU2MywxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElN
RV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAg
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKyAgICBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAg
cnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MDIsNiArNjA2LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKICAgICBy
dW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC03MzcsNiArNzQy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAogICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTk1LDYgKzEyMDEsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0FycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0Z1bmN0aW9uUHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThk
NjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7
CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5B
QkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFU
RV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM3NThhMzYzNjRkOTdj
MzU4M2M5MTZmM2YzZDk4NWE0ODc3ZjkyYzYuLjc2OGViYWE2Mjk3NzJmNmRlZDc5OGE3ZTZkN2Y4
MWRlZTBlYjZlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC04NCw2ICs4NCw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBc
CiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cyBcCkBAIC0xMTksNiArMTIwLDcgQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIERhdGVD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQ
cm90b3R5cGUubHV0LmggXAorICAgIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDNlN2Y5OTRlMzA3YzQ2ZDAzYjc0
Yjk3OWY1MWJlNjU2ZTU5YWMwNDMuLmNhZmUxZjI3MzQ4Y2ViZWExOTRlNmM3NTgxZjBmM2EzZTM1
NTRkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzU2LDYg
Kzc1NiwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3Rv
dHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNl
dHRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElkZW50aWZp
ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbmRleGluZ1R5
cGUuY3BwIiAvPgpAQCAtNzk1LDYgKzc5OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0RhdGVNYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuY3BwIiAvPgpAQCAtOTQ1LDYgKzk1MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUu
bHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlv
bi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CkBA
IC0xNTE1LDYgKzE1MjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBh
cnNlclRva2Vucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFJlc3Vs
dFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2Rl
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNo
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmgiIC8+CkBAIC0xNjAxLDYgKzE2MDgsMTEgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUHJvdG90eXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0LmgiIC8+CkBAIC0xNjYwLDYgKzE2NzIs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0MzJBcnJheS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Zsb2F0NjRBcnJheS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGE2ZDNmZjAwZTI1MDNhY2JjMzY3OTBhMzZlNmVlNDM3YTkzNGJmYTguLjFiOTc4ZWU0
ODFjMTg0ODdhODI1MzVkZjc3OTg1MDE1ODI3YTFjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY2Niw2ICs2NjYsMTggQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmNwcCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmNwcCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc0Nyw2ICs3NTks
OSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2MTIsNiArMjYy
Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZUtleS5oIj4KKyAgICAgIDxGaWx0
ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgxMyw2ICsyODMxLDIxIEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuaCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2V0UHV0SW5mby5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjkxOCw2ICsyOTUxLDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTR2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CkBAIC0zMjgyLDYgKzMzMTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIj4KICAgICAg
IDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYjNjMjVlNmQ2MzkxOTc1ZDJlZDFjNTI2OTliMTA1NzE2NzY0YmZkNy4uNWRlNzFmZmMx
MzJjNTIyMDM3YmUzNjE3NDE3N2Q1MjVlYWExYjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyMDMsNiArMTIwMywxOSBAQAogCQk3MDlGQjg2QjFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlG
Qjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAx
MzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5
MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNv
dXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTMxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi87IH07CisJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9
OworCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTk4MUMw
MjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFF
MiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dl
bmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUQxQzAyNEE1
NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07
CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDgxQjJERjJD
NzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExM
SW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07CkBA
IC0zMjcxLDYgKzMyODQsMjAgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vh
a1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2
MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZy
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODQxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NjFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThCMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0
b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTkwMUMw
MjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNFMDgxQjJE
RjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50QXNzZW1ibHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUwODUsNiArNTExMiw3IEBACiAJCQkJOTk2QjczMDgxQkQ5RkEy
QzAwMzMxQjg0IC8qIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcx
OEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMwOTFCRDlG
QTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0LmggKi8sCisJCQkJNzBCNzkxOTAxQzAy
NDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIx
ODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCiAJCQkJQTUxM0U1QzYx
ODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJQTVFQTcx
MEQxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oICovLApAQCAtNTIxMyw2ICs1MjQxLDcgQEAKIAkJCQk4NjlFQkNCNjBFOEM2RDRBMDA4NzIy
Q0MgLyogUmVzdWx0VHlwZS5oICovLAogCQkJCTBGOEYyQjlEMTczMDZDOEIwMDdEQkRBNSAvKiBT
b3VyY2VDb2RlLmNwcCAqLywKIAkJCQk2NUU4NjZFRTBERDU5QUZBMDBBMkIyQTEgLyogU291cmNl
Q29kZS5oICovLAorCQkJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5
LmggKi8sCiAJCQkJMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNw
cCAqLywKIAkJCQk2NUU4NjZFRDBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlUHJvdmlkZXIuaCAq
LywKIAkJCQlFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAgKi8sCkBAIC01MzQyLDYgKzUzNzEsMTUgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYw
RjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2
QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKKwkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAorCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAorCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3MEI3OTE4NjFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAorCQkJCTcw
Qjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAg
Ki8sCisJCQkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmggKi8sCisJCQkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JUaGlzTW9kZS5oICovLAogCQkJCTBGRTA1MDExMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmlj
QXJndW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUwMTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdl
bmVyaWNPZmZzZXQuaCAqLywKQEAgLTU0NDEsNiArNTQ3OSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1
NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0Qw
MUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhD
IC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUy
IC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0
ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywK
IAkJCQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY1NTMsNiArNjU5Myw3IEBACiAJCQkJQTc1RUU5
QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovLAogCQkJCTQxREVBMTMxMUI5
RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLywKIAkJCQlBN0E5NzlDNDE4QkU4RDlF
MDAyQzM3MzMgLyogRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8sCisJCQkJNzBCNzkxOEYxQzAyNDRF
QzAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVE
OUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0LmpzICovLAogCQkJCUUzNUUwMzYxMUI3QUI0ODUw
MDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMz
RjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICov
LApAQCAtNjk2Niw2ICs3MDA3LDcgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyog
REZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAw
NTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkz
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03MDE1LDYgKzcwNTcsNyBAQAogCQkJCTBGNTBBRjNDMTkzRThCMzkw
MDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1Ro
cmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4
Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdE
NTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzIzNSw2ICs3Mjc4LDcgQEAK
IAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9y
VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyog
SW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFF
MiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYz
MDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FE
QjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNB
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzI2MSw2
ICs3MzA1LDcgQEAKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVy
YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyog
SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEzMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0
QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlw
dENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
YXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDA0LDYgKzc0NDksNyBA
QAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRh
YmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3Mzkg
LyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QzFD
MDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRB
cnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ0MCw2ICs3NDg2LDcgQEAKIAkJ
CQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5
MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03NjEyLDYgKzc2NTksNyBAQAogCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERF
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENGMkZBMTg0
RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NENG
MkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0
ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc2NDQsNiArNzY5Miw3
IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBT
dHJvbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIyODYxNDM3RTE0MDAw
NUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREUzQUI4MEU2
QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEVFNzA5
MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04
NjYyLDYgKzg3MTEsNyBAQAogCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkQxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4
N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODY4OCw2ICs4NzM4LDcgQEAKIAkJ
CQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDIzODkwMUJFMThDM0MwMDUxNDczNyAvKiBKSVRT
dWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2QzQxMDdFQzI1NTAw
NURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODgyNSw2
ICs4ODc2LDcgQEAKIAkJCQkxNDJENkYwODEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtl
ZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjExMTM1MzlBNDEwMEIwMkU4NiAv
KiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTgxQzAyNEEyOTAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzQwQTQ4
NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg5NzIsNiArOTAyNCw3IEBACiAJCQkJMEZGNDI3NDUxNThFQkU5MTAw
NENCOUZGIC8qIHVkaXM4Nl9zeW4tYXR0LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NjE1
OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovLAor
CQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0MjczMjE1OEVCRDU4MDA0Q0I5RkYgLyogVURp
czg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYyNzk0MTVGMTNDOTYw
MDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDE0
MkU1NTFCNzk3M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC04OTgwLDYgKzkwMzMsNyBAQAogCQkJCTc5RUUwQkZGMUI0QUZCODUw
MDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAxM0FCMDBEQTMyMjkg
LyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3
OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRl
eCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEzLi5hOWU2OWJlYTZlZWFl
NTc4YjkyZDk4OWUxZTg5MTkxYTMzNDg5OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtODIsNyArODIsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291
cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBzb3VyY2UucHJvdmlk
ZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLAorICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yLAogICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlmICghcHJvZ3JhbSkgewpAQCAtMTE1LDcgKzEx
NSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJu
YWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1ldGFkYXRhLT5vdmVy
cmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxl
czsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEs
IGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291
cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwog
ICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5h
bWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvci5wcm90b3R5cGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yLnByb3RvdHlwZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OTY5OTEwNWQxNTkzZGYyMGIxMGRlMThiYmNjMTdjNmJmZDAwZjQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
ci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2Vu
ZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gR2VuZXJhdG9yU3RhdGUuCisgICAgY29uc3QgQ29tcGxldGVkID0gLTE7CisgICAgY29u
c3QgRXhlY3V0aW5nID0gLTI7CisKKyAgICAvLyBSZXN1bWVNb2RlLgorICAgIGNvbnN0IE5vcm1h
bE1vZGUgPSAwOworICAgIGNvbnN0IFJldHVybk1vZGUgPSAxOworICAgIGNvbnN0IFRocm93TW9k
ZSA9IDI7CisKKyAgICBsZXQgc3RhdGUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlOworICAg
IGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlOworCisgICAgaWYgKHR5cGVvZiBzdGF0
ZSAhPT0gJ251bWJlcicpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgc2hv
dWxkIGJlIGEgZ2VuZXJhdG9yIik7CisKKyAgICBpZiAoc3RhdGUgPT09IEV4ZWN1dGluZykKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKwor
ICAgIGlmIChzdGF0ZSA9PT0gQ29tcGxldGVkKSB7CisgICAgICAgIGlmIChyZXN1bWVNb2RlID09
PSBUaHJvd01vZGUpCisgICAgICAgICAgICB0aHJvdyBzZW50VmFsdWU7CisKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIGlmIChyZXN1bWVNb2RlID09PSBSZXR1cm5Nb2RlKQorICAgICAg
ICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVl
ID0gc2VudFZhbHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOworICAgICAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlz
LCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAg
aWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgeworICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9y
KSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwor
ICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsg
ZG9uZSwgdmFsdWUgfTsKK30KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogTm9y
bWFsTW9kZSAqLyAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBS
ZXR1cm5Nb2RlICovIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgZXhjZXB0
aW9uLCAvKiBUaHJvd01vZGUgKi8gMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDU0ZGZkMTY4Y2E2MDBl
YmVmMTM1ODA0MzJjNzdlMjVhZDQ0NGFkMGMuLjU5NjA2NGM0MDY4MjQ5NzgwODljNDY0M2YxYzNk
ZmJkMDUzNGI5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBib29sIGlz
QnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgor
ICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDI5OTBmYWUzNTQ4OTc5ZmVjN2NhMTg2NjkwOTFiYjA1
ZTJhYzYyZTguLmI0OWI0ZjJiYmVhZTkwYzVkNjRmYzI5MTgyYTJjMTk5ZGFhZmUzMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAg
LTkwLDYgKzkwLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmci
LCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0
b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbmV3X2Fycm93X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEyOSw3ICsxMzEsOSBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhp
cyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0Iiwg
Imxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAi
bGVuZ3RoIjogMyB9CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVu
Z3RoIjogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDog
NCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0K
ICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNzdh
YmVhYTI5MjA5ZTMyOTkxM2NkOTRjZmFkNzUxNTE5YmQ5OWYxLi43MjI4YjAzMzM2NmM3YTY3YjUx
MDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2Ug
dG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVu
IHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgog
dGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIC8v
IFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0
cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVuIGRl
ZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3Bl
cmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBz
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNl
dCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKICAg
ICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAg
ICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwg
aW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVz
cyhjb2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0
ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAg
ICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
ICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9w
ZXJhbmQpKQogICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9M
b2NhbCgpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBl
eGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAog
ICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZl
LWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhh
bmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkpIHsKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
fQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywg
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBi
YXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5k
ZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQg
dGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTY0LDcgKzE2NCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwg
b3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChv
dXQpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jCiB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7CiAgICAgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJp
YWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAg
LTI0OCw3ICsyNDgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1
bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNl
dF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQp
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2st
PmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigK
LSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsCisgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBi
eXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4
NmU1ZDY2Njg0NS4uOGI5ODRkOGNiNmYzY2RmNzdhYWJiNzAzZGYwMTg1ZmFjYmUzNTcyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAg
LTMyLDcgKzMyLDcgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNzAs
OCArNzAsMTAgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3BfamVxX251bGw6CiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0g
ICAgY2FzZSBvcF9pbmM6IAotICAgIGNhc2Ugb3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9p
bmM6CisgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMjQsNiArMTI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAog
ICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51
bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgog
ICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQ6CkBAIC0xNTIsNiArMTU1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6
CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoK
ICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAtMjQwLDcg
KzI0NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpA
QCAtMjU1LDYgKzI1OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9w
cm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19z
dGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAg
IGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzIwLDggQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBv
cF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19n
ZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAg
Y2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICszOTcsMTUgQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5t
X251bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAg
ICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmlu
ZGV4IGZjYTYzMDE0OTE4MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRlZjk5ZWUuLjFiMWRiMWIyYzQw
YjBmNGNkMThmZWMyMjNjYWM3OWNlMDBmMmM1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAiOiAlbHUgbV9pbnN0
cnVjdGlvbnM7ICVsdSBieXRlczsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIo
cyk7ICVkIHZhcmlhYmxlKHMpIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAg
IG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CisgICAg
ICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVMb2NhbHMsIG1fbnVtVmFycyk7CiAgICAg
aWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAg
ICAgICBvdXQucHJpbnRmKCI7IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVkIiwgYWN0aXZhdGlv
blJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CkBAIC02ODAsNiAr
NjgwLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkK
ICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkpOwogICAgIH0KIAorICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgeworICAgICAgICBvdXQucHJpbnRm
KCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOworICAgICAgICAgICAgb3V0
LnByaW50ZigiICAlMWQgPSAiLCBpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7CisgICAgICAgICAgICArK2k7CisgICAgICAg
IH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUo
KSk7CisgICAgfQorCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTI5NCw2ICsxMzA2
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVu
YyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzMxLDE0IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJv
ZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2ICsx
NTI3LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2lu
dEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAldSwgJWQoLT4lZCkiLCByZWdp
c3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAldSIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTY2
Myw3ICsxNzA2LDcgQEAgY2xhc3MgUHV0VG9TY29wZUZpcmVEZXRhaWwgOiBwdWJsaWMgRmlyZURl
dGFpbCB7CiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVj
dChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcChvdGhlci5tX2hlYXApCi0gICAg
LCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhlci5tX251bUNhbGxlZVJlZ2lzdGVycykKKyAgICAs
IG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1W
YXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3RvcihvdGhlci5tX2lzQ29u
c3RydWN0b3IpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVlKQpAQCAtMTcyMCw2
ICsxNzYzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAg
ICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIG1faGVh
cC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTE3MzAsNyArMTc3NCw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJs
b2NrJiBvdGhlcikKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFs
T2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgdGhpcywgc2NvcGUtPmdsb2JhbE9i
amVjdCgpKQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwg
bV9udW1DYWxsZWVSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bVZhcnMp
CiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3Io
KSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0xOTAwLDYgKzE5NDQs
OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmds
eSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVu
dmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCisgICAg
Ly8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCisgICAgVmVjdG9y
PHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKwogICAgIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewpAQCAtMjE4
OCw2ICsyMjM1LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAg
IGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAg
ICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkg
KyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjE5OSw2ICsyMjU0LDIwIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURjo6bW92
ZShpbnN0cnVjdGlvbnMpOwogCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFs
eXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVz
dW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgaWYgKHVubGlua2VkQ29kZUJsb2Nr
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAg
ICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7
CisgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CisgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworICAgICAgICAg
ICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKKyAgICAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRl
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFNldCBvcHRpbWl6
YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVk
LCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQg
YXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3Ry
dWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVw
KS4KQEAgLTIyMjIsNyArMjI5MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgOiBK
U0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qt
PnZtKCksIHRoaXMsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisgICAgLCBtX251bUNh
bGxlZUxvY2FscygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX2lzQ29uc3RydWN0b3Io
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZChmYWxzZSkKQEAgLTMwNDksNiAr
MzExOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01v
ZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBo
YXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQw
MjAsNyArNDA5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiAgICAgCiAgICAgRmFz
dEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCgwKTsKICAgICAKLSAgICBpZiAobGl2ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZVJlZ2lzdGVycykpIHsKKyAgICBpZiAobGl2ZUF0SGVh
ZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZUxvY2FscykpIHsK
ICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICBkYXRhTG9nKCIgICAg
V3JvbmcgbnVtYmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxuIik7CiAgICAgICAgIGRhdGFMb2coIiAg
ICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOwpAQCAtNDAyOCw3ICs0MDk4LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsK
ICAgICB9CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9udW1DYWxsZWVSZWdpc3RlcnM7
IGktLTspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZUxvY2FsczsgaS0tOykg
ewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSk7CiAgICAgICAgIAogICAgICAgICBpZiAobGl2ZUF0SGVhZC5nZXQoaSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjMWRmMTg3YzEyMjBkMmY3
ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4MmVjLi4zY2JlNzVjNDk3ODEwMTkzODgwYzNhNWIxYjk5NTkz
MDUwMGFhOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvRmFz
dEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTE0MSw2ICsx
NDIsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBpbnQgbnVtUGFy
YW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgIHZvaWQgc2V0
TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCisgICAgaW50IG51bUNhbGxlZUxvY2Fscygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQqIGFkZHJlc3NP
Zk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9CiAKQEAgLTY1NCw2ICs2NTcsMTggQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBh
ZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsg
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFi
bGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgp
OyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxl
SW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAgIC8vIExpdmUgY2Fs
bGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOworICAgIH0KKyAgICBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07CisgICAgfQorCiAgICAgRXZh
bENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlu
a01vZGUgewpAQCAtODU1LDcgKzg3MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHJlbWFpbmluZyBtZW1iZXJzIHByaXZhdGUu
CiAKICAgICBpbnQgbV9udW1Mb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzOwotICAgIGludCBt
X251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CiAgICAgaW50
IG1fbnVtVmFyczsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgCkBAIC05MDAs
NiArOTE1LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZl
Y3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9y
PFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZl
Y3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOworCiAgICAgICAg
IEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVh
MmU3ZDRlYWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4
MjBmOGJlZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
dmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGVLZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkg
QEAKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZh
bEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBl
dmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdl
dChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgp
KS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVh
YmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVL
ZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZh
bFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2Fj
aGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0
cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29w
ZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFy
aWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5k
ZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNv
dXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9
IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0
LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZh
bEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENv
bnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hl
RW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwo
KSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4
ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQs
IGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmll
cykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAg
ICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCks
IFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAg
ICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhl
Y3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAg
ICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2NvcGUtPmlz
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVP
YmplY3QoKSB8fCBzY29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBT
dHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUm
IGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJ
ZiBldmFsKCkgaXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwg
d2UgY2FuJ3Qgc291bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElmIHRoZSBldmFsKCkg
b25seSBoYXMgYWNjZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQu
CiAgICAgICAgICAgICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAgICAgICAgICAgICAm
JiBldmFsU291cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3Vy
Y2VMZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxT
b3VyY2UubGVuZ3RoKCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5n
dGgoKQogICAgICAgICAgICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUoc2NvcGUpOwogICAgICAg
ICB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgV3JpdGVCYXJyaWVyPEV2
YWxFeGVjdXRhYmxlPj4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U291
cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291cmNlQ29kZUtleUhh
c2gsIFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CiAgICAgICAgIEV2YWxD
YWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMy
YTA5NjliNTBiMTAyYTE1ZC4uMjYwMmJlN2M0ZmJlY2U5ZGVhNTAyMThmZTE0YjU2NTFmYjQ3Yjhi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmgKQEAgLTI2LDIxICsyNiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxlSW5mb19oCiAjZGVmaW5l
IEV4ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5j
bHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8vIEZJWE1FOiBUaGVz
ZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hv
dWxkIGJlIHJlb3JnYW5pemVkLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5m
byhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUs
IGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJs
ZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RN
b2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNN
b2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAg
LCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0
TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAsIG1fZ2Vu
ZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24p
CisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmlu
ZGluZykpCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKKyAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKKyAgICAgICAgQVNTRVJUKG1fZ2VuZXJhdG9yVGhp
c01vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSk7CiAgICAg
fQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWN0
aXZhdGlvbjsgfQpAQCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXNNb2RlPihtX2dlbmVyYXRvclRo
aXNNb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVu
Y3Rpb247IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KKyAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2Niwx
MCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNCdWlsdGluRnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUg
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBt
X2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwor
ICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcAppbmRleCBkNjBmZGY3ZDNjZjM2MGUzZWMxNjk4Nzc5YWJlNmI5ZWI5MDZkNTE0
Li45ODk5MzliMjMzMjE0Y2ZkNDViZTA3YmFlODYwOWZjODRjN2ViMzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApA
QCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5s
ZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToK
KyAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3Bfc3dpdGNo
X2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1
NzYuLjg3ZTgyMzNmMWZlM2E4YmVjNDAyMzBkMjk4YjA5ZTZkZmY5YTM4OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApA
QCAtNTQsNyArNTQsNyBAQAogVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVj
dXRhYmxlSW5mbyYgaW5mbykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251
bVZhcnMoMCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisgICAgLCBtX251bUNhbGxl
ZUxvY2FscygwKQogICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBtX3ZtKHZtKQogICAg
ICwgbV9nbG9iYWxPYmplY3RSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKQEAgLTY1LDEwICs2
NSwxMiBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNC
dWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQot
ICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1f
Z2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhp
c01vZGUoKSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5m
by5zdXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291
bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwgbV9wYXJzZU1vZGUoaW5m
by5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fY29kZVR5cGUoY29k
ZVR5cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGZhNTE0YzE1NmE3
Y2I3Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmJjYTJjMDRhY2E0MzgyOTIxNzU2OTU4YmFh
NjhkYjMwZThmMTM1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5
cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lv
blJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYs
NyArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9
CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VN
b2RlOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9y
VGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBl
ckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMzIsNyAr
MjM2LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAg
IGludCBtX251bVZhcnM7CiAgICAgaW50IG1fbnVtQ2FwdHVyZWRWYXJzOwotICAgIGludCBtX251
bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CiAKICAgICAvLyBK
dW1wIFRhYmxlcwogCkBAIC0zODcsMTIgKzM5MSwxNCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
OiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6
IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CisgICAgdW5zaWduZWQg
bV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5z
aWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAKKyAgICBTb3Vy
Y2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAg
ICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uM2Y0OTQ4ODVhZjQ5YzI4
ZTI2ZjQ5N2Q2NzVmNjRhMTZjOWI5YWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC01MCwxMyArNTAsMTMgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAg
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5j
dGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAg
VW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWls
dGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24g
PSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+
bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCks
IGVycm9yLCBudWxscHRyKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUo
KSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVj
dXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOwogCiAgICAgaWYgKCFmdW5j
dGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTY3LDcgKzY3LDcg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVh
dHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVu
Y3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24t
PmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9
PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCks
IGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVl
ZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RN
b2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJs
ZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNl
TW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5l
cmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVy
TW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9y
ID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC03
NSw3ICs3NSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0
cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5h
bWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFi
aWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5v
ZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0
aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9u
KCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5l
cmF0b3JUaGlzTW9kZSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAg
ICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
OwpAQCAtMTgwLDcgKzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBp
c0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBD
b2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Ci0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VN
b2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5
MjkzZjQxYmE0MmQ5YzFmOC4uYzhiYmEwYWMzMmJlNDM3ZmZiNWRmM2UzZjllMDViMDQ3OGE1MzYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNs
dWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKQEAgLTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVu
dmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRo
aXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0
YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2
bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2Us
IFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5v
ZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlz
TW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTgyLDYg
KzgzLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQog
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVy
YXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CisgICAgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmlu
ZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9u
TmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9
CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJvb2wpOworICAgICAgICBQ
YXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAK
QEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0
cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsg
fQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAK
IHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFy
aWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsK
IApAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAx
OwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1
bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1
bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1
bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjkzNzBjOGQyODRhMzg0ZjIx
ZTBlNzg5MjY4NTQ1YzkyYjE5ODIzYi4uODc3MDJlYzM5YTMzYjYyOTAwZjhjY2NlYmM1OGQ5NmIx
Zjc2OWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
QEAgLTIyNyw5ICsyMjksMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRo
ZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1f
c2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wg
bmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3Vt
ZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVy
IGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsK
KworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90
IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9u
IHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1l
bnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0
LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVu
dHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVm
ZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8g
ICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1
bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAg
ICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZl
cmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAg
Li4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAg
ICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwor
ICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1
bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQo
KTsKICAgICAKQEAgLTI1NCwxNCArMjgwLDMzIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBt
X2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBp
bml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGlu
ZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFp
bnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOworICAgICAgICBpZiAoZ2VuZXJhdG9yVGhpc01v
ZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVt
cHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNo
X2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGlu
ZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxp
bmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5z
dGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgor
ICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5s
aW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2lu
R2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gSW5pdGlh
bCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICB9CisKICAg
ICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rp
b25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Nj
b3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNh
cHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAg
IGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNh
cHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+
aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewogICAgICAgICBtX2xl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNhbiBh
bGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBh
cmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICszMTYsNiBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5pdGlh
bGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAg
IH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Yg
b3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVl
ZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJh
bWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3Ro
aXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsg
Ly8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0g
ICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0
ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAg
IAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJn
dW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAg
IGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1
MDgsMzYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9
CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxv
Y2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1
bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAg
ICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisg
ICAgICAgIC8vIEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTg2CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxs
ZWVSZWdpc3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVj
dGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewog
ICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25l
d1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NTMs
OCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9u
Tm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBl
bWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVu
IGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9u
U2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTc5OSw2ICs4NTksMjIgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4g
JnBhcmFtZXRlcjsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFt
ZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBt
YWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFy
ZSBub3RlZC4KKyAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAv
LyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8g
cGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5p
c1Jlc3RQYXJhbWV0ZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBh
cmFtZXRlcik7CisgICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0
UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlu
aXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3Rlcik7CkBAIC04MjYsMTcgKzkwMiwxNyBAQCBVbmlxdWVkU3RyaW5nSW1wbCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJpbmdQYXR0ZQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3UmVnaXN0ZXIoKQogewotICAgIG1fY2Fs
bGVlUmVnaXN0ZXJzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lz
dGVycy5zaXplKCkpKTsKLSAgICBpbnQgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gbWF4PGludD4obV9j
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkp
OwotICAgIG51bUNhbGxlZVJlZ2lzdGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVSZWdpc3RlcnMpOwotICAgIG1fY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IG51bUNhbGxlZVJlZ2lzdGVyczsKLSAgICByZXR1
cm4gJm1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKTsKKyAgICBtX2NhbGxlZUxvY2Fscy5hcHBlbmQo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7CisgICAgaW50
IG51bUNhbGxlZUxvY2FscyA9IG1heDxpbnQ+KG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cywgbV9jYWxsZWVMb2NhbHMuc2l6ZSgpKTsKKyAgICBudW1DYWxsZWVMb2NhbHMgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVlTG9j
YWxzKTsKKyAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVMb2Nh
bHM7CisgICAgcmV0dXJuICZtX2NhbGxlZUxvY2Fscy5sYXN0KCk7CiB9CiAKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKCkKIHsKLSAgICB3aGlsZSAobV9jYWxs
ZWVSZWdpc3RlcnMuc2l6ZSgpICYmICFtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCkucmVmQ291bnQo
KSkKLSAgICAgICAgbV9jYWxsZWVSZWdpc3RlcnMucmVtb3ZlTGFzdCgpOworICAgIHdoaWxlICht
X2NhbGxlZUxvY2Fscy5zaXplKCkgJiYgIW1fY2FsbGVlTG9jYWxzLmxhc3QoKS5yZWZDb3VudCgp
KQorICAgICAgICBtX2NhbGxlZUxvY2Fscy5yZW1vdmVMYXN0KCk7CiB9CiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdCbG9ja1Njb3BlVmFyaWFibGUoKQpAQCAtMTkxNSw3ICsx
OTkxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFibGUoCiAgICAgICAg
IHZhck9mZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChs
b2NrZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6
U3RhY2spOwotICAgICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKSk7CisgICAgICAgIHZhck9mZnNldCA9IFZh
ck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsK
ICAgICB9CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIDApOwogICAg
IHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCksIG5ld0VudHJ5KTsKQEAg
LTIzMTIsMTIgKzIzODgsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRB
c3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6
ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlB
bmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7Cisg
ICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdp
biArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsg
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1
NDcsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lz
dGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCog
ZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXRO
ZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtl
RnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4
KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lz
dGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAg
cmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2Rl
KG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU1NSwyNSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVn
RXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMs
IE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0
aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1
bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29k
ZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9
IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisK
KyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1
bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fycm93X2Z1
bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjUxMiwxNyArMjU4Niwx
OCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0
ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHBy
Tm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9u
ZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBm
dW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dG
dW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAgIGJvb2wg
aXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiBjb25z
dHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3ND
b25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRvclRoaXNN
b2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2so
dGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1
bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1NDAsNiArMjYx
NSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25z
dHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCog
ZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5k
ZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikp
OworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9m
dW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0
ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVt
aXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NjYsNiArMzg1NCwyNCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9w
ZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygq
dGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAg
IFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3Qu
Z2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFi
ZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxM
YWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODQyLDQgKzM5NDgsMjE4IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1
bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgUmVm
UHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKKyAgICBzaXplX3QgeWllbGRQb2lu
dEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOworICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOworICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50
IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKyAgICBlbWl0U2F2ZShtZXJnZVBvaW50
LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oYXJndW1lbnQp
OworICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9p
bnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBzaXplX3QgYmVnaW4g
PSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNp
emUoKSkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCit7CisgICAgZW1pdEdl
bmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGVtaXRMYWJl
bChtZXJnZVBvaW50KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0WWllbGRQb2ludChhcmd1bWVu
dCk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVx
dWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9k
ZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUp
KSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0
KCkpOworCisgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBl
bWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dN
b2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwu
Z2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgaWYg
KGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0
TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAg
ZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICB9CisgICAgICAgIGVt
aXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIC8vIFRocm93Lgor
ICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhyb3coZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKKworICAgIC8vIE5vcm1hbC4KKyAgICBlbWl0TGFiZWwobm9ybWFs
TGFiZWwuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCk7Cit9CisK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByZXZpb3VzID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdExvYWQo
cHJldmlvdXMuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50
LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOworICAgICAgICB7CisgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAgZW1pdE1v
dmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnQpOworICAgICAgICAgICAgZW1pdENhbGwo
aXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3Ms
IG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBuZXh0RWxlbWVudCA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsK
KworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1lbnQuZ2V0KCkpOworCisgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0
TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRMb29wSGludCgpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQodmFsdWUuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAg
ICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAg
ICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29u
ZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuLgorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJl
dHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUo
cmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rl
cigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2Rl
LT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVy
YXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZh
bHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJs
b2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVt
aXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVy
bihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVy
bkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVz
dWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwg
cmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5JdGVyYXRvclJlc3VsdC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dMYWJl
bC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhp
cywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3Vs
dC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwodGhy
b3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRv
ckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRo
cm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBo
YXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwu
Z2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHByZXZpb3VzLmdldCgpLCBnZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFi
ZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2
aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSks
IGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAg
ZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gcHJldmlv
dXMuZ2V0KCk7Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3Rh
dGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0
ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVm
UHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQor
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0
ZSkKK3sKKyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRl
KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZh
dWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0
U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKwor
ICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0cnVjdGlvbnMoKVtz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOworCisg
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRT
d2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsK
KyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZvciAodWludDMyX3Qg
aSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgeworICAgICAg
ICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBo
YXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAi
Zm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMp
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1
OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJhODYuLmRmZDAxMWI5NDMyZWNjZjFkZDNj
ZDMwYTdlNWFlNTUzZTg2NjY3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNk
ZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsy
ODEsOCBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3Rvcktp
bmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgpOyB9CisgICAgICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBA
IC0yOTcsNiArMzAwLDggQEAKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkg
eyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAg
Ly8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3Rl
cnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmll
ZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdp
dGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhh
dApAQCAtNDk5LDEwICs1MDQsOCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXko
UmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3Bz
IGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24o
UmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGlu
ZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdp
c3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNv
bW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBB
cnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJl
Z2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5Niw2ICs1OTksNyBAQAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBj
b25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0
ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihS
ZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0
LDEyICs2NDgsMjggQEAKICAgICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dp
dGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNs
YXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1
bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIHZvaWQgZW1p
dFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICB2b2lk
IGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7CisKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAg
ICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJ
RCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQor
CiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsg
fQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hv
dWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tz
KCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsg
fQogCkBAIC02NjcsNiArNjg3LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAg
ICAgdm9pZCBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKKyAgICAgICAgdm9pZCBl
bWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJO
b2RlKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJp
YWJsZUVudmlyb25tZW50Tm9kZSosIGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVy
SUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03MzAsNyArNzUx
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCYgcmVnaXN0ZXJGb3IoVmlydHVhbFJlZ2lzdGVyIHJl
ZykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXJzW3JlZy50b0xvY2FsKCldOworICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NhbGxlZUxvY2Fsc1tyZWcudG9Mb2NhbCgpXTsKIAogICAgICAgICAg
ICAgaWYgKHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXI7CkBAIC03NTIsMTIgKzc3MywyMiBAQAogICAgICAgICAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdl
dFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8g
RklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29k
ZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
Q29uc3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8
fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAgICAgICAg
ICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0Owor
ICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eTsKKyAgICAg
ICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYm
IGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzTW9kZSA9IEdl
bmVyYXRvclRoaXNNb2RlOjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRh
ZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFop
OworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZp
cm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
b25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0
ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZp
cnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBw
cm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdp
c3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90
IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCisgICAgICAgIHZvaWQgaW5pdGlh
bGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlh
bGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsK
ICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVu
Y3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1ldGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJv
bFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMpOwogCkBAIC04MDQsNiArODM2
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAg
ICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07
CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODEx
LDcgKzg0NCw3IEBACiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4g
bV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7Ci0gICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVMb2NhbHM7CiAgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9wYXJhbWV0ZXJzOwogICAgICAg
ICBTZWdtZW50ZWRWZWN0b3I8TGFiZWwsIDMyPiBtX2xhYmVsczsKICAgICAgICAgTGFiZWxTY29w
ZVN0b3JlIG1fbGFiZWxTY29wZXM7CkBAIC04MjcsNiArODYwLDcgQEAKICAgICAgICAgVmVjdG9y
PFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwogICAgICAgICBlbnVtIEZ1bmN0aW9u
VmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1
bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFk
YXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7
CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCAzMTJhOGM3YWNlMDQxNTYwOGJkMzc0N2RlZGE3ODY4ZTViYmQwZjUyLi4xY2RlNjVk
MTQ4YThlYzJiNDI5YjExOTcxN2NmODhiMmFhM2JiMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxh
YmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
CiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0
VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJh
dG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5l
cmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsK
IAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTE3MCwxMiAr
MTcxLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKLXN0YXRpYyBSZWdp
c3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IpCitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBSZWdpc3RlcklEIGNhbGxlZTsKICAgICBjYWxs
ZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworfQogCi0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhvbWVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQ
cml2YXRlTmFtZSk7CitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBo
b21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9i
amVjdC5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwog
fQogCkBAIC0yNTg0LDYgKzI1ODksNyBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIGRz
dCA9IDA7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVl
ID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVy
YXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0
aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChn
ZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0
ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Miw5NiBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5l
KCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1p
dFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
OwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3Rh
dGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChn
ZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVu
dCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVt
ZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHBy
U3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1l
bnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIo
KTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5j
RXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CisK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisK
KyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0
SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVP
YmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAg
fQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEg
ZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYgKHNpbmdsZVN0YXRl
bWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmds
ZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKLSAgICAgICAg
ICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudElu
QmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVh
dGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHBy
b3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwg
d2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVy
YXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9w
ZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRv
ci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0
b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2
YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBt
dXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJh
dG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVj
b2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGlu
Zm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNl
IGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2Vu
ZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVu
Y3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9y
IHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUu
CiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGlu
ZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAg
ICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24g
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVx
dWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dM
YWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRv
ci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJv
dyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAg
ICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVm
aW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRl
bWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisg
ICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRl
bWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAv
LyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBj
b21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAm
JiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVT
dGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVu
dEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRl
bWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0
dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVy
bk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5v
dCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3Qg
aW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNl
dCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGlu
ZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwODksMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QK
IAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRv
IGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0
ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJn
dW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxw
dHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgp
LCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyNGRiZDdiZTJkODc4Njg1Y2UxNTBlNDcxZTM1YjJhODcyNmU2NzIwLi5kYTk0MDM4ZDZiOTJi
ZDhjNWQ1NGQ5ZDVmNmRjYWIwN2FkNDg1ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEJ5
dGVDb2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TmFOKGdyYXBoLmZyZWV6ZShqc051
bWJlcihQTmFOKSkpCiAgICAgICAgICwgbV9jb25zdGFudE9uZShncmFwaC5mcmVlemUoanNOdW1i
ZXIoMSkpKQogICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpCi0gICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKQorICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxv
Y2FscykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9udW1QYXNz
ZWRWYXJBcmdzKDApCiAgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQpAQCAtMTQxMyw3ICsx
NDEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAKICAgICBlbnN1cmVMb2NhbHMo
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgp
ICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIAogICAgIHNpemVfdCBh
cmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgp
OwogCkBAIC0yOTI3LDcgKzI5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3Jy
ZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZzZXQoKTsKKyAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cyAtIDEpLm9mZnNldCgpOwogICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVy
czsKICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwog
ICAgIApAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlJZCgKICAgICAKICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0
IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICAgICAgaW50IHJl
Z2lzdGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSku
b2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
IC09IG51bWJlck9mUGFyYW1ldGVyczsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRm9yQWxsS2lsbHMuaAppbmRleCA1MWFjNTVkNGNhNWY5ZWQ0OThhYjg4OTdjOTZlZDI1OTMz
M2Q2Mjg3Li5mNWY0Y2I1MjM4MGVkYmIzYzlmODk3MTAzMjExMGEwODhjZmQxMjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3Jl
LCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVCZWZvcmUgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYmVmb3JlLmJ5dGVjb2RlSW5kZXgp
OwogICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQWZ0ZXIgPSBmdWxsTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3MoYWZ0ZXIuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBmb3Ig
KHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2Nh
bCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAg
ICAgICAgICAgIGlmIChsaXZlQmVmb3JlLmdldChyZWxhdGl2ZUxvY2FsKSAmJiAhbGl2ZUFmdGVy
LmdldChyZWxhdGl2ZUxvY2FsKSkKICAgICAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKHJlbGF0aXZlTG9jYWwpICsgc3RhY2tPZmZzZXQpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNDI4ODcwYjFjMmEyNTg3MTVjZDcx
NTNiOGU3OTliZWFlOTJjNGU1Zi4uMTkxMWNmZWVkNjQxOTAzOTZjOGFlNjVmM2E3ZWM0OTc4YTc2
NmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzM4LDcgKzczOCw3
IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZy
YW1lKTsKICAgICAgICAgICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBmdWxsTGl2ZW5lc3MgPSBs
aXZlbmVzc0Zvcihjb2RlQmxvY2spOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoY29kZU9yaWdpblB0ci0+Ynl0ZWNv
ZGVJbmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOyByZWxhdGl2ZUxvY2FsLS07KSB7CiAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHJlZyA9IHN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwocmVsYXRpdmVM
b2NhbCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVwb3J0
IGlmIG91ciBjYWxsZWUgYWxyZWFkeSByZXBvcnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKaW5k
ZXggZTZjNDIzNWVjNGNhNjgxN2NkMzdlNjk5ODM0Nzg2MDg5ZjJiNmVmYS4uNWU1YTE1MDRjMjRk
MDY0MDRmNzg2YjE3MjJlMmY2MTUwZjhmYWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKQEAg
LTkzLDggKzkzLDggQEAgY2xhc3MgT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAvLyBXZSdkIHJlYWxseSBsaWtlIHRvIHVzZSBhbiB1bnNldCBvcmln
aW4sIGJ1dCBUaHJlYWRlZENQUyB3b24ndCBhbGxvdyB0aGF0LgogICAgICAgICBOb2RlT3JpZ2lu
IG9yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgZmFsc2Up
OwogICAgICAgICAKLSAgICAgICAgVmVjdG9yPE5vZGUqPiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKTsKLSAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJh
c2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkgeworICAgICAgICBWZWN0b3I8
Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOworICAgICAgICBmb3Ig
KGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xv
Y2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxl
c0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSGVhZCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICBmb3Ig
KGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyAr
K2xvY2FsKSB7CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+
bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAgICAgICAgICAgIE5vZGUqIHByZXZpb3Vz
SGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAg
IGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKaW5k
ZXggYmU4ZTJhNzkxNDlmNWEyZTMxNDRhZDQ2NGEzNWM2NTRmYzU5OWUwYy4uNjM5MmYxNGE5ODA0
Y2ZiNjkyZTg0YmMzOTAxMjBkMGJhYjdkYmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCkBAIC0xMjMsOSArMTIzLDkg
QEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAKICAgICB1bnNp
Z25lZCBudW1WYXJpYWJsZXM7CiAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQot
ICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFt
ZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgVmly
dHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9M
b2NhbCgpICsgMTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJ
bmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZUxv
Y2FscyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQpLnRvTG9jYWwoKSArIDE7CiAgICAgZWxzZQotICAgICAgICBudW1WYXJpYWJsZXMgPSBi
YXNlbGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgICAgIG51bVZhcmlh
YmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKICAgICAKICAgICAv
LyBDcmF6eSBzcGVjaWFsIGNhc2U6IGlmIHdlJ3JlIGF0IGluZGV4ID09IDAgdGhlbiB0aGlzIG11
c3QgYmUgYW4gYXJndW1lbnQgY2hlY2sKICAgICAvLyBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGFs
bCB2YXJpYWJsZXMgYXJlIGFscmVhZHkgc2V0IHVwLiBUaGUgcmVjb3ZlcmllcyBzaG91bGQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2Rl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNw
cAppbmRleCAyOWYwNWU1MWQ0NjFmZGY2ZTAxNDM4MzE5OWM5MThmNjQxNWU4Y2VhLi4zMDgwZGMz
NDUwOWM3MzMzMjRiODE0M2QyYTk1NGYwOGVkYWYxM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCkBAIC00NSw5ICs0NSw5
IEBAIEZvck9TUkVudHJ5SklUQ29kZSogRm9yT1NSRW50cnlKSVRDb2RlOjpmdGxGb3JPU1JFbnRy
eSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgRm9yT1NSRW50cnlKSVRDb2RlOjppbml0
aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25lZCBudW1DYWxsZWVSZWdpc3RlcnMpCit2
b2lkIEZvck9TUkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5z
aWduZWQgbnVtQ2FsbGVlTG9jYWxzKQogewotICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShudW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KTsKKyAgICBtX2VudHJ5QnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUobnVtQ2FsbGVl
TG9jYWxzICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5
SklUQ29kZS5oCmluZGV4IDQ0YWY4Zjk1NzkxYWFhNzhlNmU4MWRmYTY0OWM4NmExNWVhMzQ0ODEu
LjlhZTk3M2Y0MGQxMmMxNmI4MDljMGM4Y2ExZTM2ZWJhYThlZTM2OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaApAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBGb3JPU1JFbnRyeUpJVENvZGUgOiBwdWJsaWMgRlRMOjpKSVRDb2RlIHsK
ICAgICBGb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICB+Rm9yT1NSRW50cnlKSVRDb2RlKCk7CiAg
ICAgCi0gICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBudW1DYWxs
ZWVSZWdpc3RlcnMpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWdu
ZWQgbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBlbnRyeUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZW50cnlCdWZmZXI7IH0KICAgICAKICAgICB2b2lkIHNldEJ5dGVjb2Rl
SW5kZXgodW5zaWduZWQgdmFsdWUpIHsgbV9ieXRlY29kZUluZGV4ID0gdmFsdWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXggYWM3MTcxNGY5M2Y1NWFm
MjYxOGM3ZTQyMGE3MWI2NmRlMjExNzY2Ni4uNjAxYjQ2MDk0MDY0YWM2MTNhOThmYTljMjI5Mzg2
ZmE2ZWFkZjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
bnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAK
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVy
T2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1f
bnVtQ2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAgICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZm
ZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAK
aW5kZXggMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBlYi4uNTVkODI5YTJh
NjZiNjI2MDkxNTg0YTczZTExZGJhMDNjMjU2ZWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICAgICB9CiAgICAgY2FzZSBGVExGb3JP
U1JFbnRyeU1vZGU6IHsKICAgICAgICAgUmVmUHRyPEZvck9TUkVudHJ5SklUQ29kZT4gY29kZSA9
IGFkb3B0UmVmKG5ldyBGb3JPU1JFbnRyeUpJVENvZGUoKSk7Ci0gICAgICAgIGNvZGUtPmluaXRp
YWxpemVFbnRyeUJ1ZmZlcihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdy
YXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAg
ICAgICBjb2RlLT5zZXRCeXRlY29kZUluZGV4KGdyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2Rl
SW5kZXgpOwogICAgICAgICBqaXRDb2RlID0gY29kZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2
NTUxOWM1NzJlYjYxZWViMzllMzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2
MTU0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1
NSw2ICsxNTUsNyBAQAogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCop
OwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xp
dmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwog
ICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqKTsKICAg
ICAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFy
a2VkKGNvbnN0IHZvaWQqKTsKQEAgLTM4OCw3ICszODksNyBAQAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29u
c3Qgdm9pZCogcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZv
aWQqIHApCiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQo
cCkpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1iZXIocCk7CkBA
IC0zOTksNyArNDAwLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChhdG9tTnVtYmVyID49IG1fZW5kQXRvbSkgLy8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFs
aWQgY2VsbHMgb3V0IG9mIHRoZSByYW5nZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICghaXNBdG9tKHAp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRp
Y19jYXN0PGNvbnN0IEpTQ2VsbCo+KHApKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM1NDc1MWNkNzIwZmZm
YzExZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMuLjY0ZTc0Y2Y2NTBiMDBkNDg1YTgzMWNkNTIzNzFl
YzQyZGQ0ZGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtMTUzLDcgKzE1MywxNiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWUoKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVy
RnJhbWUtPnVuY2hlY2tlZFIoY2FsbGVyQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0
KCkpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVy
Q29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNvZGVCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKKworICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1RE
Wk1vZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgIHRo
aXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworICAgIGlmIChjYWxsZXJVbmxp
bmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlICYmIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgpID09IEdl
bmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9k
ZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUobWFrZVNvdXJjZShw
cm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxv
Y2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgaWYg
KCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkg
ewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
ICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBo
YXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5l
eGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJD
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjayA6IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFs
Q29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxl
clNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNh
Y2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hh
aW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CkBAIC00MTAsNyArNDE4LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lz
dGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAgICAgZGF0YUxvZ0YoIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tXG4iKTsKIAotICAgIGVuZCA9IGl0IC0gY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyArIGNvZGVCbG9jay0+bV9udW1WYXJzOworICAgIGVuZCA9IGl0IC0gY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscyArIGNvZGVCbG9jay0+bV9udW1WYXJzOwogICAgIGlmIChp
dCAhPSBlbmQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gKCppdCku
anNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGE2MWI1N2Q0NjE1Zjlh
OTJlOWIzNDM5NmVkMzg4Zjc5NmQ4NDUwZDAuLjg3OWVmYjJiYWI0ZTI0MGM3YzE5NzViYjQ2Zjlk
NDNkNjc2NDJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNCw2ICsyMTQs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9jb3B5X3Jlc3QpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAg
IERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERFRklORV9PUChvcF9zYXZlKQorICAgICAg
ICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCkBA
IC0yNjAsNiArMjYyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJvd19mdW5j
X2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X3JlZ2V4cCkKQEAgLTc2Myw5ICs3NjcsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAKIHVuc2lnbmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNv
dW50Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykgPT0gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkpOworICAgIEFTU0VSVChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykgPT0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSkpOwogCi0gICAgcmV0dXJu
IHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVn
aXN0ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50
ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIG1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiBpbnQgSklUOjpzdGFja1BvaW50ZXJPZmZz
ZXRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBk
MjI1ODIzOWQyZWI3MzAzNTFkZGUxMTVlNjhhNzViY2E0NzlkNDJkLi5mY2M4ZjMwNjY3N2U3NjZj
MGQxZmNhNTM3ODc0MjI1ZGEyNTYzOGRhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5
Myw2ICs0OTMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
b3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmpl
Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQsNyBAQAogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRT
aGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRz
dCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBkNDk0ODk2
NTBlNjg1NDY1OWU1YTYwZGU3OGU2MzNlMWE1MTgzODVhLi42ZWMxNWJiNDRiMzM0MDVmMGYyY2Uy
MzcwN2U0MTU0NjgzYWIxYWMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1fY29kZUJsb2Nr
LT5yZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKQEAgLTk3OCwxNCArOTc4LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX25l
d19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRQYXls
b2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVj
dGlvbi0+dS5vcGNvZGUpOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4
ZWMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIGVt
aXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQgSklU
OjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisK
IHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKQEAgLTEwMTgsMTEgKzEw
MzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogI2Vsc2UgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7CiAj
ZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rp
b24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG9wY29k
ZUlEID09IG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5saW5r
KHRoaXMpOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24o
Y3VycmVudEluc3RydWN0aW9uKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRO
ZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE0
MDUsNiArMTQzMywxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDg3M2ExZGRkNjU3YTI4OTY4YTBlNTFm
OTA2MzZkMWRlMmZjZjgxNi4uY2FkOTM0NjljMWJjYmQyYjU3ZGNiNTIwMjNhYmU5ZjcyM2Y3NDQ0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTk4NywyMyArOTg4LDQyIEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFu
ZFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlPgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRh
YmxlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsK
KyAgICBpZiAoaXNJbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShG
dW5jdGlvblR5cGU6OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
dm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSks
IHNjb3BlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0
ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxl
KSwgc2NvcGUpKTsKK30KKworZXh0ZXJuICJDIiB7CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIGZhbHNlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRl
KiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCiB7Ci0g
ICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxl
OjppbmZvKCkpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
RnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+
KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQorewor
ICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9u
PihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSog
c2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wg
aXNJbnZhbGlkYXRlZCkKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlk
YXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlv
bkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSk7
CkBAIC0xMDE5LDEyICsxMDM5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlCiAgICAgCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CisgICAgcmV0dXJuIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKIH0KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKKyAgICByZXR1cm4gb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5NjM4ZjE0NWM5ZDU1
NzVmMWM5NTJlMjc1ZjU5NGE3NmIzMmE0Yjg4Li4yNTQyNTUwMjI5ZGE0MWUxYWRkNDZiMGIwMjU4
ZThlNDk5NWI5YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMzAxLDYgKzMwMSw4IEBACiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
b3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRl
KiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5jcHAKaW5kZXggYTZjM2QyN2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3
ODBjMy4uZjU5MThiNzIxNzBhYzVkZTQ3YzJiZWQzNjM3OTY1MzBlMDE5NTQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTEzNCw5
ICsxMzQsOSBAQCB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIAogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzKSkpOwogCi0gICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9y
RnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gcm91bmRM
b2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNh
bGxlZUxvY2FscyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOwog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc2NWYxOTc5NTBlMzIzZjA1NjZlNzJj
NzNiNGVlZDYzZTNiMjA4YzUuLjM1MWE0YzhkNDQyZjJkNmM2OGM0YTkyYzMyZjE2ZWM2MDJkYTgy
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CkBAIC0yMjQsOSArMjI1LDkgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQp
OwotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJs
ZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVy
cyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCisgICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9m
IGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMg
PSAldSwgbnVtQ2FsbGVlTG9jYWxzID0gJXUsIGNhbGxlciA9ICVwLlxuIiwKICAgICAgICAgICAg
IGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAotICAgICAgICAg
ICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLAorICAgICAgICAgICAgY29kZUJsb2NrLT5tX251
bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzLAogICAgICAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CiB9CiAKQEAgLTQ1OCw3
ICs0NTksNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZAogI2lmIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCiAgICAgZGF0YUxvZ0YoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAl
cC5cbiIsIGV4ZWMpOwogICAgIGRhdGFMb2dGKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpKTsKLSAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIs
IGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgZGF0YUxvZ0Yo
Ik51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1D
YWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29k
ZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTA0MSw2ICsxMDQy
LDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNj
b3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0g
RnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhh
c0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBj
WzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RS
QUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9S
RVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0u
dS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisg
ICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJv
d19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBh
NGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
OTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0
Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1
bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNiYzFiNWIyMGQ5N2NhZjAzMy4uNjEyNjRk
OTg4NTc3NTU1MzcxMzVmOWMzNDdjMDBmYmUzZWFmOWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtNjk3LDcgKzY5
Nyw3IEBAIG1hY3JvIHZtRW50cnlSZWNvcmQoZW50cnlGcmFtZVBvaW50ZXIsIHJlc3VsdFJlZykK
IGVuZAogCiBtYWNybyBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayhjb2RlQmxvY2ss
IHNpemUpCi0gICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1tjb2RlQmxv
Y2tdLCBzaXplCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1tjb2RlQmxv
Y2tdLCBzaXplCiAgICAgbHNoaWZ0cCAzLCBzaXplCiAgICAgYWRkcCBtYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbCwgc2l6ZQogZW5kCkBAIC0xMjI3LDYgKzEyMjcsMTIgQEAgX2xsaW50X29w
X25ld19mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3Jf
ZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29w
X25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1OCw2ICsxNDY0LDExIEBAIF9sbGludF9vcF9u
ZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNf
ZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisKIF9sbGludF9vcF9u
ZXdfYXJyb3dfZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKQEAgLTE1NzMsNiArMTU4NCwx
OCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3Nh
dmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Nh
dmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0
Y2goMykKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCBhY2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUyMmI3MGUxZTk2MDliZTAwLi4yYjg0Y2JhZjM3
ZWYwNDYwYmRiOTE2ZDJiYmRhYzAyZTBkMmI0ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzQxLDkgKzM0MSwxMSBAQCBjbGFzcyBBU1RCdWlsZGVy
IHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2Nh
dGlvbiwgbnVsbHB0ciwgLyogZGVsZWdhdGUgKi8gZmFsc2UpOwogICAgIH0KIAotICAgIFlpZWxk
RXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSkKKyAgICBZaWVsZEV4cHJOb2Rl
KiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5k
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9k
ZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgWWllbGRFeHByTm9kZSog
bm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1l
bnQsIGRlbGVnYXRlKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQs
IGRpdm90LCBlbmQpOworICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBDbGFzc0V4
cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9u
bWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLApAQCAtMzY0LDEyICszNjYsMTIgQEAg
Y2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRM
b2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2Rl
IG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAg
ICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENv
bHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmlj
dENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwg
bW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9u
SW5mbykKQEAgLTg4Niw2ICs4ODgsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAg
ICAgIG5vZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7CiAgICAgfQorCisKKyAgICB2b2lkIHBy
b3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9CiAgICAgCiBwcml2YXRl
OgogICAgIHN0cnVjdCBTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAuLjViNmRjNDkz
ODVkYTc4MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0
Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3Nl
ZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlv
biwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAg
ICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihl
bmRDb2x1bW4pCkBAIC0xNjIsMTAgKzE2MiwxMSBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgog
ICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RD
b250ZXh0KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlz
QXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogeworICAgIEFTU0VSVChtX3N1cGVyQmlu
ZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rvcktp
bmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRj
MTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2UuLjBiZjAwYjdiZTkzN2Y3OTc4YTQ1NjM3
M2ZhZGUzMWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTE4MTcsNyArMTgxNyw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBw
YXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBD
b25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCkBAIC0xODQyLDggKzE4NDIsOCBAQAogCiAgICAgICAgIGludCBzdGFy
dFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAg
ICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RD
b250ZXh0OyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3Ry
dWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVk
IGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVT
dGFydE9mZnNldCkKQEAgLTE4NjksOCArMTg2OSw4IEBACiAgICAgICAgIGludCBtX2xhc3RMaW5l
OwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVk
IG1faXNJblN0cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGlu
ZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0xOTMyLDcgKzE5MzIs
NyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCi0gICAgY2xhc3MgWWllbGRFeHByTm9k
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgWWllbGRFeHByTm9k
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFlpZWxkRXhwck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDY4NzRiMjdlMzkwOTA3
YzhlNDE0OTgyNmMzNzllNDJjZjU5Y2U1MmEuLjE2MjVmM2ZiZTBlMWIzMjNmZGZjNDRiZTAxODRk
MGFlYmJjZjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTE5NCw3ICsxOTQsNyBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIFBhcnNlcjxM
ZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCAKKyAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZywKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9z
b3VyY2UoJnNvdXJjZSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogICAgICwgbV9sYXN0RnVuY3Rpb25O
YW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCiAgICAgLCBtX3BhcnNpbmdC
dWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCisgICAg
LCBtX3N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcpCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQoZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKICAgICAsIG1fdGhpc1REWk1vZGUodGhpc1RE
Wk1vZGUpCiB7CkBAIC0yNDksNyArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0
aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9u
SW5mbzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2Rl
LCBmdW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0g
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsK
IAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3Myw4ICsyNzcsMTIgQEAKICAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlT
b3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1v
ZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVT
b3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tG
b3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAg
ICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENo
ZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5k
aW5nOwpAQCAtMzAxLDcgKzMwOSwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRl
Y2xhcmF0aW9ucyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBjYXB0dXJlZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtW
YXJpYWJsZUFzQ2FwdHVyZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2Vk
VmFyaWFibGVzOworICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwor
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGUpIHsKKyAgICAgICAgaWYgKHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlO
YW1lcy0+YXJndW1lbnRzLmltcGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFy
Z3VtZW50c1VzZSgpOworICAgIH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRl
eHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVh
dHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0zMTEsMTAgKzMyNiw5IEBACiAgICAgICAg
IGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRB
cmd1bWVudHMpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkQXJndW1lbnRzRmVhdHVyZTsK
KwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7
CiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2Vk
VmFyaWFibGVzOwotICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVz
KTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50
IHRvIGFsbG93IGJ1aWx0aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAg
IElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFi
bGUuZ2V0KCkpOwpAQCAtNDU4LDYgKzQ3Miw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50
cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAg
YXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKwor
ICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpT
VG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0
UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90
b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBt
X3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMt
Pm51bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFy
dDsKKyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8ucGFyYW1ldGVy
Q291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKKworICAg
IHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNo
U2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIg
Z2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5n
ZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9y
RnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVy
YXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVy
OjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxp
bmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBp
bmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4
cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAg
ICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0
aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOwor
ICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOwor
CisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJh
bExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0x
NTg5LDE1ICsxNjQyLDE0IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBl
IGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0g
Ym9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlU
eXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNv
bHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTYwOSw3ICsxNjYxLDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9u
Iik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBh
cmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
IH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3Nyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAi
bWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAg
ICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVy
biAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZToKQEAgLTE3MDMsNiArMTc1NywzNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRl
cnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAg
ZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5h
bWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsK
KworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJh
dG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0
aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAg
IC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFs
dWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRv
clJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Cisg
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9k
ZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9u
UmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFt
ZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE4MTMsMTIgKzE4OTgsMTAgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24u
bGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0
ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVu
Y3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRM
b2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAg
ICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1
Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rp
b24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7Cisg
ICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVj
dGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rp
b25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAg
ICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hl
ZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVl
ZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyArMTkxNSw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAg
IG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAg
ICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7
CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9k
eVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7
CkBAIC0xODU0LDE0ICsxOTM3LDMzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25O
YW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVT
dGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHko
Y29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1
bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAg
ICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJu
IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
Y29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwg
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAg
QXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7Cisg
ICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9y
bVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhh
cyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5n
IGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2Nv
cGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5o
YXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3Mg
Y29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBl
ckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVy
QmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUo
Z2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1
bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFp
bElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zm
c2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlm
IChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0
aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25J
bmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICIn
IiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24g
bmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE5MjksNyArMjAzMSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3Vt
ZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5v
dCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5h
bWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyAr
MjE4Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9y
KSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAg
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVk
ICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEg
Z2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3MzEs
NyArMjgzMyw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIEV4cHJlc3Npb25FcnJvckNsYXNz
aWZpZXIgY2xhc3NpZmllcih0aGlzKTsKIAogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKLSAg
ICBpZiAobWF0Y2goWUlFTEQpKQorICAgIGlmIChtYXRjaChZSUVMRCkgJiYgIWlzWUlFTERNYXNr
ZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRvcigpKSkKICAgICAgICAgcmV0dXJu
IHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOwogI2VuZGlmCiAKQEAgLTI4MzYsNiArMjkz
OCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBhcnNl
UGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVs
ZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0
ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAgICAg
U2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsKQEAg
LTI4NDMsMTMgKzI5NDYsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25z
dW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFy
dFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1l
bnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAgcmVz
dG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RT
dGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0zMDQxLDcgKzMxNDUsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2Vu
TG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBt
ZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2Vu
ZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRv
ciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9k
SW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhp
cyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7
CkBAIC0zMjk0LDcgKzMzOTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlP
cChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFU
T1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChw
YXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1v
ZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25U
eXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25J
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3YjBlODFhZWEx
ZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMz
NDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
MTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29w
ZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAg
LCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFs
c2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDAp
CiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9p
c0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVuY3Rp
b25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlk
U3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0FyZ3Vt
ZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9v
cERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAgICAg
ICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYg
KzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7
CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9k
ZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgsNiAr
Mjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJndW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0SXNM
ZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsK
QEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNF
dmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVy
YXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAgICAg
ICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91c2Vk
VmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5l
c3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAg
ICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRTY29w
ZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5t
X2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGlj
YWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBiZSBy
ZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRT
Y29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygp
ICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVz
LmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7
CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRo
YXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVk
IGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNh
bCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0
Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0
byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJp
YWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2Nv
cGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlh
YmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFy
aWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdp
dGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0cnVjdCBTY29w
ZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lzRnVu
Y3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAg
ICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNl
OwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgeworICAg
ICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAg
IH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNGdW5j
dGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1
bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU3OSw2
ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7
CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQgbV9s
b29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBj
bGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNv
dXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJC
dWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmlu
ZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZO
ZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRl
bnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRl
bWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVk
KiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBl
IHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBh
cnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBib29sIGlzR2Vu
ZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBw
YXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6
OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2lu
ZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5j
dGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1
bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBl
LCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRl
Y2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250
ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBw
YXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlv
bnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9u
JiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3Np
dGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25M
aXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBmb3JMb29wQ29u
c3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyMTUsNiArMTIzNyw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9v
bCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBT
b3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNl
Q2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZv
PFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291
cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGlu
OworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1Y3RvcktpbmQg
bV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhpc1REWk1vZGU7
CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAgLTE0NjMsNyAr
MTQ4Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFy
c2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpT
VGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKICAgICBD
b25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lm
TmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIEFTU0VS
VCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNl
cjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9k
ZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNU
RFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAg
aWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0x
NDg1LDcgKzE1MDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0
Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJz
ZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1v
ZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAg
IFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQs
IHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0g
cGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlm
IChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZk
ZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBj
MDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApA
QCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1h
bEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9u
TW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwK
QEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAg
LTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAorI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gK
KworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3Vy
Y2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dy
YW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKKworICAgIFNvdXJjZUNvZGVLZXko
KQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBU
aGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAg
ICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQor
ICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykg
fCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8IChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhp
c1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKKyAg
ICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKwor
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9CisK
KyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4g
SXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBz
dHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3Ro
ZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAg
ICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQorICAgICAgICAgICAgJiYgc3RyaW5n
KCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNvdXJjZUNvZGUg
bV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5zaWduZWQgbV9mbGFnczsK
KyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggewor
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1
cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVL
ZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9
OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1
ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291
cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwo
KTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNlQ29kZUtleV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1
MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZkMWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYx
ZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJu
IFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9
CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJu
IENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tl
cj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291
cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0K
KyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJv
b2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQog
ICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUs
OCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1
cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCisgICAgdm9p
ZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV90b3BC
aW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVj
MGY2OWNkYzdjYmVkZjBlLi40OTQ1MjBkYmRmNDI4Yzg2NDBkYjVlMjIzZjAwZTIxZjJmZWNmZmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFs
Q29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1v
ZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsK
KyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAg
IEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAog
ICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJv
Z3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4
LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1
bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVu
ZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlv
biBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8g
dmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1w
dHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENv
bnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5
LCBlbXB0eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1
ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygp
KSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0s
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDQ4YzhjZmVmODQ2NDlkOGYwOWMyZmIw
Yjk0ODgxMTFlMTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1MzNiMWZkYTNkYWE4OTVkMDZjZGM4OTU3
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUg
IlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGVLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmly
b25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01Niw3MSArNTcsNiBA
QAogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCi1jbGFzcyBTb3Vy
Y2VDb2RlS2V5IHsKLXB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dy
YW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKLQotICAgIFNvdXJjZUNvZGVLZXko
KQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVl
ZGVkKQotICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQotICAgICAgICAsIG1fbmFt
ZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3MoCi0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvZGVUeXBlKSA8PCAzKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0cmljdE1vZGUpIDw8IDEpCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsg
fQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQotCi0gICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQot
Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7
IH0KLQotICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVt
YW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCi0gICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRo
ZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KLSAgICBTdHJpbmcgc3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCi0gICAgICAgICAgICAmJiBsZW5ndGgoKSA9
PSBvdGhlci5sZW5ndGgoKQotICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdz
Ci0gICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCi0gICAgICAgICAgICAmJiBz
dHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU291cmNl
Q29kZSBtX3NvdXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICB1bnNpZ25lZCBtX2Zs
YWdzOwotICAgIHVuc2lnbmVkIG1faGFzaDsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFz
aCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNl
Q29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxz
ZTsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0
eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5Lmlz
TnVsbCgpOyB9Ci19OwotCiBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKICAgICBTb3VyY2VDb2Rl
VmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIwMTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2Ez
YjMzYjEuLmRlMDdmMWM1MWI1NTEyZGNjYWI5YjAyNDhmM2ZkODFiZjFiNGFiYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBc
CiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAog
ICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04p
IFwKQEAgLTMyOSw2ICszMzAsMTMgQEAKICAgICBtYWNybyhVaW50MzJBcnJheSkgXAogICAgIG1h
Y3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3Jv
KGdlbmVyYXRvcikgXAorICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5l
cmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCisgICAgbWFjcm8oZ2Vu
ZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JUaGlzKSBcCisgICAgbWFjcm8oZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggOTBmNjVjMjRk
NjMyYjYyMTA4OWRlNWMxYmJkNDk2NGQ0NDk2NDM5MS4uYzY3Y2M3MDIxMTlkNzM4ODNkZGNlNzFk
ZjczOWUyZGFiYzZiNzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25G
dXp6LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKQEAgLTY0NCw2ICs2NDUsMzggQEAgc3RhdGljIENvbW1vblNsb3dQYXRoczo6QXJp
dHlDaGVja0RhdGEqIHNldHVwQXJpdHlDaGVja0RhdGEoVk0mIHZtLCBpbnQgc2xvdHNUb0EKICAg
ICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCit7CisgICAgLy8g
T25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJl
Z2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUg
bm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFj
ZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxs
LgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7
CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSk7CisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2Vk
LCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQg
YWxsb2NhdGlvbnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4
ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOworICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6
UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwor
ICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUg
Z2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9
IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgZnJhbWUtPnJl
c3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAy
MjYxODVjNGM3ZWE3Y2M2ZmM3ZjNjYzRmMWYzN2U2MGViNzJmMTdhLi5mMDBkODcwNWQ0ZTY3ZmU0
ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lk
IGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZCom
IGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhf
c2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggYTYz
MmM0OGUwMzBiNDFiMzNiMzNkYmExNmEzMWNmNjEzNWI0ZjUwZi4uMDJmMzk1YzQyYmMxMmVlMDIx
ODM0YTgyZjgxZjBmYzk3OWJjZGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKICAg
ICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvcik7CiB9CiAKIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKQEAg
LTczLDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICBSRUxFQVNFX0FTU0VS
VCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVBy
b2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFs
eXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGVycm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5k
ZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBkMzIwZWM3Y2E2MC4uNDIwNjAwNjcyMjlh
YTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlu
a2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4
ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJy
b3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBmaXJzdExpbmUoKSwgCkBAIC01NTYsNyArNTU2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBhcnNlPFByb2dyYW1O
b2RlPigKICAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sIAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmlj
dCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRmNmMwZmViYzIz
OTcxMjZiNjBmZDdiMGMzNDBhMDQuLjc1YjMwOTFjZjgxYzcyOTZmZTJmYWZlOWE5Njc2NTM2Mjk5
NzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAg
LTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNp
Z25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
VmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0K
QEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3
IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5
bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fy
cm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWRO
YW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAg
ICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1
ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBjYWJiMjIxYzQyOWMu
LjVkN2VmMzc2NmFjMGQ2OWIzNTU0NmFmN2U3OTFjZTk0OWJiNDJkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC03OSwyOCArNzksMzAgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUg
RnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewogICAgIGlmICghZ2xv
YmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFs
RGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9u
TmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rp
b25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
KTsKIH0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgQXJnTGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBv
c2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVu
Y3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAg
ICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigp
IHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBm
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5l
cmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwog
ICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3Ry
aW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CisgICAgICAgIHByb2dy
YW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9u
TmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOworICAgICAg
ICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhl
eGVjKS0+dmlldyhleGVjKSk7CkBAIC0xMjYsOSArMTI4LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogfQogCiAvLyBFQ01BIDE1LjMuMiBU
aGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewotICAgIHJldHVybiBj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlv
bigpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBh
cmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0
aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZi
NGM0MmEwYTY3ZDJlMy4uZDExZmIyYTM3NGQ2MTkxNTBjOWQ2YzQyNjI5YmE5MWNjMTIwNWY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaApAQCAtNTYsMTIgKzU2LDE3IEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRp
ZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpU
ZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKK2VudW0gY2xhc3MgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlIHsKKyAgICBGdW5jdGlvbiwKKyAgICBHZW5lcmF0b3IsCit9OworCitKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKK0pTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xp
c3QmLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkZ1bmN0aW9uKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJp
bmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAt
MSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3Zl
cnJpZGVMaW5lTnVtYmVyID0gLTEsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVy
YXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCisgICAgICAgIGxv
Y2FsQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZMb2NhbHMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Cisg
ICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1i
ZXJPZkxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMp
OworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUg
bG9jYWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1
bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxs
ZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIGxpdmVD
YWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGxv
Y2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2FscykKK3sKKyAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9j
YWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNhbGxlZUxvY2Fscy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhlYy0+dW5jaGVja2Vk
Uih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7
CisgICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBh
cyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9j
YWxzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDU0NWIxNDdkZDRhYmZiMmJi
YjliNWE3MTk0ZThmNzQ4NDFjNDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmluZSBHZW5lcmF0b3JG
cmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMg
SlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAg
IGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6
OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3Jl
YXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKworICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIGxvY2FscygpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMp
ICsgb2Zmc2V0T2ZMb2NhbHMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXgg
PCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4
XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMp
CisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxz
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHBy
b3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisKK3ByaXZhdGU6CisgICAgR2VuZXJh
dG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgc2l6ZV90
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcm90ZWN0ZWQ6
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZjU4OTMxZmM1NTIwYTVjMjIw
MTVlMjVmNzAyYTdkNmUwOTc5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7
CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9y
RnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBm
b3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwg
RG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJn
TGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2Jq
ZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdz
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworfQorCitDYWxsVHlwZSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKwor
Q29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0
OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRl
eHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+
ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4
ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
IH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVj
dCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBh
MDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVf
aAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5
cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAg
fQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3
ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgor
CisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5l
cmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZn
ZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90
b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVn
aW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rp
b24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQK
KyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwor
fQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFz
ZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAw
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVf
aAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRp
YyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4o
dm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKwor
cHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChH
ZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JUaGlzTW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMDNlN2IwMjJmMWM2NjlkMzk3YTli
NzdiNWVmMjRlOTVmNTIwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlzTW9kZV9oCisjZGVmaW5lIEdlbmVyYXRv
clRoaXNNb2RlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIGh0dHA6Ly9lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0aW9uYWxsb2NhdGUKKy8vIGh0dHA6Ly9l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rp
b24tb2JqZWN0cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlzdC1uZXd0YXJnZXQKKy8vIFdoZW4gdGhl
IGZ1bmN0aW9uIGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24sIGl0cyBbW0NvbnN0cnVjdG9yS2luZF1d
IGlzIGFsd2F5cyAiZGVyaXZlZCIuCisvLyBUaGlzIG1lYW5zIHRoYXQgT3JkaW5hcnlDYWxsQmlu
ZFRoaXMgaW4gc2VjdGlvbiA5LjIuMiBpcyBuZXZlciBleGVjdXRlZCBmb3IgR2VuZXJhdG9yRnVu
Y3Rpb24uCisvLyBTbywgd2hlbiB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcsCisvLworLy8gICAg
IGZ1bmN0aW9uICpnZW4oKQorLy8gICAgIHsKKy8vICAgICAgICB5aWVsZCB0aGlzCisvLyAgICAg
fQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0gZ2VuKCk7CisvLyAgICAgICAgIC8v
IHx0aGlzfCBzaG91bGQgYmUgZ2xvYmFsLgorLy8gICAgICAgICBnLm5leHQoKTsKKy8vICAgICB9
CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisvLyAgICAgICAg
IC8vIHx0aGlzfCBpbiBnZW4gc2hvdWxkIGJlIFREWiAoYW5kIGl0IHdvbid0IGJlIGZpbGxlZCku
CisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyBUaGUgZm9sbG93aW5nIGZs
YWcgbWFuYWdlcyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVyYXRvckZ1bmN0aW9uIGlzIGNhbGxlZCBh
cyBhIGNvbnN0cnVjdG9yLCBpdCByZXR1cm5zIGEgR2VuZXJhdG9yIHRoYXQgZnVuY3Rpb24gaGFz
IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSBmbGFnLgorLy8gSW4gdGhpcyBjYXNlLCB3aGVuIGFj
Y2Vzc2luZyB8dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBlcnJvciBvY2N1cnMuCitlbnVtIGNsYXNz
IEdlbmVyYXRvclRoaXNNb2RlIDogdW5zaWduZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5
Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzTW9kZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIw
MWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMy
YWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4
LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlm
ICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1
dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0p
OwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAg
ICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAg
QVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdl
bmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
U2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0
aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4ZWN1dGFibGUt
PnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwg
IkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
RnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVy
biBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkw
ZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0
aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3Mg
TExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklU
KQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFz
cyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0
b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAorICAgICAg
ICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisKKyAgICBj
b25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JG
dW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAg
IHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisg
ICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNp
dHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0K
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9y
RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0
aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGVmZWFlNTMzMTViNzUxNTljMjRjYWU3Y2M5ZTA0MThjYjQwMGNkM2IuLmY3YjBi
OTVjZTIxMGE1YzY0OTY4MmIyYTI3NDA4NDlhZjBjOTFlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAK
ICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUsNyBAQAogI2luY2x1
ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JV
SUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURf
SVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5
cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9J
VEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTQgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVj
dHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4
RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3Ii
KSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2
ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKKwor
ICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwor
ICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25D
b25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1f
Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
Z2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fZ2VuZXJhdG9yUHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIERvbnRFbnVt
KTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3Rv
dHlwZS5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC01NTEsNiArNTY0LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclBy
b3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhz
dGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAg
LTgxOCw2ICs4MzIsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
dGVyYXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODUwLDYgKzg2Niw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNh
ZDNjYzc4MTg5M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3
NjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJh
dG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsK
QEAgLTIyOSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1f
YXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdF
eHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJh
dG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJh
dG9yUHJvdG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQ
cm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9j
b25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVn
RXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0K
ICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAg
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAg
ICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiArNTEzLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBz
eW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4ZDI4YTUwZDk3YTFl
MGI3N2I1MDYzYS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZjMDZjNTRhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1
bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBz
b3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewogICAgICAgICB0
aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZm
ZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpA
QCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxl
QWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJy
ZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBm
dW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3Ry
dWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRp
b246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBm
ZDBjMmY0M2I1MjdhMWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8
U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGUwYmMz
ZDUxZmI2YzdhOGYwODliYTRkODdkNGU2NGM2YTk3MGJlNTAuLjExYTRiZjQ2NGU2NGM3ZmYwN2Nl
ZmU0NzIxNDk2OTRjMzJkMjhiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwK
QEAgLTcxOSw3ICs3MTksNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2Nv
cnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
QXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXku
ZnJvbV9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTcyNyw3ICs3MjcsNyBA
QAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9j
bG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNf
bWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0Fy
cmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFi
bGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0
aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBA
IC03NTMsNyArNzUzLDcgQEAKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3Qu
anMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRo
X2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyaWNfaXRlcmFi
bGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dp
dGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NjMsNyArNzYzLDcgQEAK
IC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190aHJvdy5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyYXRv
cl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFu
Y2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC04MDMsNTUgKzgwMyw1NSBAQAogLSBwYXRo
OiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlw
ZSUuY29uc3RydWN0b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0
b3JQcm90b3R5cGUlLnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rpb25hbGl0eS5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX2NhbnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9z
aG9ydGhhbmRfZ2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5l
cmF0b3JzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX2dlbmVyYXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRp
bmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3N0cmlu
Zy1rZXllZF9zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3Mu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
bnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9j
bG9zaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJv
dy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19pc19hX3J1bnRpbWVf
ZXJyb3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRl
bmNlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L01hcF9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9NYXBfTWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTEwNSw3ICsxMTA1LDcgQEAK
IC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5n
c19pbl9mdW5jdGlvbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYv
c3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dp
dGhfZ2VuZXJpY19pdGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVs
ZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2NmYWUxYTViNWE2NmMx
M2JkMjNlOGNhZTUyN2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRh
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
CkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewor
dmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFy
ciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJv
bCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30K
K2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsK
KyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2Rz
Wyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0
b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9
CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVy
YXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2Zf
aXRlcmFibGVzLmpzCmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4
MjkuLjgxNjdkYTUyZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2lu
c3RhbmNlc19vZl9pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAt
MSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBn
bG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1l
dGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09
ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIu
bGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0s
CisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhy
b3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9
IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBm
dW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3Io
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwppbmRl
eCA2ZjY4MmY1YTE2Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFk
Yjk1Mjk0MzQzZjlhYzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9i
YWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9f
Y3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8
fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0
b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0gewor
ICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRv
bmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJu
J10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsK
K2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7
IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3Nl
ZCA9ICcnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9j
bG9zaW5nX3ZpYV90aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2
NDcwNGEwNGQ0Li4xZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3Zp
YV90aHJvdy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVm
aW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJs
ZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5
cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1
cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0
aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0
aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93
JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3lt
Ym9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0
ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1h
cmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
M2JjZDlhN2UxODgzNzA3MGNhZWU4ZGY4YmNiMTY5Yjc1NTU2OWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMt
ZnJvbS1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5j
dGlvbiBzaG91bGRCZUFycmF5KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZShhY3R1
YWwubGVuZ3RoLCBleHBlY3RlZC5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhw
ZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNob3VsZEJl
KGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIHByaW50KEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOworICAgICAgICAgICAgdGhyb3cgZTsK
KyAgICAgICAgfQorICAgIH0KK30KKworCitmdW5jdGlvbiAqZ2VuKGEsIGIsIGMpCit7CisgICAg
ZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0K
KworICAgIHJldHVybiB0ZXN0OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAzKTsKK2xldCB7dmFs
dWU6IGZ1bmN9ID0gZy5uZXh0KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3Vt
ZW50cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFy
Z3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3
Yjg2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1g
KTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
IH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsKK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICAi
dXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAg
InVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAg
YyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcg
PSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1
ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIp
LnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAidXNlIHN0cmlj
dCI7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcx
KDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIo
YSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQg
YXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIg
ZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0
MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVl
KSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
Mik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5
bnRheC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3
MDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCArMSw0OCBAQAorZnVu
Y3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlw
dCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2Yg
U3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiAr
IFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNj
cmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAg
ICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
bWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmco
ZXJyb3IpKTsKK30KKwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29hIHsKKyAgICAqY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNs
YXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rlc3RTeW50YXgoYAor
Y2xhc3MgQ29jb2EgeworICAgICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9
Cit9CitgKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgc3RhdGljICpvaygp
CisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1t
ZXRob2RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjVhNTRhMmRjNDEyNzA3OWMzMWNmZDMxZjliMzFjZjUw
YWQ2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjIgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9
YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2NsYXNzIEEgeworICAgICpnZW4oKQor
ICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAg
cmV0dXJuIDQyOworICAgIH0KKworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkKKyAgICB7CisgICAg
ICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsK
KyAgICB9Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gYS5nZW4oKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgYS5nZW4oKTsKKyAgICB9
LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAn
bmV3IGEuZ2VuKCknKWApOworfQorCit7CisgICAgbGV0IGcgPSBBLnN0YXRpY0dlbigpOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgIGxldCBnID0gbmV3IEEuc3RhdGljR2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBBLnN0YXRpY0dlbigpJylg
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWJkNzhkZjc2YTBjYjc1OGI4MWVl
YWIyYzI1NWI5ZGFkMWI0NDc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCkBAIC0wLDAgKzEsNjUgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAg
ICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhy
b3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3Ry
aW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAqZ2VuKCkgeworICAg
IHlpZWxkIGV2YWwoInRoaXMiKTsKK30KKwordmFyIGcgPSBuZXcgZ2VuKCk7CitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgZy5uZXh0KCkudmFsdWU7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQiB7IH0KKworKGZ1
bmN0aW9uKCkgeworICAgIGV2YWwoJ3RoaXMnKTsKKyAgICBldmFsKCd0aGlzJyk7Cit9KCkpOwor
CitjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICBuZXcgQSgpOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEMgeworICAgICpnZW5lcmF0b3IoKQorICAgIHsKKyAg
ICAgICAgeWllbGQgZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IG5ldyBjLmdlbmVyYXRvcigpOwor
ICAgIGcubmV4dCgpOworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0
b3IgKGV2YWx1YXRpbmcgJ25ldyBjLmdlbmVyYXRvcigpJylgKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcgPSBjLmdlbmVyYXRvcigpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCBjKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9u
LWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTZhZTVmZDE5ZjlkOGM4YjA4ZGU2YjBlZDZh
NWJhZTc1YWZkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDkg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7
CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVyYXRvckZ1bmN0aW9uLCAndW5kZWZpbmVkJyk7
Cit2YXIgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IChmdW5jdGlvbiAqKCkgeyB9KS5j
b25zdHJ1Y3RvcjsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuX19wcm90
b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1uYW1lLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnVuY3Rpb24tbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjc3MzZjNDIzNGUxODc5MTBiOGNhNjM1
M2NiZjQ1YjBkNjAwNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpAQCAtMCwwICsxLDEyIEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKwordmFyIG9rID0gZnVuY3Rpb24gKmdlbmVyYXRvcigpCit7CisgICAgeWllbGQg
Z2VuZXJhdG9yOworfTsKKwordmFyIGcgPSBvaygpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDU2MWQ5MzA3NjBkMjBlZTZlZjRjZTU3MDNlZjczYjlmZjlhZTU2YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7Cit9Cit2YXIgZyA9IGdlbigpOwor
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0LmNhbGwoe30pOworfSwgYFR5cGVFcnJv
cjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCisKK3Nob3VsZFRocm93KCgpID0+
IHsKKyAgICBnLnRocm93LmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBi
ZSBhIGdlbmVyYXRvcmApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5yZXR1cm4uY2Fs
bCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1y
ZWxhdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZWxhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhNGRjOGNlMDc2YzczMWM0MjRhODg1ZmIzOGUz
NTdlNDkzZmZmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gKmdlbmVyYXRvckZ1bmN0aW9uKCkgeworfQorbGV0IGdlbmVyYXRvciA9IGdl
bmVyYXRvckZ1bmN0aW9uKCk7CisKK3Nob3VsZEJlKGdlbmVyYXRvciBpbnN0YW5jZW9mIGdlbmVy
YXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKHR5cGVvZiBnZW5lcmF0b3IuX19wcm90b19f
LCAnb2JqZWN0Jyk7CitzaG91bGRCZShnZW5lcmF0b3IuX19wcm90b19fLCBnZW5lcmF0b3JGdW5j
dGlvbi5wcm90b3R5cGUpOworCitsZXQgR2VuZXJhdG9yUHJvdG90eXBlID0gZ2VuZXJhdG9yLl9f
cHJvdG9fXy5fX3Byb3RvX187CisKK2xldCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IGdl
bmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXzsKK2xldCBHZW5lcmF0b3JGdW5jdGlvbiA9IGdlbmVy
YXRvckZ1bmN0aW9uLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1
bmN0aW9uLnByb3RvdHlwZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxkQmUo
Z2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VvZiBHZW5lcmF0b3JGdW5jdGlvbiwgdHJ1ZSk7Citz
aG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJl
KEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLl9fcHJvdG9fXywgRnVuY3Rpb24ucHJvdG90eXBl
KTsKKworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlLCBHZW5l
cmF0b3JQcm90b3R5cGUpOworc2hvdWxkQmUoR2VuZXJhdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9y
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2xldCBhcnJheUl0ZXJhdG9yID0gW11b
U3ltYm9sLml0ZXJhdG9yXSgpOworbGV0IEFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBhcnJheUl0
ZXJhdG9yLl9fcHJvdG9fXzsKK2xldCBJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQ
cm90b3R5cGUuX19wcm90b19fOworCitzaG91bGRCZShJdGVyYXRvclByb3RvdHlwZSwgR2VuZXJh
dG9yUHJvdG90eXBlLl9fcHJvdG9fXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3Jl
LWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEyMTdmNzJjODdjMDg5OGU1OTA5YWJhZjM4
NWJmMjA4OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsx
LDEyIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJO
RyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2
YXIgZyA9IGdlbigpOworZy5yZXR1cm4oIkhlbGxvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODBh
ZjZlMDc4OWRjMThiYmFkM2EwYWZiYmY1YWQ5YTg1ZWMxMzVlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpAQCAt
MCwwICsxLDY3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworCit2YXIgZ2xv
YmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCBnbG9iYWwpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAgICAg
fSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUu
YCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAgICAg
bGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCB0
aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgfQorICAgIHsKKyAgICAgICAg
bGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAg
ICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3Mg
dW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgdGhp
c09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOworICAg
ICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVhYzBkOWEzZTQxODc5ZWRkZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJl
Zm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxl
KCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQor
eworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2YXIgZXJyb3IgPSBu
ZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhyb3duID0gbnVsbDsKK3RyeSB7CisgICAgZy50aHJvdyhl
cnJvcik7Cit9IGNhdGNoIChlKSB7CisgICAgdGhyb3duID0gZTsKK30KK2lmICh0aHJvd24gIT09
IGVycm9yKQorICAgIHVucmVhY2hhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQzYjJkZjk5YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2ZWFiOGRiNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtbmV3LXRhcmdldC5qcwpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rp
b24gKmdlbigpCit7CisgICAgeWllbGQgbmV3LnRhcmdldDsKK30KKwordmFyIGcgPSBnZW4oKTsK
K3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworCit2YXIgZzIgPSBuZXcgZ2Vu
KCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNiZjhkNmM4OTc3YmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOwor
ICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9
IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2Up
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgICAgIHJldHVybiBldmFsKCdzdXBlcicpOworICAgIH0KKworICAgIHNob3VsZFRocm93KCgp
ID0+IHRlc3QoKSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5j
dGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAg
ICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICByZXR1
cm4gZXZhbCgnc3VwZXIuZ2VuKCknKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0g
bmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGEuZ2VuKCkubmV4dCgp
OworICAgIH0sIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rp
b25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAg
Z2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgeWllbGQg
c3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7Cisg
ICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVy
biA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAg
ICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAg
ICAgICAgbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEg
Y29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBlZDU2Njg4YTZhMjk4
Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgZm9yRWFj
aFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yRWFjaFNldEJpdChj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgbiA9
IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kp
IHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZmMTIwMTNjNjQ4Li5m
NDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFC
TEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDAKKyNk
ZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5
ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwog
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5B
QkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9T
WU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
OwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5B
QkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5U
QVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3
ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1F
TkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVf
RVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsK
IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThk
NjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3
LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9D
TEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJB
VE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsK
IEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5U
QVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpp
bmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNjLi4wMmNjNzk4YjIw
YmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAt
MzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREVW
SUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQg
UFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9H
RU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJ
QyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RF
TSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGQ5NjIyNGQ0MTcx
YmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2ZjdhMDNmZGQyOWI2
MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3
LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xl
IEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBw
b3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dF
TkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1
bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJh
bCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJ
VkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNTc4YWJiOTQyOGZkZTFjZTk5MzUwZWE4YmViOWZkM2Q3NTI0MjMwYy4uMTRjN2JlNTAz
MjQxZGM5N2I1YzNjNGMzZjQwMzkyZjA2OWMxMTNjNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTI0ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIElt
cGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5h
YmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTUtMTEt
MjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHVuY29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNkZWI1MjVjZjk0YjVhOGUxMjFiYTI0
ZTM3OWQyMzNkNjkxYzZiODkuLjQ2MjE4ODE1YjE1M2M1MzI5OWJjMjcxZDliNzdmNzQ4YWQzMDcw
NWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTE4NSw3ICsx
ODUsNyBAQCBCRUdJTgogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCIs
IGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjbGFzc1N5bnRheCB9LAogCiAgICAgeyBvcHRpb24g
PT4gImdlbmVyYXRvcnMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIs
Ci0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMCwg
dmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBv
cnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJtb2R1bGVzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBt
b2R1bGVzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X01PRFVMRVMiLCBk
ZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbW9kdWxlc1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OTFhMTc3Y2UzZDNmMGVhOTRlNmFkNGM2NDAzZWIz
OTlkY2M5YzM0Li5mMWIwMDNjNWM4ZDljZDYzZDg1ZjA4YTgxZTFlYTAyMTc5YzM0Yjc4IDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3Jz
IGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxNS0xMS0yMyAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gVXBkYXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuMTEuMiByZWxlYXNl
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmll
cy9DaGFuZ2VMb2cKaW5kZXggMGM4YWYyYWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBi
NS4uZGQ5NWUyZDdkOTI1NDI2NjE5MGVlMGI5NjEwNDJmOGU1MmJiZTg1YSAxMDA2NDQKLS0tIGEv
V2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1
cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3Mg
IDxuaWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1h
dGlvbnMgQVBJIGFuZCBtb2RlbC4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0Zjlm
ZWJlNGRmYTc5MjlkN2UzM2NjZGNmLi5iMDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3
MGE4OGVkIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVh
dHVyZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3Bz
L0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RP
Uj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElB
X1YyPC9FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgLz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwv
RU5BQkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJ
VEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxF
TkFCTEVfRklMRV9TWVNURU0gLz4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9v
bHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dp
bi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRm
NGFmMTU4ZWM1ZWU0ODNkMDY5NmM3MWNlNDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1
ZWE2OWExYTk4MzUzODBhOCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dp
bi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcg
QEAKICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RP
TTRfRVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+
Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRP
UlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVO
QUJMRV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYPkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExB
VEVfTElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266135</attachid>
            <date>2015-11-24 06:10:44 -0800</date>
            <delta_ts>2015-11-25 05:27:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151124231025.patch</filename>
            <type>text/plain</type>
            <size>324316</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OGMwMzQxZjNjZTBkM2QzMjg3ZDhjZmU4NzdhMTUwNjllYjk0NTE3Li44MGM2ZTg0MDZmOGE2NzY5
YWIxZDhiYjU3ZmIwNGUzYWI1MThlOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OTUgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlZ2lzdGVyIGlz
IGxpdmUuCisgICAgICAgIFJlZ2lzdGVycyByZXNpZGUgaW4gQyBzdGFjay4gU28gaWYgd2UgZG9u
J3QgcGVyZm9ybSBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIHZhbHVl
IGlzIEpTQ2VsbCBvciBub3QKKyAgICAgICAgdG8gZW1pdCB3cml0ZSBiYXJyaWVycy4KKyAgICAg
ICAgQnkgcGVyZm9ybWluZyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMsIHdlIGNhbiBkZXRlcm1p
bmUgYWN0dWFsbHkgKmRlZippbmVkIHJlZ2lzdGVycyBhdCB0aGF0IHJlc3VtZSBwb2ludC4KKwor
ICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2YWx1YXRlIHBhcmFtZXRlcnMgYmVm
b3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAgR2VuZXJhdG9yJ3MgcGFyYW1ldGVy
IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5nIEdlbmVyYXRvcidzIGJvZHkuIEZv
ciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBoZWxsbygpIHsgLi4uIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBnID0g
Z2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNhbGxlZC4KKworICAgICAgICBUbyBl
bmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBpbiBHZW5lcmF0b3JGdW5jdGlvbiwg
YW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRvciBhbmQgcmV0dXJuIGl0LgorICAg
ICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZvbGxvd2luZyBwc2V1ZG8gY29kZS4K
KworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVyYXRvci4KKyAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgNC4gb3Bfc2F2ZSBzZWVtcyBzaW1pbGFyIHRvIGNvbmRpdGlvbmFs
IGp1bXAKKworICAgICAgICBXZSB3b24ndCBqdW1wIHRvIGVsc2V3aGVyZSBmcm9tIG9wX3NhdmUg
YWN0dWFsbHkuIEJ1dCB3ZSBhZGQgYSAqdmlydHVhbCoganVtcCBlZGdlIChmbG93KSBmcm9tIG9w
X3NhdmUgdG8gdGhlIHBvaW50IHNvIGNhbGxlZCAqbWVyZ2UgcG9pbnQqLgorICAgICAgICBXZSBj
b25zdHJ1Y3QgdGhlIENGRyBhcyBmb2xsb3dzLAorCisgICAgICAgICAgICAoZ2xvYmFsIGdlbmVy
YXRvciBzd2l0Y2gpIC0+IChpbml0aWFsIHNlcXVlbmNlKSAtPiAob3Bfc2F2ZSkgLS0tLSstPiAo
bWVyZ2UgcG9pbnQpIC0+IChuZXh0IHNlcXVlbmNlKSoKKyAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdiAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BfcmV0KSAgICAgIHwKKyAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPihvcF9yZXN1bWUpLS0rCisKKyAgICAgICAgQnkgY29uc3RydWN0
aW5nIHN1Y2ggYSBncmFwaCwKKworICAgICAgICAgICAgMS4gU2luY2Ugd2UgaGF2ZSBhIGZsb3cg
ZnJvbSAob3Bfc2F2ZSkgdG8gKG1lcmdlIHBvaW50KSwgYXQgbWVyZ2UgcG9pbnQsIHdlIGNhbiAq
dXNlKiBsb2NhbHMgdGhhdCBhcmUgZGVmaW5lZCBiZWZvcmUgKG9wX3NhdmUpCisgICAgICAgICAg
ICAyLiBvcF9zYXZlIHNob3VsZCBjbGFpbSB0aGF0IGl0IGRvZXMgbm90IGRlZmluZSBhbnl0aGlu
Zy4KKyAgICAgICAgICAgIDMuIGF0IG9wX3Jlc3VtZSwgd2Ugc2VlICp1c2UqZCBsb2NhbHMgYXQg
bWVyZ2UgcG9pbnQgYW5kIGRlZmluZSBhbGwgb2YgdGhlbS4KKworICAgICAgICBXZSBjYW4gZG8g
dGhlIGFib3ZlIHRoaW5ncyBpbiB1c2UtZGVmIGFuYWx5c2lzIGJlY2F1c2UgdXNlLWRlZiBhbmFs
eXNpcyBpcyBiYWNrd2FyZCBhbmFseXNpcy4KKyAgICAgICAgQW5kIGFmdGVyIGFuYWx5emluZyB1
c2UtZGVmIGNoYWlucywgaW4gb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB3ZSBvbmx5IHNhdmUgLyByZXN1
bWUgbGl2ZSByZWdpc3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAg
KiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanM6IEFkZGVkLgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQp
OgorICAgICAgICAocmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVj
dGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNz
Rml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVD
YWNoZTo6dHJ5R2V0KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhl
Y3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhp
c01vZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVJbmZvOjppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
c0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0
aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJs
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
Q29tbW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fy
cm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SXRlcmF0b3JOZXh0V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRT
YXZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtl
RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhv
bWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9y
QWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFs
bExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENy
ZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6Cisg
ICAgICAgICogZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAq
IGZ0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnku
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRs
L0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAg
ICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRv
bSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRO
ZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19mdW5jX2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2lu
dC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAg
ICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BB
VEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpwcm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFk
YXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6
U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpz
ZXRJc0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rl
cy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6
aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgor
ICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtl
eTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtl
eTo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hU
cmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2Jh
bENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5OjpsZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBs
ZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNo
ZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Omxv
Y2Fscyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Rm9yT1NSRW50cnlKSVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklU
Q29kZS5jcHAuCisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2Jq
ZWN0UGFyc2VNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYu
eWFtbDoKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNf
aXRlcmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJs
ZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6Cisg
ICAgICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRl
cmFibGVzLmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5T
eW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAg
ICAgICogdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5q
czoKKyAgICAgICAgKGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChnZW4pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKGcxKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50
YXgpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJv
ci5Db2NvYSk6CisgICAgICAgICh0ZXN0U3ludGF4LkNvY29hLnByb3RvdHlwZS5vayk6CisgICAg
ICAgICh0ZXN0U3ludGF4LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Eub2spOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChwcm90b3R5cGUuZ2VuKToKKyAgICAgICAg
KHN0YXRpY0dlbik6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKEIpOgorICAgICAgICAoQSk6Cisg
ICAgICAgIChDLnByb3RvdHlwZS5nZW5lcmF0b3IpOgorICAgICAgICAoQyk6CisgICAgICAgIChU
eXBlRXJyb3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29u
c3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mdW5jdGlvbi1uYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KG9rKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24t
Z2VuZXJhdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAg
ICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2Fs
bC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAg
ICAgICAoY2F0Y2gpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXct
dGFyZ2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoQi5wcm90b3R5
cGUuZ2VuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoQS5wcm90b3R5cGUuZ2VuKToKKyAgICAg
ICAgKEEpOgorCiAyMDE1LTExLTIzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgTWFjIENNYWtlIGJ1aWxkIGFmdGVyIHIxOTI3OTMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDgwYTU3OTRjMDZmNGZhYjA5ZmYwM2E2NDE3ODBlM2YyNmFjM2FkOGQuLjhhM2RjNjg3
OGZlZmIwMWNmZmM0MDk1M2U4OWYzMTdkMGNlN2ExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0
b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6
OkZhc3RCaXRWZWN0b3I6OmZvckVhY2hTZXRCaXQpOgorICAgICAgICAqIHd0Zi9GZWF0dXJlRGVm
aW5lcy5oOgorCiAyMDE1LTExLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTEVEOiB0ZW1wb3JhcnlGaWxlUGF0aC5sYXN0
KCkgPT0gJy8nIGluIFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
YWE3YzE0N2ZkYjE4ZDE5YTRmMGY4Mzk4OTU3MTMwNzE2NTU1YzllLi5jMWE3MTgzNWYwZjJhZGYz
ZjkxN2IwZDQyNDk4MjZkNzA3ZjE3ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0
b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorCiAyMDE1LTExLTI0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMTkwOTgzKTogTm9uLWVsZW1lbnQsIG5vbi10ZXh0IG5vZGVz
IHNob3VsZCBub3QgYmUgZGlzdHJpYnV0ZWQgdG8gc2xvdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAz
Yjk5ZjQ4ODE5MWNhMjMwNjFlZDIwZDc4ZTg3MTMzMWQ0NTFlNDYwLi43NzFlZTkwMzQ1NjIyYTdk
Yjc1YmQ0NmM5NTJjYzA1N2EyOGRmOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xICsxLDEwIEBA
CisyMDE1LTExLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2Vu
ZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTUtMTEtMjEgPT0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBlMjQ4NmRiMTEwM2VjODc0NDYxM2FlNmVjNTBkOWU0OGYxYWU2NmY0Li5iOWRk
ZGM3YWEzNDI2NjVhNTZlNmQwOTkwZTNhODQ5M2M0ZTIxNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTUtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9y
IEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTExLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVc2UgdGhlIG5ldHdvcmsgcHJvY2Vz
cyB1bmNvbmRpdGlvbmFsbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNTY3JpcHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAKaW5kZXggM2I3Yjc2YmYzYTQ0NGM5MjFiZTk3M2M1NzZjMTlmNjkyZThkMjMyZC4uMmYzNzQy
MzAwOTdiNTA4MjU4M2Y4NDQyN2I5MjU3OTM3ZDMwOTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGJvb2wgcGFy
c2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAogICAg
ICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCAKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LAogICAgICAgICBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhOTFlZjY2YTVhYzQxMDFkNTJiNzllM2M2NjNjNGNkMWVjMjlkYjQyLi45NDY1NWU1NDU5
MGNlZDFlZjM2MjNlYmYzOGI0MTk3MDE4ZTcwYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NjMsNiArNTYzLDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBy
dW50aW1lL0luZGV4aW5nVHlwZS5jcHAKQEAgLTYwMiw2ICs2MDYsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogICAgIHJ1
bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisgICAgcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
ICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTczNyw2ICs3NDIs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCiAgICAg
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAKQEAgLTExOTUsNiArMTIwMSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0dsb2JhbE9iamVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2
NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsK
IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFC
TEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2
X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVO
QUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzc1OGEzNjM2NGQ5N2Mz
NTgzYzkxNmYzZjNkOTg1YTQ4NzdmOTJjNi4uNzY4ZWJhYTYyOTc3MmY2ZGVkNzk4YTdlNmQ3Zjgx
ZGVlMGViNmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTg0LDYgKzg0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcyBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMgXAorICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpz
IFwKQEAgLTExOSw2ICsxMjAsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgRGF0ZUNv
bnN0cnVjdG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclBy
b3RvdHlwZS5sdXQuaCBcCisgICAgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggXAogICAgIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggM2U3Zjk5NGUzMDdjNDZkMDNiNzRi
OTc5ZjUxYmU2NTZlNTlhYzA0My4uY2FmZTFmMjczNDhjZWJlYTE5NGU2Yzc1ODFmMGYzYTNlMzU1
NGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03NTYsNiAr
NzU2LDEwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEZ1bmN0aW9uUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90
eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0
dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmll
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nVHlw
ZS5jcHAiIC8+CkBAIC03OTUsNiArNzk5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTRGF0ZU1hdGguY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dC5jcHAiIC8+CkBAIC05NDUsNiArOTUwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xEYXRlQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZVByb3RvdHlwZS5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xFcnJvclByb3RvdHlwZS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9u
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4KQEAg
LTE1MTUsNiArMTUyMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFy
c2VyVG9rZW5zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUmVzdWx0
VHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaCIgLz4KQEAgLTE2MDEsNiArMTYwOCwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdlbmVyYXRvclByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JUaGlzTW9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmljQXJndW1lbnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjAsNiArMTY3Miw3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggYTZkM2ZmMDBlMjUwM2FjYmMzNjc5MGEzNmU2ZWU0MzdhOTM0YmZhOC4uMWI5NzhlZTQ4
MWMxODQ4N2E4MjUzNWRmNzc5ODUwMTU4MjdhMWNmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjY2LDYgKzY2NiwxOCBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzQ3LDYgKzc1OSw5
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYxMiw2ICsyNjI3
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgog
ICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRl
cj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yODEzLDYgKzI4MzEsMjEgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JUaGlzTW9kZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0yOTE4LDYgKzI5NTEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KQEAgLTMyODIsNiArMzMxOCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiM2MyNWU2ZDYzOTE5NzVkMmVkMWM1MjY5OWIxMDU3MTY3NjRiZmQ3Li41ZGU3MWZmYzEz
MmM1MjIwMzdiZTM2MTc0MTc3ZDUyNWVhYTFiMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTIwMyw2ICsxMjAzLDE5IEBACiAJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBl
LmNwcCAqLzsgfTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZC
ODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEz
MDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkx
MUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291
cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OworCQk3MEI3OTE5MzFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKKwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07
CisJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTgxQzAy
NEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUy
IC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcwQjc5MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEIxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvclRoaXNNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwICovOyB9OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsK
IAkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwODFCMkRGMkM3
MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJ
bnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLzsgfTsKQEAg
LTMyNzEsNiArMzI4NCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1Nl
dFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFr
U2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkx
ODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg2MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0
b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEIxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXNNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRvclRoaXNNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEdlbmVyYXRv
clByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAxQzAy
NDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFCMkRG
MkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTA4NSw2ICs1MTEyLDcgQEAKIAkJCQk5OTZCNzMwODFCRDlGQTJD
MDAzMzFCODQgLyogRGF0ZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJEOUZB
MkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFDMDI0
NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4
MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4
NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVBNzEw
RDE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
LmggKi8sCkBAIC01MjEzLDYgKzUyNDEsNyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggKi8sCiAJCQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNv
dXJjZUNvZGUuY3BwICovLAogCQkJCTY1RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VD
b2RlLmggKi8sCisJCQkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXku
aCAqLywKIAkJCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3Bw
ICovLAogCQkJCTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICov
LAogCQkJCUU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNw
cCAqLywKQEAgLTUzNDIsNiArNTM3MSwxNSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBG
NyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZD
MSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2
QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBC
NzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAq
LywKKwkJCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmNwcCAqLywKKwkJCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmggKi8sCisJCQkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
clRoaXNNb2RlLmggKi8sCiAJCQkJMEZFMDUwMTExQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNB
cmd1bWVudHMuaCAqLywKIAkJCQkwRkUwNTAxMjFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaCAqLywKIAkJCQkwRkUwNTAxMzFBQTkwOTExMDBEMzNCMzMgLyogR2Vu
ZXJpY09mZnNldC5oICovLApAQCAtNTQ0MSw2ICs1NDc5LDggQEAKIAkJCQlGNjkyQTg1RTAyNTU1
OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAx
RkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKIAkJCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMg
LyogSlNGdW5jdGlvbklubGluZXMuaCAqLywKKwkJCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIg
LyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCisJCQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4
MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBB
N0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCAqLywKIAkJCQkwRjJCNjZDNDE3QjZC
NUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovLAog
CQkJCTBGMkI2NkM1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oICovLApAQCAtNjU1Myw2ICs2NTkzLDcgQEAKIAkJCQlBNzVFRTlC
MDE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggKi8sCiAJCQkJNDFERUExMzExQjlG
MzE1NDAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oICovLAogCQkJCUE3QTk3OUM0MThCRThEOUUw
MDJDMzczMyAvKiBGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVD
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5
QTMwMDlEQjFFRiAvKiBHbG9iYWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNG
NTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8s
CkBAIC02OTY2LDYgKzcwMDcsNyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBE
RkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJC
MkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1
NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKQEAgLTcwMTUsNiArNzA1Nyw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAw
Njc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjM1LDYgKzcyNzgsNyBAQAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJ
bnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURC
NUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0Ex
N0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjYxLDYg
KzczMDUsNyBAQAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRB
MjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0
Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEph
dmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKQEAgLTc0MDQsNiArNzQ0OSw3IEBA
CiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMw
MjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDQwLDYgKzc0ODYsNyBAQAogCQkJ
CUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkx
MzU1MUI3OTRGOEEwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUzOTEzNTYxQjc5NEY4RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTc2MTIsNiArNzY1OSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0Yy
RjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVG
NUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzY0NCw2ICs3NjkyLDcg
QEAKIAkJCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3Jr
bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0
cm9uZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdl
bmVyYXRvclRoaXNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1
RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZD
ODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkw
RUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg2
NjIsNiArODcxMSw3IEBACiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3
RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04Njg4LDYgKzg3MzgsNyBAQAogCQkJ
CTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1
YkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1
REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODI1LDYg
Kzg4NzYsNyBAQAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2Vk
U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8q
IE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0
MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtODk3Miw2ICs5MDI0LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0
Q0I5RkYgLyogdWRpczg2X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4
RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkw
RkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlz
ODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAw
NTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQy
RTU1MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg5ODAsNiArOTAzMyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAw
MDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAv
KiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4
IDgxNmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMuLmE5ZTY5YmVhNmVlYWU1
NzhiOTJkOTg5ZTFlODkxOTFhMzM0ODk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3Vy
Y2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRl
cigpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0g
PSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCks
IGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IsCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
LCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5h
bChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJy
aWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVz
OwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwg
a2luZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3Vy
Y2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNl
LCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5v
bkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAg
ICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFt
ZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTY5OTEwNWQxNTkzZGYyMGIxMGRlMThiYmNjMTdjNmJmZDAwZjQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclBy
b3RvdHlwZS5qcwpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0
b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAv
LyBHZW5lcmF0b3JTdGF0ZS4KKyAgICBjb25zdCBDb21wbGV0ZWQgPSAtMTsKKyAgICBjb25zdCBF
eGVjdXRpbmcgPSAtMjsKKworICAgIC8vIFJlc3VtZU1vZGUuCisgICAgY29uc3QgTm9ybWFsTW9k
ZSA9IDA7CisgICAgY29uc3QgUmV0dXJuTW9kZSA9IDE7CisgICAgY29uc3QgVGhyb3dNb2RlID0g
MjsKKworICAgIGxldCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0
IGRvbmUgPSBmYWxzZTsKKyAgICBsZXQgdmFsdWU7CisKKyAgICBpZiAodHlwZW9mIHN0YXRlICE9
PSAnbnVtYmVyJykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQg
YmUgYSBnZW5lcmF0b3IiKTsKKworICAgIGlmIChzdGF0ZSA9PT0gRXhlY3V0aW5nKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOworCisgICAg
aWYgKHN0YXRlID09PSBDb21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKHJlc3VtZU1vZGUgPT09IFRo
cm93TW9kZSkKKyAgICAgICAgICAgIHRocm93IHNlbnRWYWx1ZTsKKworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgaWYgKHJlc3VtZU1vZGUgPT09IFJldHVybk1vZGUpCisgICAgICAgICAg
ICB2YWx1ZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgPSBz
ZW50VmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBFeGVjdXRpbmc7CisgICAgICAgICAgICB2YWx1ZSA9IGdl
bmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdl
bmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAg
ICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBkb25l
LCB2YWx1ZSB9OworfQorCitmdW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBOb3JtYWxN
b2RlICovIDApOworfQorCitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgdmFsdWUsIC8qIFJldHVy
bk1vZGUgKi8gMSk7Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBleGNlcHRpb24s
IC8qIFRocm93TW9kZSAqLyAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNTRkZmQxNjhjYTYwMGViZWYx
MzU4MDQzMmM3N2UyNWFkNDQ0YWQwYy4uNTk2MDY0YzQwNjgyNDk3ODA4OWM0NjQzZjFjM2RmYmQw
NTM0Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNCcmFu
Y2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNl
IG9wX3N3aXRjaF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAg
Y2FzZSBvcF9zYXZlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KaW5kZXggMjk5MGZhZTM1NDg5NzlmZWM3Y2ExODY2OTA5MWJiMDVlMmFj
NjJlOC4uYjQ5YjRmMmJiZWFlOTBjNWQ2NGZjMjkxODJhMmMxOTlkYWFmZTMyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAs
NiArOTAsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJs
ZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVu
Z3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9m
dW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9uZXdfYXJyb3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTI5LDcgKzEzMSw5IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19pbmRleF9zdHJpbmciLCAibGVuZ3RoIiA6IDMg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzIiwg
Imxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVu
Z3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5n
dGgiOiAzIH0KKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgi
OiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAg
ICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGM3N2FiZWFh
MjkyMDllMzI5OTEzY2Q5NGNmYWQ3NTE1MTliZDk5ZjEuLjcyMjhiMDMzMzY2YzdhNjdiNTEwNDg4
ZGZlNDVmM2RkM2NmYTQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC05OCw3ICs5OCw3
IEBAIHN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0CiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBi
eXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNl
cywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRl
ZikKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhp
cyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0
aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5l
IG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRp
b25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxOSArMTE2LDE5IEBAIHN0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0
aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVP
ZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFu
ZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2Fs
KCkpOwogICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2Vw
dGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAg
Ly8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4g
b2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkg
ewpAQCAtMTM4LDEwICsxMzgsMTAgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBv
dXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBiYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkg
ewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUg
Yml0LgogICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjQsNyArMTY0LDcgQEAg
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQp
OworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7
CkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
bG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2MKIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKICAgICBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxl
cyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjQ4
LDcgKzI0OCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExp
dmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ss
IG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9
IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0
ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAg
ICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwK
KyAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVj
b2RlT2Zmc2V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAg
aWYgKG91dC5nZXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaAppbmRleCBhNjEzMmMzMmFhY2U5OWE3Mjk4ZjM4NDkxY2JmODg2ZTVk
NjY2ODQ1Li44Yjk4NGQ4Y2I2ZjNjZGY3N2FhYmI3MDNkZjAxODVmYWNiZTM1NzJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIs
NyArMzIsNyBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC03MCw4ICs3
MCwxMCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9q
ZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBj
YXNlIG9wX2luYzogCi0gICAgY2FzZSBvcF9jb3B5X3Jlc3Q6IHsKKyAgICBjYXNlIG9wX2luYzoK
KyAgICBjYXNlIG9wX2NvcHlfcmVzdDoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyNCw2ICsxMjYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJh
YmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAg
Y2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudDoKQEAgLTE1Miw2ICsxNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAg
ICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAg
IGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CkBAIC0yNDAsNyArMjQ0
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC0y
NTUsNiArMjU5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2Zp
bGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRp
Y19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxNSw2ICszMjAsOCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25l
d19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNl
IG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBj
YXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzkwLDcgKzM5NywxNSBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm1fbnVt
VmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAg
cmV0dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICBS
RUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAg
YmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
ZmNhNjMwMTQ5MTgyNmJlZTEwMDEyNGMyZjZhZTQyZjE4ZGVmOTllZS4uMWIxZGIxYjJjNDBiMGY0
Y2QxOGZlYzIyM2NhYzc5Y2UwMGYyYzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICI6ICVsdSBtX2luc3RydWN0
aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsg
JWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihp
bnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgbV9u
dW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKKyAgICAgICAg
bV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJzKTsKICAgICBpZiAo
bmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAg
IG91dC5wcmludGYoIjsgbGV4aWNhbCBlbnZpcm9ubWVudCBpbiByJWQiLCBhY3RpdmF0aW9uUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50ZigiXG4iKTsKQEAgLTY4MCw2ICs2ODAs
MTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNp
emUoKSk7CiAgICAgfQogCisgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludGYoIlxu
TGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAg
ICBkbyB7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIgICUxZCA9ICIsIGkpOworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfSB3
aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsK
KyAgICB9CisKICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xMjk0LDYgKzEzMDYsMTQg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzExLDYgKzEzMzEsMTQgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxp
bmcsIGNhbGxMaW5rSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDk5LDYgKzE1Mjcs
MjEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50Rmxh
Zyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6
IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2
ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICV1LCAlZCgtPiVkKSIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpLCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNjYzLDcg
KzE3MDYsNyBAQCBjbGFzcyBQdXRUb1Njb3BlRmlyZURldGFpbCA6IHB1YmxpYyBGaXJlRGV0YWls
IHsKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KG90
aGVyLm1fZ2xvYmFsT2JqZWN0KQogICAgICwgbV9oZWFwKG90aGVyLm1faGVhcCkKLSAgICAsIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKG90aGVyLm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9u
dW1DYWxsZWVMb2NhbHMob3RoZXIubV9udW1DYWxsZWVMb2NhbHMpCiAgICAgLCBtX251bVZhcnMo
b3RoZXIubV9udW1WYXJzKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90aGVyLm1faXNDb25zdHJ1
Y3RvcikKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0xNzIwLDYgKzE3
NjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3Rh
bnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOworICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5t
X2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMTczMCw3ICsxNzc0LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9iYWxPYmpl
Y3Qoc2NvcGUtPmdsb2JhbE9iamVjdCgpLT52bSgpLCB0aGlzLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCkpCiAgICAgLCBtX2hlYXAoJm1fZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApCi0gICAgLCBtX251
bUNhbGxlZVJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
CisgICAgLCBtX251bUNhbGxlZUxvY2Fscyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpCiAgICAgLCBtX251bVZhcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtVmFycykKICAg
ICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQog
ICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTE5MDAsNiArMTk0NCw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJl
ZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKKyAgICAvLyBC
b29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KKyAgICBWZWN0b3I8c2l6
ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworCiAgICAgUmVmQ291bnRlZEFycmF5PElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CkBAIC0yMTg4LDYg
KzIyMzUsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgaW50
IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTk5LDYgKzIyNTQsMjAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGOjptb3ZlKGlu
c3RydWN0aW9ucyk7CiAKKyAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lz
IHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVk
IHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKKyAg
ICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBz
aXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgLy8gU2V0IG9wdGltaXphdGlv
biB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNp
bmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUg
aW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rp
b24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpA
QCAtMjIyMiw3ICsyMjkxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICA6IEpTQ2Vs
bCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0o
KSwgdGhpcywgZ2xvYmFsT2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVl
TG9jYWxzKDApCiAgICAgLCBtX251bVZhcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxz
ZSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKGZhbHNlKQpAQCAtMzA0OSw2ICszMTE4
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkK
ICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUg
YWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDAyMCw3
ICs0MDkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KDApOwogICAgIAotICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51
bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlTG9jYWxzKSkgewogICAg
ICAgICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9u
ZyBudW1iZXIgb2YgYml0cyBpbiByZXN1bHQhXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIFJl
c3VsdDogIiwgbGl2ZUF0SGVhZCwgIlxuIik7CkBAIC00MDI4LDcgKzQwOTgsNyBAQCB2b2lkIENv
ZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAg
IH0KICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZVJlZ2lzdGVyczsgaS0t
OykgeworICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtQ2FsbGVlTG9jYWxzOyBpLS07KSB7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChsaXZlQXRIZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMy
NGEyZDI1ZjliODNjMDUyZDgyZWMuLjNjYmU3NWM0OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAw
YWE5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGludCBudW1QYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1Q
YXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVt
UGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihD
b2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0KIApAQCAtNjU0LDYgKzY1NywxOCBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgp
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0K
ICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRl
eCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUg
cmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07CisgICAgfQorICAgIEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKKyAgICB9CisKICAgICBFdmFsQ29k
ZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9k
ZSB7CkBAIC04NTUsNyArODcwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAog
ICAgIGludCBtX251bUxvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7Ci0gICAgaW50IG1fbnVt
Q2FsbGVlUmVnaXN0ZXJzOworICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9u
dW1WYXJzOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICAKQEAgLTkwMCw2ICs5
MTUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9y
PFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3Ry
aW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9y
PEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisKICAgICAgICAgRXZh
bENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdk
NGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4
YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAog
CiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhl
Y3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdl
dCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUo
aW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBz
b3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlw
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoc291cmNlQ29kZUtleSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJj
ZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBz
Y29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJs
ZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclRE
WihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRo
aXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhl
Y3V0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4
dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRy
aWVzKQotICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZh
bFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291
cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAg
ICAgbV9jYWNoZU1hcC5zZXQoc291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRh
YmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAg
ICB9CkBAIC04MCwxNyArODcsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVj
dCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2
YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBj
YW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5
IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAg
ICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2
YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aCgpIAorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJj
ZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgp
CiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VD
b2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwg
U291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hl
TWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2
OWI1MGIxMDJhMTVkLi4yNjAyYmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApA
QCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhl
Y3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRl
ICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZs
YWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQg
YmUgcmVvcmdhbml6ZWQuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5m
byhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUs
IGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAg
ICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2Rl
KQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1f
aXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0
b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5n
KSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpOworICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1cGVyQmluZGluZykpOworICAgICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9k
ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAK
ICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0
aW9uOyB9CkBAIC00OCw4ICs1NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01v
ZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAx
OwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAg
U291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCmluZGV4IGQ2MGZkZjdkM2NmMzYwZTNlYzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQuLjk4
OTkzOWIyMzMyMTRjZmQ0NWJlMDdiYWU4NjA5ZmM4NGM3ZWIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01
NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3Nl
cToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAg
IGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4u
ODdlODIzM2YxZmUzYThiZWM0MDIzMGQyOThiMDllNmRmZjlhMzg5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01
NCw3ICs1NCw3IEBACiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFi
bGVJbmZvJiBpbmZvKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtVmFy
cygwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9j
YWxzKDApCiAgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1fdm0odm0pCiAgICAgLCBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQpAQCAtNjUsMTAgKzY1LDEy
IEBACiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5l
cmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9k
ZSgpKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1
cGVyQmluZGluZygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgw
KQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBh
cnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlw
ZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdj
ZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uYmNhMmMwNGFjYTQzODI5MjE3NTY5NThiYWE2OGRi
MzBlOGYxMzVjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5o
IgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFu
Z2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5k
bGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
QEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsx
MTgsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2Vu
ZXJhdG9yVGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlz
TW9kZT4obV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmlu
ZGluZyk7IH0KIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIzMiw3ICsyMzYs
NyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgaW50
IG1fbnVtVmFyczsKICAgICBpbnQgbV9udW1DYXB0dXJlZFZhcnM7Ci0gICAgaW50IG1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOworICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKIAogICAgIC8vIEp1bXAg
VGFibGVzCiAKQEAgLTM4NywxMiArMzkxLDE0IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
KyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1
cGVyQmluZGluZyA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25l
ZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBh
cnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBD
b2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGEx
ODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li4zZjQ5NDg4NWFmNDljMjhlMjZm
NDk3ZDY3NWY2NGExNmM5YjlhZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9u
S2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5N
b2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQo
KSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3Q7CiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCkpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBh
cnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1l
KCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJy
b3IsIG51bGxwdHIpOworICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFi
bGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9u
KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcsNyArNjcsNyBAQCBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJl
cygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6
Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlv
bi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNT
dHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNB
cnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0Fj
dGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5n
ZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2Rl
KSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRv
cj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBn
ZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAs
IG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0
eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25N
b2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkK
KyAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRv
clRoaXNNb2RlKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
b2RlLT5zdXBlckJpbmRpbmcoKSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBA
IC0xODAsNyArMTgxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJy
b3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVG
b3JDYWxsOgpAQCAtMTk2LDcgKzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigp
ID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAg
ICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUp
OwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNm
NDFiYTQyZDljMWY4Li5jOGJiYTBhYzMyYmU0MzdmZmI1ZGYzZTNmOWUwNWIwNDc4YTUzNjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYg
c291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxs
cHRyKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2
bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RG
Ojptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
dHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwg
dW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2Rl
LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMs
OCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5T
dHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9y
VGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxH
ZW5lcmF0b3JUaGlzTW9kZT4obV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5n
PihtX3N1cGVyQmluZGluZyk7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1l
U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAg
ICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk4LDcgQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFBy
b2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNl
ckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBF
eGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAt
MTI1LDEwICsxMjgsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0
QWJpbGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAg
ICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJp
dmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFi
aWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRG
dW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBA
IC0xNTgsNyArMTYwLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rp
b25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rp
b24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOworICAgIHVuc2ln
bmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiOTM3MGM4ZDI4NGEzODRmMjFlMGU3
ODkyNjg1NDVjOTJiMTk4MjNiLi44NzcwMmVjMzlhMzNiNjI5MDBmOGNjY2ViYzU4ZDk2YjFmNzY5
YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAt
MjI3LDkgKzIyOSwzMyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgICAgICB9CiAgICAgfQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNv
ZGVCbG9jay0+cGFyc2VNb2RlKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhp
bmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91
bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVk
c0FyZ3VtZW50cyA9IGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+
dXNlc0V2YWwoKTsKKworICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRz
Ii4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOworCisg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSAmJiBuZWVkc0FyZ3VtZW50cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJv
dmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJv
dmlkZXMgImFyZ3VtZW50cyIuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMg
b2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCisg
ICAgICAgIC8vIFRvIHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBh
cyBhcmd1bWVudHMgb2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVu
Y2UgaXQgZnJvbSBhIGdlbmVyYXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVuY3Rp
b24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rp
b24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJh
dG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAgICAg
ICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5j
ZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4K
KyAgICAgICAgLy8gICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAgIC8v
ICAgIH0KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAg
fQorCiAgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVuY3Rp
b25Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwog
ICAgIApAQCAtMjU0LDE0ICsyODAsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2Fs
bGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGluaXRp
YWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEg
c2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBq
dW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdp
c3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzTW9kZSgp
ID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlW
YWx1ZSgmbV90aGlzUmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1t
IGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0
eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBg
bmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFk
IG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAg
ICAgIC8vIEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVz
IG9uZSBgbmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5l
cmF0b3IoZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0
YXRlLgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlm
IChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5v
ZGUtPmZ1bmN0aW9uTW9kZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUg
PSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9v
bCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQ7CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVu
dCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwog
ICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9j
YXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1l
dGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVy
cm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXpl
VmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQog
Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIg
cGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5n
IGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRl
cnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1Jl
Z2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0
aGlzCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAg
ICAgaWYgKHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9yZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9
IHN0YXRpY19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAg
ICAgLy8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVu
dHMuCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwz
NiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAog
ICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+
aXNBcnJvd0Z1bmN0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rp
b25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAg
IGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZTogeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAg
ICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYK
KyAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworCisgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJl
Z2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOiB7CisgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkg
YmVmb3JlIGhlcmUuCisgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAg
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFy
Z2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQpAQCAtNDkyLDkgKzU1Myw4IEBA
IFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2Rl
LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRM
b2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVm
b3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29w
ZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtNzk5LDYgKzg1OSwyMiBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKQogICAgIHJldHVybiAmcGFy
YW1ldGVyOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVy
cyhGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ug
c3VyZSB0aGF0IHBhcmFtZXRlcnMKKyAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5v
dGVkLgorICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBwYXR0
ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKKyAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVz
dFBhcmFtZXRlcigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1l
dGVyKTsKKyAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJh
bWV0ZXJOb2RlKj4ocGF0dGVybik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
KTsKQEAgLTgyNiwxNyArOTAyLDE3IEBAIFVuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVy
YXRvcjo6dmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVzdHJ1Y3R1cmluZ1BhdHRlCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3RlcigpCiB7Ci0gICAgbV9jYWxsZWVS
ZWdpc3RlcnMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJz
LnNpemUoKSkpOwotICAgIGludCBudW1DYWxsZWVSZWdpc3RlcnMgPSBtYXg8aW50PihtX2NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSk7Ci0g
ICAgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCksIG51bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgbV9jb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzID0gbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgIHJldHVybiAm
bV9jYWxsZWVSZWdpc3RlcnMubGFzdCgpOworICAgIG1fY2FsbGVlTG9jYWxzLmFwcGVuZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKKyAgICBpbnQgbnVt
Q2FsbGVlTG9jYWxzID0gbWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBt
X2NhbGxlZUxvY2Fscy5zaXplKCkpOworICAgIG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVMb2NhbHMp
OworICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsK
KyAgICByZXR1cm4gJm1fY2FsbGVlTG9jYWxzLmxhc3QoKTsKIH0KIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cmVjbGFpbUZyZWVSZWdpc3RlcnMoKQogewotICAgIHdoaWxlIChtX2NhbGxlZVJl
Z2lzdGVycy5zaXplKCkgJiYgIW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKS5yZWZDb3VudCgpKQot
ICAgICAgICBtX2NhbGxlZVJlZ2lzdGVycy5yZW1vdmVMYXN0KCk7CisgICAgd2hpbGUgKG1fY2Fs
bGVlTG9jYWxzLnNpemUoKSAmJiAhbV9jYWxsZWVMb2NhbHMubGFzdCgpLnJlZkNvdW50KCkpCisg
ICAgICAgIG1fY2FsbGVlTG9jYWxzLnJlbW92ZUxhc3QoKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6Om5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpCkBAIC0xOTE1LDcgKzE5OTEs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICAgICAgdmFy
T2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tl
cikpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJLaW5kOjpTdGFj
ayk7Ci0gICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpKTsKKyAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zm
c2V0KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOwogICAg
IH0KICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgMCk7CiAgICAgc3lt
Ym9sVGFibGUtPmFkZChsb2NrZXIsIHByb3BlcnR5LmltcGwoKSwgbmV3RW50cnkpOwpAQCAtMjMx
MiwxMiArMjM4OCwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2Vy
dChSZWdpc3RlcklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3Qg
YmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmNyZWF0ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBt
X3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsg
Myk7CiAKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU0Nyw2
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJ
RCogZHN0LCBFbGVtZW50Tm9kZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1
bmN0aW9uSW50ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihmdW5jdGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIo
KS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1
cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4
cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3Bf
bmV3X3JlZ2V4cCk7CkBAIC0yNDkzLDEzICsyNTU1LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHAp
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bj
b2RlSUQgb3Bjb2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykK
IHsKLQotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQg
PT0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogZnVuY3Rpb24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9j
b2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rp
b24tPnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNTg2LDE4IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklE
KiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2Rl
KiBmdW5jKQogewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19m
dW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNF
eHByTm9kZSogZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVj
dG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yKQorICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUo
KSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlz
UmVnaXN0ZXIoKSk7CiAgICAgCi0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywg
b3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29t
bW9uKGRzdCwgZnVuYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjU0MCw2ICsyNjE1LDE5
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVj
dG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9
IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7Cisg
ICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMp
OworICAgIGVsc2UKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGlu
ZGV4KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENh
bGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMzc2Niw2ICszODU0LDI0IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogaXRlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IG5leHQgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5
TmFtZXMoKS5uZXh0KTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyLCAxKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0LmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQo
KSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIGVtaXRMYWJlbCh0
eXBlSXNPYmplY3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVs
PiBkb25lID0gbmV3TGFiZWwoKTsKQEAgLTM4NDIsNCArMzk0OCwyMTggQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwg
dW5zaWduZWQgbnUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBSZWZQdHI8
TGFiZWw+IG1lcmdlUG9pbnQgPSBuZXdMYWJlbCgpOworICAgIHNpemVfdCB5aWVsZFBvaW50SW5k
ZXggPSBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7CisgICAgZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CisgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMg
dXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0
KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdFJldHVybihhcmd1bWVudCk7Cisg
ICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
fQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQoreworICAgIHNpemVfdCBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdl
UG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBlbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpOworICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdExhYmVsKG1l
cmdlUG9pbnQpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50KTsK
KworICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7
CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7
CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRF
cXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJ
bkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3Zl
KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0
UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJl
dHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAg
ZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJl
bC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJldmlvdXMgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0TG9hZChwcmV2
aW91cy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQsIHBy
b3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92ZShh
cmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChpdGVy
YXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbm9k
ZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOworICAg
ICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgp
OworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisg
ICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJl
ZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJl
bChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0WWllbGRQb2ludCh2YWx1ZS5nZXQoKSk7CisK
KyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgICAg
ICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRp
b24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiByZXR1cm5TZXF1ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJu
RnJvbUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCks
IGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9y
YXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3VtZW50cygq
dGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1
cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDAp
LCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dENhbGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9y
UmVzdWx0LmdldCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGlu
dGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2so
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1pdE1v
dmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJl
dHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJv
bUdlbmVyYXRvciA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVt
cElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1
cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIC8vIFRocm93LgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gdGhyb3dNZXRob2ROb3RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3Jh
cnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0aHJvd01ldGhvZE5vdEZvdW5kLmdldCgpKTsKKwor
ICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENh
bGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIHRocm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0
YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0Lmdl
dCgpKSwgcmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhy
b3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01l
dGhvZE5vdEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xv
c2UoaXRlcmF0b3IuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUg
YSAndGhyb3cnIG1ldGhvZC4iKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgLy8gTm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQo
KSk7CisgICAgICAgICAgICAgICAgZW1pdE1vdmUocHJldmlvdXMuZ2V0KCksIGdlbmVyYXRvclZh
bHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRMYWJlbChu
ZXh0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdEl0
ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHByZXZpb3Vz
LmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJ
ZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgbG9v
cERvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2
YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbWl0
SnVtcChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91cy5n
ZXQoKTsKK30KKworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVD
aGFuZ2UoaW50MzJfdCBzdGF0ZSkKK3sKKyAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0YXRlKSkp
OworICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBjb21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8
TGFiZWw+IGxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5h
cHBlbmQobGFiZWwuZ2V0KCkpOworICAgIGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQor
eworICAgIGJlZ2luU3dpdGNoKHN0YXRlLCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOwor
fQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRM
YWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFj
ay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAg
aW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxv
Y2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRj
aEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0
ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5j
aE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAg
IGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8v
IFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUg
YmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3
YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNb
aV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJl
c3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzhiNjU5YTMz
Njg1YmIzYzcyNjQ3ZGNmYWZiOGQ1ODIwNDIyYmE4Ni4uZGZkMDExYjk0MzJlY2NmMWRkM2NkMzBh
N2U1YWU1NTNlODY2Njc3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmlu
ZSBCeXRlY29kZUdlbmVyYXRvcl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4
IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgp
OyB9CisgICAgICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCk7IH0KKyAgICAgICAgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBl
ckJpbmRpbmcoKTsgfQogCiAgICAgICAgIFBhcnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTI5
Nyw2ICszMDAsOCBAQAogCiAgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJl
dHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KIAorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JS
ZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2VuZXJhdG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBS
ZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyBy
ZXR1cm5lZCBieQogICAgICAgICAvLyBuZXdUZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZv
cm0gb2YgcmVmZXJlbmNlIGNvdW50aW5nOiBhbnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBh
IHJlZmNvdW50IG9mIDAgaXMgY29uc2lkZXJlZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBA
IC00OTksMTAgKzUwNCw4IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdp
c3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQg
Zmlyc3QgZWxpc2lvbgogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdp
c3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSk7Ci0gICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9u
KFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93
RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0
ZXJJRCogZHN0LCBSZWdFeHAqKTsKIApAQCAtNTk2LDYgKzU5OSw3IEBACiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKICAgICAgICAgdm9pZCBlbWl0SXRlcmF0
b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEqIG5vZGUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lz
dGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFyYW1ldGVyc1RvU2tpcCk7CkBAIC02NDQsMTIg
KzY0OCwyOCBAQAogICAgICAgICB2b2lkIGJlZ2luU3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJ
bmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNl
Q291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExh
YmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0WWll
bGRQb2ludChSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW1pdFNhdmUoTGFiZWwqIG1lcmdl
UG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIHZvaWQgZW1p
dFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKKworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZv
aWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7
CisgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1syXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAg
ICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAK
ICAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRF
bWl0UHJvZmlsZUhvb2tzOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7
IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KTsgfQorCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAK
QEAgLTY2Nyw2ICs2ODcsNyBAQAogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBh
cmVudFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2
b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGlzQ2FwdHVyZWQpOworICAgICAgICB2b2lkIGVtaXRO
ZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUq
KTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxl
RW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRpbWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoq
IGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBudWxscHRyKTsKQEAgLTczMCw3ICs3NTEsNyBA
QAogICAgICAgICBSZWdpc3RlcklEJiByZWdpc3RlckZvcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcnNbcmVnLnRvTG9jYWwoKV07CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlTG9jYWxzW3JlZy50b0xvY2FsKCldOwogCiAgICAgICAgICAgICBp
ZiAocmVnLm9mZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbV9jYWxsZWVSZWdpc3RlcjsKQEAgLTc1MiwxMiArNzczLDIyIEBACiAgICAgICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFy
aWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwogCisgICAgICAgICAgICAvLyBGSVhN
RTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxv
Y2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKICAgICAgICAgICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBtZXRhZGF0YS0+cGFyc2VNb2RlKCk7CiAgICAgICAgICAgICBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25z
dHJ1Y3Q7Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0
dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQorICAgICAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQorICAgICAgICAgICAgICAgIGNv
bnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAg
ICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGUgJiYgbWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6
TmVlZGVkKQorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisKKyAgICAgICAgICAgIEdlbmVyYXRvclRoaXNNb2RlIGdl
bmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5OworICAgICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXND
b25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJh
dG9yVGhpc01vZGU6OkVtcHR5OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRh
LCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3Zt
LCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1
Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25t
ZW50Jik7CkBAIC03NjUsNiArNzk2LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0
cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RG
cmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCwgUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKKyAgICAgICAgdm9pZCBpbml0aWFsaXpl
UGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnMmKTsKICAgICAgICAgdm9pZCBpbml0aWFsaXpl
VmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAg
ICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJzJiwgRnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFi
bGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJv
b2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0dXJlcyk7CiAKQEAgLTgwNCw2ICs4MzYsNyBA
QAogICAgICAgICBSZWdpc3RlcklEKiBtX3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9hcmd1bWVudHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAg
UmVnaXN0ZXJJRCogbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogbV9nZW5lcmF0b3JSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC04MTEsNyAr
ODQ0LDcgQEAKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCosIDE2PiBtX2xv
Y2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICAgICAgU2VnbWVudGVkVmVj
dG9yPFJlZ2lzdGVySUQsIDMyPiBtX2NvbnN0YW50UG9vbFJlZ2lzdGVyczsKLSAgICAgICAgU2Vn
bWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX2NhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAg
U2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX2NhbGxlZUxvY2FsczsKICAgICAgICAg
U2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxMYWJlbCwgMzI+IG1fbGFiZWxzOwogICAgICAgICBMYWJlbFNjb3BlU3Rv
cmUgbV9sYWJlbFNjb3BlczsKQEAgLTgyNyw2ICs4NjAsNyBAQAogICAgICAgICBWZWN0b3I8U3dp
dGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9y
PFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOworICAgICAgICBWZWN0b3I8UmVmUHRyPExh
YmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJp
YWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rp
b25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAg
ICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IDMxMmE4YzdhY2UwNDE1NjA4YmQzNzQ3ZGVkYTc4NjhlNWJiZDBmNTIuLjFjZGU2NWQxNDhh
OGVjMmI0MjliMTE5NzE3Y2Y4OGIyYWEzYmIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxT
Y29wZS5oIgpAQCAtMTQ1LDcgKzE0Niw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJl
Z2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpD
aGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpE
ZXJpdmVkKQorICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3Iu
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRv
ci5nZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAg
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEs
MTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVy
SUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikK
K3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5z
ZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZh
dGVOYW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVP
YmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0
LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAK
QEAgLTI1ODQsNiArMjU4OSw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgZHN0ID0g
MDsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBn
ZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9y
LmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25S
ZXR1cm5TdGF0ZW1lbnQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVy
YXRvci5pc0luRmluYWxseUJsb2NrKCkpIHsKICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5n
ZXQoKSk7CkBAIC0yOTY2LDI2ICsyOTcyLDk2IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwg
c3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3Rh
dGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1l
bnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVy
YXRvci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0g
dGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQt
PmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOwor
ICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHBy
Tm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKKworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVk
KSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21l
T2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVj
dChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CiAK
LSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5j
dGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50
ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUq
IGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3Rh
dGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxv
Y2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQotICAgICAgICAgICAg
cmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9j
ayk7Ci0gICAgfQorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBh
biBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVy
dGllcyBmb3IgZWFzZS4KKyAgICAgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3
aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9y
IGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRp
ZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NDUKKworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yTmV4
dFByaXZhdGVOYW1lLCBuZXh0LmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVO
YW1lLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3Qg
YXV0b21hdGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAg
ICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVG
dW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBm
b3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29k
ZS4KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0
b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUsIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5
Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
Z2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAg
ICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCks
IHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRSZXR1cm4ocjApOwotICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAg
UmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAg
ICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVs
LmdldCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGdl
bmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICB9CisKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVk
KCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogeworICAgICAgICBlbWl0U3RhdGVtZW50
c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAg
ICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50
KCk7CisgICAgICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworCisgICAgICAgIC8vIENo
ZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBv
c2VkIG9mIGEgc2luZ2xlIGJsb2NrLgorICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNp
bmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBs
YXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRl
bWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5C
bG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50
SW5CbG9jayk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4g
d2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCisgICAgICAgIGlmICghcmV0dXJuTm9k
ZSkgeworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVt
aXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0
aGUgdXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkg
Pj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3Rh
cnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0K
IH0KIApAQCAtMzAxMywxMSArMzA4OSwyNCBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBS
ZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1
c3QgYSBzdHViLiBXaGVuIGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1w
bGVtZW50IGl0LgotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJOb3QgaW1wbGVtZW50ZWQgeWV0LiIpKTsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVu
dCgpKSB7CisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
dmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFy
Z3VtZW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGVsZWdhdGVZaWVsZChhcmcuZ2V0KCksIHRoaXMpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIENsYXNzRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDI0
ZGJkN2JlMmQ4Nzg2ODVjZTE1MGU0NzFlMzViMmE4NzI2ZTY3MjAuLmRhOTQwMzhkNmI5MmJkOGM1
ZDU0ZDlkNWY2ZGNhYjA3YWQ0ODVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpzTnVtYmVy
KFBOYU4pKSkKICAgICAgICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051bWJlcigx
KSkpCiAgICAgICAgICwgbV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkKLSAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpCisgICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
KQogICAgICAgICAsIG1fcGFyYW1ldGVyU2xvdHMoMCkKICAgICAgICAgLCBtX251bVBhc3NlZFZh
ckFyZ3MoMCkKICAgICAgICAgLCBtX2lubGluZVN0YWNrVG9wKDApCkBAIC0xNDEzLDcgKzE0MTMs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAx
ICsKLSAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90IGFyZ3Vt
ZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAK
QEAgLTI5MjcsNyArMjkyNyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgCiAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3Bv
bmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAtIDEpLm9mZnNldCgpOworICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0g
MSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOwog
ICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAg
CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIAogICAgICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29y
cmVzcG9uZHMgdG8gdGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgICAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9u
dW1DYWxsZWVMb2NhbHMgLSAxKS5vZmZzZXQoKTsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0g
bnVtYmVyT2ZQYXJhbWV0ZXJzOwogICAgICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
b3JBbGxLaWxscy5oCmluZGV4IDUxYWM1NWQ0Y2E1ZjllZDQ5OGFiODg5N2M5NmVkMjU5MzMzZDYy
ODcuLmY1ZjRjYjUyMzgwZWRiYjNjOWY4OTcxMDMyMTEwYTA4OGNmZDEyOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5v
ZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUJl
Zm9yZSA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhiZWZvcmUuYnl0ZWNvZGVJbmRleCk7CiAg
ICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVBZnRlciA9IGZ1bGxMaXZlbmVzcy5nZXRM
aXZlbmVzcyhhZnRlci5ieXRlY29kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5z
aWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJl
bGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0g
Y29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgcmVsYXRpdmVMb2NhbC0tOykgewogICAgICAg
ICAgICAgaWYgKGxpdmVCZWZvcmUuZ2V0KHJlbGF0aXZlTG9jYWwpICYmICFsaXZlQWZ0ZXIuZ2V0
KHJlbGF0aXZlTG9jYWwpKQogICAgICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwocmVsYXRpdmVMb2NhbCkgKyBzdGFja09mZnNldCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA0Mjg4NzBiMWMyYTI1ODcxNWNkNzE1M2I4
ZTc5OWJlYWU5MmM0ZTVmLi4xOTExY2ZlZWQ2NDE5MDM5NmM4YWU2NWYzYTdlYzQ5NzhhNzY2ZmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03MzgsNyArNzM4LDcgQEAg
Y2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIGZ1bGxMaXZlbmVzcyA9IGxpdmVu
ZXNzRm9yKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUlu
ZGV4KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVnID0gc3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2Fs
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXBvcnQgaWYg
b3VyIGNhbGxlZSBhbHJlYWR5IHJlcG9ydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCBl
NmM0MjM1ZWM0Y2E2ODE3Y2QzN2U2OTk4MzQ3ODYwODlmMmI2ZWZhLi41ZTVhMTUwNGMyNGQwNjQw
NGY3ODZiMTcyMmUyZjYxNTBmOGZhYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTMs
OCArOTMsOCBAQCBjbGFzcyBPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIC8vIFdlJ2QgcmVhbGx5IGxpa2UgdG8gdXNlIGFuIHVuc2V0IG9yaWdpbiwg
YnV0IFRocmVhZGVkQ1BTIHdvbid0IGFsbG93IHRoYXQuCiAgICAgICAgIE5vZGVPcmlnaW4gb3Jp
Z2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSk7CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpOwotICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxp
bmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7CisgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fscyk7CisgICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwp
IHsKICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRI
ZWFkLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIE9TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9j
YWwpIHsKKyAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251
bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFk
ID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYg
KCFwcmV2aW91c0hlYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAppbmRleCBi
ZThlMmE3OTE0OWY1YTJlMzE0NGFkNDY0YTM1YzY1NGZjNTk5ZTBjLi42MzkyZjE0YTk4MDRjZmI2
OTJlODRiYzM5MDEyMGQwYmFiN2RiZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKQEAgLTEyMyw5ICsxMjMsOSBAQCB2
b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlczsKICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBWaXJ0dWFs
UmVnaXN0ZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2Fs
KCkgKyAxOworICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGlu
ZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlTG9jYWxz
ICsgVmlydHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCkudG9Mb2NhbCgpICsgMTsKICAgICBlbHNlCi0gICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgbnVtVmFyaWFibGVz
ID0gYmFzZWxpbmVDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIAogICAgIC8vIENy
YXp5IHNwZWNpYWwgY2FzZTogaWYgd2UncmUgYXQgaW5kZXggPT0gMCB0aGVuIHRoaXMgbXVzdCBi
ZSBhbiBhcmd1bWVudCBjaGVjawogICAgIC8vIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgYWxsIHZh
cmlhYmxlcyBhcmUgYWxyZWFkeSBzZXQgdXAuIFRoZSByZWNvdmVyaWVzIHNob3VsZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCmlu
ZGV4IDI5ZjA1ZTUxZDQ2MWZkZjZlMDE0MzgzMTk5YzkxOGY2NDE1ZThjZWEuLjMwODBkYzM0NTA5
YzczMzMyNGI4MTQzZDJhOTU0ZjA4ZWRhZjEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAg
Rm9yT1NSRW50cnlKSVRDb2RlKiBGb3JPU1JFbnRyeUpJVENvZGU6OmZ0bEZvck9TUkVudHJ5KCkK
ICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxp
emVFbnRyeUJ1ZmZlcihWTSYgdm0sIHVuc2lnbmVkIG51bUNhbGxlZVJlZ2lzdGVycykKK3ZvaWQg
Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25l
ZCBudW1DYWxsZWVMb2NhbHMpCiB7Ci0gICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKG51bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwor
ICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVMb2Nh
bHMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRy
eUpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmgKaW5kZXggNDRhZjhmOTU3OTFhYWE3OGU2ZTgxZGZhNjQ5Yzg2YTE1ZWEzNDQ4MS4uOWFl
OTczZjQwZDEyYzE2YjgwOWMwYzhjYTFlMzZlYmFhOGVlMzY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIEZvck9TUkVudHJ5SklUQ29kZSA6IHB1YmxpYyBGVEw6OkpJVENvZGUgewogICAg
IEZvck9TUkVudHJ5SklUQ29kZSgpOwogICAgIH5Gb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICAK
LSAgICB2b2lkIGluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYsIHVuc2lnbmVkIG51bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBu
dW1DYWxsZWVMb2NhbHMpOwogICAgIFNjcmF0Y2hCdWZmZXIqIGVudHJ5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9lbnRyeUJ1ZmZlcjsgfQogICAgIAogICAgIHZvaWQgc2V0Qnl0ZWNvZGVJbmRl
eCh1bnNpZ25lZCB2YWx1ZSkgeyBtX2J5dGVjb2RlSW5kZXggPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCBhYzcxNzE0ZjkzZjU1YWYyNjE4
YzdlNDIwYTcxYjY2ZGUyMTE3NjY2Li42MDFiNDYwOTQwNjRhYzYxM2E5OGZhOWMyMjkzODZmYTZl
YWRmMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcApAQCAt
ODMsNyArODMsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIFJF
TEVBU0VfQVNTRVJUKAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxv
Y2FscygpKSA9PSBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxvY2FscygpKSA9PSBiYXNlbGluZS0+bV9udW1D
YWxsZWVMb2NhbHMpOwogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc3RhdGlj
X2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPigKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1ZmZlcigp
LT5kYXRhQnVmZmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRl
eCAwMzA3ZTBlZDA1YzVhMjU2MWNjNGVmODJiNWFhMmU1ZmZjZjhjMGViLi41NWQ4MjlhMmE2NmI2
MjYwOTE1ODRhNzNlMTFkYmEwM2MyNTZlYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcApAQCAtNTYsNyArNTYsNyBAQAogICAgIH0KICAgICBjYXNlIEZUTEZvck9TUkVu
dHJ5TW9kZTogewogICAgICAgICBSZWZQdHI8Rm9yT1NSRW50cnlKSVRDb2RlPiBjb2RlID0gYWRv
cHRSZWYobmV3IEZvck9TUkVudHJ5SklUQ29kZSgpKTsKLSAgICAgICAgY29kZS0+aW5pdGlhbGl6
ZUVudHJ5QnVmZmVyKGdyYXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpOworICAgICAgICBjb2RlLT5pbml0aWFsaXplRW50cnlCdWZmZXIoZ3JhcGgu
bV92bSwgZ3JhcGgubV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgICAg
IGNvZGUtPnNldEJ5dGVjb2RlSW5kZXgoZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGppdENvZGUgPSBjb2RlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5
YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRl
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYg
KzE1NSw3IEBACiAgICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAg
ICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNl
bGwoY29uc3Qgdm9pZCopOworICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAg
ICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAg
ICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQo
Y29uc3Qgdm9pZCopOwpAQCAtMzg4LDcgKzM4OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2
b2lkKiBwKQorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCog
cCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7
CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5
OSw3ICs0MDAsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0
b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBj
ZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNM
aXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nh
c3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFl
MTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uNjRlNzRjZjY1MGIwMGQ0ODVhODMxY2Q1MjM3MWVjNDJk
ZDRkZGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUt
PmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFt
ZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSku
UmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2Rl
QmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpOworCisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9k
ZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUg
JiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJh
dG9yVGhpc01vZGU6OkVtcHR5KQorICAgICAgICB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpB
bHdheXNDaGVjazsKKworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShtYWtlU291cmNlKHByb2dy
YW1Tb3VyY2UpKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBz
b3VyY2VDb2RlLCB0aGlzVERaTW9kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICBpZiAoIWV2
YWwpIHsKICAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CkBA
IC0xNzEsOCArMTgwLDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
ICAgICAvLyBJZiB0aGUgbGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUg
dGhyb3duIGV4Y2VwdGlvbnMuCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2Vw
dGlvbigpKTsKIAotICAgICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNhbGxlckNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkID8gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrIDogVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQ7Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2Rl
Q2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2Nv
cGVDaGFpbik7CisgICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUo
KS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7
CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KQEAgLTQxMCw3ICs0MTgsNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJz
KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KICAgICBkYXRhTG9nRigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiIpOwogCi0gICAgZW5kID0gaXQgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzICsgY29kZUJsb2NrLT5tX251bVZhcnM7CisgICAgZW5kID0gaXQgLSBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzICsgY29kZUJsb2NrLT5tX251bVZhcnM7CiAgICAgaWYgKGl0ICE9
IGVuZCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSAoKml0KS5qc1Zh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTYxYjU3ZDQ2MTVmOWE5MmU5
YjM0Mzk2ZWQzODhmNzk2ZDg0NTBkMC4uODc5ZWZiMmJhYjRlMjQwYzdjMTk3NWJiNDZmOWQ0M2Q2
NzY0MmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE0LDYgKzIxNCw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2NvcHlfcmVzdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVG
SU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAgICAgIERF
RklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAg
REVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKQEAgLTI2
MCw2ICsyNjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAgIERFRklO
RV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1bmNfZXhw
KSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChv
cF9uZXdfcmVnZXhwKQpAQCAtNzYzLDkgKzc2Nyw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUV4Y2VwdGlvbkhhbmRsZXJzKCkKIAogdW5zaWduZWQgSklUOjpmcmFtZVJlZ2lzdGVyQ291bnRG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSA9PSBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKSk7CisgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSA9PSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpKSk7CiAKLSAgICByZXR1cm4gcm91
bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3Rl
cnMpOworICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9m
ZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGxJblJlZ2lzdGVycyk7CiB9CiAKIGludCBKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGQyMjU4
MjM5ZDJlYjczMDM1MWRkZTExNWU2OGE3NWJjYTQ3OWQ0MmQuLmZjYzhmMzA2Njc3ZTc2NmMwZDFm
Y2E1Mzc4NzQyMjVkYTI1NjM4ZGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDkzLDYg
KzQ5Myw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTQxLDYgKzU0Myw4IEBACiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1
bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJvd19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlv
biopOwpAQCAtNjYwLDYgKzY2NCw3IEBACiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoSW5z
dHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0
U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MpOwogICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBp
bnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ0OTQ4OTY1MGU2
ODU0NjU5ZTVhNjBkZTc4ZTYzM2UxYTUxODM4NWEuLjZlYzE1YmI0NGIzMzQwNWYwZjJjZTIzNzA3
ZTQxNTQ2ODNhYjFhYzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d1JlZ2V4cCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbV9jb2RlQmxvY2stPnJl
Z2V4cChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBKdW1wIGxhenlKdW1wOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwpAQCAtOTc4LDE0ICs5NzgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1
bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZFBheWxvYWQo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2VuZGlmCiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworCisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9u
LT51Lm9wY29kZSk7CisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jKQorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7
CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0g
ICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgZW1pdE5l
d0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAxOCwxMSArMTAzMCwy
NyBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAjZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJlZ1QyKTsKICNlbmRp
ZgotICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRz
dCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkb25lLmxpbmsodGhp
cyk7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1
bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTQwNSw2
ICsxNDMzLDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2NvcHlfcmVzdChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3NhdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfcmVzdW1lKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkODczYTFkZGQ2NTdhMjg5NjhhMGU1MWY5MDYz
NmQxZGUyZmNmODE2Li5jYWQ5MzQ2OWMxYmNiZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0NDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IgogI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtOTg3LDIzICs5ODgsNDIgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBwcm9maWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHNpemVWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2Vs
bCogZnVuY3Rpb25FeGVjdXRhYmxlKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5
cGU+CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUs
IGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5p
bmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAg
IGlmIChpc0ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0
aW9uVHlwZTo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2Nv
cGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlKHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworfQorCitleHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
ZmFsc2UpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsKLSAgICBB
U1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6Omlu
Zm8oKSkpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5j
dGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUp
KTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAg
cmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRydWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0lu
dmFsaWRhdGVkKQorRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlv
bkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVk
KQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aW5mbygpKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKQEAg
LTEwMTksMTIgKzEwMzksMTIgQEAgRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUKICAgICAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKKyAgICByZXR1cm4gb3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCB0aGlzVmFsdWUsIHRydWUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworICAgIHJldHVybiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRoaXNWYWx1ZSwgZmFsc2UpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDk2MzhmMTQ1YzlkNTU3NWYx
Yzk1MmUyNzVmNTk0YTc2YjMyYTRiODguLjI1NDI1NTAyMjlkYTQxZTFhZGQ0NmIwYjAyNThlOGU0
OTk1YjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBA
IC0zMDEsNiArMzAxLDggQEAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSos
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBK
U1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50LmNwcAppbmRleCBhNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4MmNmZTJhNTVhYjc4MGMz
Li5mNTkxOGI3MjE3MGFjNWRlNDdjMmJlZDM2Mzc5NjUzMGUwMTk1NDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtMTM0LDkgKzEz
NCw5IEBAIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQog
CiB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7
Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVMb2NhbHMpKSk7CiAKLSAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFt
ZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOworICAgIHJldHVybiByb3VuZExvY2Fs
UmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzY1ZjE5Nzk1MGUzMjNmMDU2NmU3MmM3M2I0
ZWVkNjNlM2IyMDhjNS4uMzUxYTRjOGQ0NDJmMmQ2YzY4YzRhOTJjMzJmMTZlYzYwMmRhODI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAg
LTIyNCw5ICsyMjUsOSBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rpb24q
IGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0g
ICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVw
OyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
JXUsIGNhbGxlciA9ICVwLlxuIiwKKyAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVu
Y3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1
LCBudW1DYWxsZWVMb2NhbHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICAgICAgY29k
ZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCi0gICAgICAgICAgICBj
b2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisgICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFy
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMsCiAgICAgICAgICAgICBleGVjLT5jYWxsZXJGcmFtZSgpKTsKIH0KIApAQCAtNDU4LDcgKzQ1
OSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayogY29kCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKICAgICBkYXRhTG9nRigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxu
IiwgZXhlYyk7CiAgICAgZGF0YUxvZ0YoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJs
b2NrKCkpOwotICAgIGRhdGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBkYXRhTG9nRigiTnVt
IGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZUxvY2Fscyk7CiAgICAgZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1WYXJzKTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDQxLDYgKzEwNDIsMTgg
QEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUp
KTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
YykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5j
dGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFzQWN0
aXZhdGlvbigpKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0u
dS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lO
RworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJ
TlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAt
MTA1Miw2ICsxMDY1LDE3IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVS
TihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9w
ZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisKKyAgICBM
TElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1
bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGUyNDQ4MjlmZGQxZTJmMTUwNmEzNWQxMGE0ZWI4
MWZjYmUzMmM1MzEuLjI3MTMyNGIxODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFiNDU2NTk1OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05OSw2
ICs5OSw4IEBACiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9z
dHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
Y19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3df
ZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpp
bmRleCBmOGUxMjhjY2Q5YTA0YTExYWNmOTkxY2JjMWI1YjIwZDk3Y2FmMDMzLi42MTI2NGQ5ODg1
Nzc1NTUzNzEzNWY5YzM0N2MwMGZiZTNlYWY5ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC02OTcsNyArNjk3LDcg
QEAgbWFjcm8gdm1FbnRyeVJlY29yZChlbnRyeUZyYW1lUG9pbnRlciwgcmVzdWx0UmVnKQogZW5k
CiAKIG1hY3JvIGdldEZyYW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2l6
ZSkKLSAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10s
IHNpemUKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW2NvZGVCbG9ja10s
IHNpemUKICAgICBsc2hpZnRwIDMsIHNpemUKICAgICBhZGRwIG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsLCBzaXplCiBlbmQKQEAgLTEyMjcsNiArMTIyNywxMiBAQCBfbGxpbnRfb3BfbmV3
X2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3
X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNDU4LDYgKzE0NjQsMTEgQEAgX2xsaW50X29wX25ld19m
dW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKwogX2xsaW50X29wX25ld19h
cnJvd19mdW5jX2V4cDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQpAQCAtMTU3Myw2ICsxNTg0LDE4IEBA
IF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgz
KQorCisKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IGFjYzIxNjJlOGRmMTI0OWY1OTdmODZmNTIyYjcwZTFlOTYwOWJlMDAuLjJiODRjYmFmMzdlZjA0
NjBiZGI5MTZkMmJiZGFjMDJlMGQyYjRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC0zNDEsOSArMzQxLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9u
LCBudWxscHRyLCAvKiBkZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHBy
Tm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNy
ZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxv
Y2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2Rl
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwg
ZGVsZWdhdGUpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5v
ZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50
LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCkBAIC0zNjQsMTIgKzM2NiwxMiBAQCBjbGFz
cyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAg
ICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBtb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
KQpAQCAtODg2LDYgKzg4OCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAg
bm9kZS0+c2V0U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFn
YXRlQXJndW1lbnRzVXNlKCkgeyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5k
ZXggZWEzNzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uNWI2ZGM0OTM4NWRh
NzgzNThjMjc5YmMwODAwYmY4OWEwYTY1NzljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgog
ICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAK
ICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25l
ZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAg
LCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENv
bHVtbikKQEAgLTE2MiwxMCArMTYyLDExIEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAg
ICAgICwgbV9wYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKICAgICAgICAgLCBtX3BhcnNl
TW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRl
eHQpCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVy
QmluZGluZykpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJv
d0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CisgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5n
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMGFhMzExZGMxMWQ3
ZjhhOGIwMWZlYzdlNDRiZGUyMWZhNTc4ZWVjZS4uMGJmMDBiN2JlOTM3Zjc5NzhhNDU2MzczZmFk
ZTMxZjVjNzVmOWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgx
Nyw3ICsxODE3LDcgQEAKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBh
cnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUp
OwogICAgICAgICAKQEAgLTE4NDIsOCArMTg0Miw4IEBACiAKICAgICAgICAgaW50IHN0YXJ0U3Rh
cnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRl
eHQ7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0
T2Zmc2V0KQpAQCAtMTg2OSw4ICsxODY5LDggQEAKICAgICAgICAgaW50IG1fbGFzdExpbmU7CiAg
ICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9p
c0luU3RyaWN0Q29udGV4dCA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDog
MTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKQEAgLTE5MzIsNyArMTkzMiw3IEBA
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjg3NGIyN2UzOTA5MDdjOGU0
MTQ5ODI2YzM3OWU0MmNmNTljZTUyYS4uMTYyNWYzZmJlMGUxYjMyM2ZkZmM0NGJlMDE4NGQwYWVi
YmNmOTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk0
LDcgKzE5NCw3IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcigKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAorICAgIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJj
ZSgmc291cmNlKQpAQCAtMjEwLDYgKzIxMCw3IEBACiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUo
bnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0
aW4oYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKKyAgICAsIG1f
c3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9k
ZSkKIHsKQEAgLTI0OSw3ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24o
KSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OwotICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1
bmN0aW9uSW5mbyk7CisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5m
byk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAg
ICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjczLDggKzI3NywxMiBAQAogICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShw
YXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0
cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29u
dGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tG
b3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7
CkBAIC0zMDEsNyArMzA5LDE0IEBACiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRGVjbGFy
YXRpb25zID0gc2NvcGUtPmRlY2xhcmVkVmFyaWFibGVzKCk7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGNhcHR1cmVkVmFyaWFibGVzKQogICAgICAgICB2YXJEZWNsYXJhdGlvbnMubWFya1Zhcmlh
YmxlQXNDYXB0dXJlZChlbnRyeSk7Ci0gICAgCisKKyAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7CisgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkg
eworICAgICAgICBpZiAodXNlZFZhcmlhYmxlcy5jb250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMuaW1wbCgpKSkKKyAgICAgICAgICAgIGNvbnRleHQucHJvcGFnYXRlQXJndW1l
bnRzVXNlKCk7CisgICAgfQorCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5m
ZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJl
cyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTMxMSwxMCArMzI2LDkgQEAKICAgICAgICAgZmVh
dHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3Vt
ZW50cykKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCiAg
ICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbikgewotICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7Ci0gICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8g
YWxsb3cgYnVpbHRpbnMgdG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5n
ZXQoKSk7CkBAIC00NTgsNiArNDcyLDQ1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3sKKyAgICBhdXRv
IHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworCisgICAg
dW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tl
bkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3Np
dGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2Vu
Lm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owor
ICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQorCisgICAgewor
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29w
ZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5l
cmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgp
KTsKKyAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5j
dGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9y
Iik7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgp
OworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8u
Ym9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1
dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24s
IGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAg
Y29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAg
ICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3VtZW50ZWQgaGVyZToKQEAgLTE1ODks
MTUgKzE2NDIsMTQgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25Cb2R5KAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9k
eVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5
VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUg
PT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xP
U0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1u
KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
NjA5LDcgKzE2NjEsNyBAQAogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3Vy
Y2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9
PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMg
ZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsK
ICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQog
CiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQpAQCAtMTYyNSw2ICsxNjc3LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuICJtZXRo
b2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgogICAgICAgICBy
ZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJh
cnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpA
QCAtMTcwMyw2ICsxNzU3LDM3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9
IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOworCisgICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRp
b24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBnZW5lcmF0b3IKKyAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7
CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworCisg
ICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JT
dGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOworCisgICAgLy8g
QGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOworCisgICAgLy8gQGdlbmVy
YXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yUmVz
dW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAw
KTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1
aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJ
bkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTgxMywxMiArMTg5OCwxMCBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0
aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAg
ICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9y
S2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwg
IGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRT
dXBlckJpbmRpbmcsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJv
ZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5m
byk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOwpAQCAtMTgzMiw3ICsxOTE1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9s
ZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1
bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAot
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlw
ZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAg
LTE4NTQsMTQgKzE5MzcsMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUg
PSBsYXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRl
KCk7Ci0gICAgCi0gICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250
ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1
dG8gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFy
c2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25z
dHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRv
UG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFy
c2luZ0Z1bmN0aW9uQm9keSgpOworCisgICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0b3IgaGFzIGEg
InVzZSBzdHJpY3QiIGRpcmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3JhcHBpbmcgaXQg
c2hvdWxkIGJlIHN0cmljdCBtb2RlLgorICAgICAgICBpZiAgKGdlbmVyYXRvckJvZHlTY29wZS0+
c3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3RyaWN0TW9kZSgp
OworCisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2NvcGUtPmhhc0Rp
cmVjdFN1cGVyKCksICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25z
dHJ1Y3RvciIpOworICAgICAgICBpZiAoZ2VuZXJhdG9yQm9keVNjb3BlLT5uZWVkc1N1cGVyQmlu
ZGluZygpKQorICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5k
aW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBp
biBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKworICAgICAgICBwb3BTY29wZShnZW5l
cmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAg
IH0gZWxzZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rp
b25Cb2R5KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZG
YWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIs
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQo
ZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1
bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25N
b2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8u
bmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1l
IGluIHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTkyOSw3ICsyMDMxLDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5j
dGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJ
TUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwg
IkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA4MCw3ICsyMTgy
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsK
ICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3By
b3RvdHlwZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5l
cmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjczMSw3ICsy
ODMzLDcgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3NpZmll
ciBjbGFzc2lmaWVyKHRoaXMpOwogCiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQotICAgIGlm
IChtYXRjaChZSUVMRCkpCisgICAgaWYgKG1hdGNoKFlJRUxEKSAmJiAhaXNZSUVMRE1hc2tlZEFz
SURFTlQoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkpKQogICAgICAgICByZXR1cm4gcGFy
c2VZaWVsZEV4cHJlc3Npb24oY29udGV4dCk7CiAjZW5kaWYKIApAQCAtMjgzNiw2ICsyOTM4LDcg
QEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQaGFz
ZSA9PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gd2l0aGluIHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0
b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBTYXZl
UG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAtMjg0
MywxMyArMjk0NiwxNCBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0ZSA9IGNvbnN1bWUo
VElNRVMpOworICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0UG9z
aXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAgICAgICByZXN0b3Jl
U2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZvdFN0YXJ0
LCBhcmd1bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTMwNDEsNyArMzE0NSw3IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBtZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhv
ZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4gbWV0aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0
b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1l
dGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAg
LTMyOTQsNyArMzM5OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpT
VG9rZW5UeXBlIHRva2VuKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMp
CiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6
OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTdiMGU4MWFlYTFkODlj
NGZlYzk0NDc1N2M3ZjQ5NWVjNTA0NzczZS4uNzI1OWE1ZDQ3NTU2ZjQwNTNhNDBhYTNlYzM0MzU5
ZTk2NzkzOGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzIs
NiArMTcyLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKGZh
bHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAsIG1f
aXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkK
ICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkKICAg
ICB7CkBAIC0xOTIsNiArMTkzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4
aWNhbFNjb3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJv
dW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJp
Y3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRz
KHJocy5tX2hhc0FyZ3VtZW50cykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29wRGVw
dGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAgICAg
LCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC0yNDYsNiArMjQ4
LDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKKyAgICAgICAgICAgIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgog
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKQEAgLTI2OCw2ICsyNzQs
OCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Z1bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzR2VuZXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvcjsgfQogCisgICAgYm9vbCBoYXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQorCiAgICAgdm9pZCBzZXRJc0xleGlj
YWxTY29wZSgpIAogICAgIHsgCiAgICAgICAgIG1faXNMZXhpY2FsU2NvcGUgPSB0cnVlOwpAQCAt
NDUwLDE2ICs0NTgsMjAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwg
PSB0cnVlOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9y
IGVuZCA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7Ci0gICAgICAgICAgICBm
b3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJp
YWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bmVzdGVkU2NvcGUtPm1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVzdGVk
U2NvcGUtPm1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaW1wbCA6IG5lc3RlZFNjb3BlLT5t
X3VzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1fZGVj
bGFyZWRWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNhbFZh
cmlhYmxlcy5jb250YWlucyhpbXBsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICAvLyAiYXJndW1lbnRzIiByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlc29s
dmVkIGF0IGZ1bmN0aW9uIGJvdWRhcnkuCisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3Bl
LT5pc0Z1bmN0aW9uQm91bmRhcnkoKSAmJiBuZXN0ZWRTY29wZS0+aGFzQXJndW1lbnRzKCkgJiYg
aW1wbCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRk
KCpwdHIpOworCisgICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpbXBsKTsKICAg
ICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IGEgZGVjbGFyZWQgdmFyaWFibGUgdGhhdCBp
cyB1c2VkIGluIGFuIGlubmVyIHNjb3BlIHRvIGJlIHRob3VnaHQgb2YgYXMgY2FwdHVyZWQgaWYK
ICAgICAgICAgICAgICAgICAvLyB0aGF0IGlubmVyIHNjb3BlIGlzIGJvdGggYSBsZXhpY2FsIHNj
b3BlIGFuZCBub3QgYSBmdW5jdGlvbi4gT25seSBpbm5lciBmdW5jdGlvbnMgYW5kICJjYXRjaCIg
CiAgICAgICAgICAgICAgICAgLy8gc3RhdGVtZW50cyBjYW4gY2F1c2UgdmFyaWFibGVzIHRvIGJl
IGNhcHR1cmVkLgogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxl
cyAmJiAobmVzdGVkU2NvcGUtPm1faXNGdW5jdGlvbkJvdW5kYXJ5IHx8ICFuZXN0ZWRTY29wZS0+
bV9pc0xleGljYWxTY29wZSkpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVD
YW5kaWRhdGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJs
ZUNhbmRpZGF0ZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IC8vIFByb3BhZ2F0ZSBjbG9zZWQgdmFyaWFibGUgY2FuZGlkYXRlcyBkb3dud2FyZHMgd2l0aGlu
IHRoZSBzYW1lIGZ1bmN0aW9uLgpAQCAtNTUwLDE0ICs1NjIsMjIgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICB7CiAgICAgICAgIG1faXNGdW5jdGlvbiA9IHRydWU7CiAgICAgICAgIG1faXNGdW5jdGlv
bkJvdW5kYXJ5ID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAg
ICBzZXRJc0xleGljYWxTY29wZSgpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFsc2U7CiAg
ICAgfQogCisgICAgdm9pZCBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHNldElzRnVuY3Rpb24oKTsKKyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgfQor
CiAgICAgdm9pZCBzZXRJc0dlbmVyYXRvcigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0aW9u
KCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50
cyA9IGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgc2V0SXNNb2R1bGUoKQpAQCAtNTc5LDYgKzU5
OSw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBtX2lzTGV4aWNhbFNjb3BlIDogMTsKICAg
ICBib29sIG1faXNGdW5jdGlvbkJvdW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0cmlj
dE1vZGUgOiAxOworICAgIGJvb2wgbV9oYXNBcmd1bWVudHMgOiAxOwogICAgIGludCBtX2xvb3BE
ZXB0aDsKICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjI3LDcgKzY0OCw3IEBAIGNsYXNz
IFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5n
LAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCk7CiAgICAgflBhcnNlcigpOwogCkBAIC0xMTUwLDYgKzExNzEsNyBAQCBjbGFzcyBQYXJzZXIg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01v
ZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBF
eHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTExOTAsNyArMTIxMiw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQ
cm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5lcmF0
b3IpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNl
R2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlw
ZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kID0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRy
ZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9u
Qm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rp
b25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gQUxXQVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFy
YXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQg
fTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNl
VmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywg
VHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxh
c3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9u
JiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RD
b250ZXh0LCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERv
ZXNOb3RIYXZlSW5pdGlhbGl6ZXIpOwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFyc2Vy
IHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBh
cnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFz
cyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJl
ZUJ1aWxkZXI+Jik7CiAKQEAgLTEzNDAsNiArMTM2Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VF
bGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47Cisg
ICAgU3VwZXJCaW5kaW5nIG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2luZCBtX2Rl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQ7CiAgICAgVGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50IG1fdmFyRGVjbGFyYXRpb25zOwpAQCAtMTQ2Myw3ICsxNDg3
LDcgQEAgY2xhc3MgUGFyc2VyIHsKIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAorICAgIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0
UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAogICAgIENvbnN0
cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LAogICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQpCkBAIC0xNDcyLDcgKzE0OTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgQVNTRVJUKCFz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUs
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExl
eGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBw
YXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1v
ZGUpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE0ODUs
NyArMTUwOSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxM
ZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
cGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgUGFy
c2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhp
c1REWk1vZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJz
ZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0
OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjlj
YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00
Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVu
Y3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
LAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAt
NjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkNDlhN2UxNzNiMjUwMGRhZmI1Zjg0YWE0YzJlNmY0MTY2NDlkMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU291cmNlQ29kZUtleV9oCisjZGVmaW5lIFNvdXJjZUNvZGVLZXlfaAorCisj
aW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNvdXJjZUNv
ZGVLZXkgeworcHVibGljOgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgICAg
IDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAg
ICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKSB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERa
TW9kZSkpCisgICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQorICAgIHsK
KyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQorCisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KKworICAg
IC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdz
IGV4cGVjdGVkIHRoYXQgc291cmNlCisgICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmlu
Z3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KKyAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2hhc2ggPT0gb3RoZXIubV9oYXNoCisgICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5s
ZW5ndGgoKQorICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCisgICAgICAg
ICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisgICAgICAgICAgICAmJiBzdHJpbmcoKSA9
PSBvdGhlci5zdHJpbmcoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU291cmNlQ29kZSBtX3Nv
dXJjZUNvZGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworICAg
IHVuc2lnbmVkIG1faGFzaDsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYg
YSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
K3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxT
b3VyY2VDb2RlS2V5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVu
Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VD
b2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9
Cit9OworCit9CisKKyNlbmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOTU1MzZjM2M3NTY3MjI3MzUxYmM2
OTA3MTgyZWQ1M2FiNmM3MTkxYi4uM2UwYzMwZmQxZDI1MTg2MjM1ZTJkYjAzODQ0MTRjNjFmODE1
N2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
QEAgLTE4MCwxMCArMTgwLDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWll
bGRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAg
ICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xh
c3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkg
eyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMzg1LDYgKzM4NSw4IEBA
IGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQoaW50KSB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAKKyAgICB2b2lkIHBy
b3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3RvcEJpbmFy
eUV4cHI7CiAgICAgaW50IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5
Y2RjN2NiZWRmMGUuLjQ5NDUyMGRiZGY0MjhjODY0MGRiNWUyMjNmMDBlMjFmMmZlY2ZmZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2Rl
QmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAg
ICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LAotICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOworICAg
ICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2Rl
Q2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAg
ICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFt
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC0xODgsNyAr
MTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNv
bnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJp
YWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVRE
WlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwg
bWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNv
bnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3Ry
dWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVt
cHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNl
dCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsK
IAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDhjOGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4
ODExMWUxNjkzNmJkNy4uOWI4YzE1MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTU2LDcxICs1Nyw2IEBACiBj
bGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNv
ZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwotCi0gICAgU291cmNlQ29kZUtleSgpCi0g
ICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQp
Ci0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwgbV9uYW1lKG5h
bWUpCi0gICAgICAgICwgbV9mbGFncygKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZVR5cGUpIDw8IDMpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVpbHRpbk1vZGUpIDw8IDIpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RyaWN0TW9kZSkgPDwgMSkKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRo
aXNURFpNb2RlKSkKLSAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0g
ICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQotICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0K
LSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQot
Ci0gICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQu
IEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKLSAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIg
c3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKLSAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90
aGVyLmxlbmd0aCgpCi0gICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKLSAg
ICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKLSAgICAgICAgICAgICYmIHN0cmlu
ZygpID09IG90aGVyLnN0cmluZygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTb3VyY2VDb2Rl
IG1fc291cmNlQ29kZTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7
Ci0gICAgdW5zaWduZWQgbV9oYXNoOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2Rl
S2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwot
fTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPFNvdXJjZUNvZGVLZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxs
KCk7IH0KLX07Ci0KIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1
ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggNGNmNjU5MGE5YjAxNjA4ODU2MmJlZThkNzU1MzU1ZDg3YTNiMzNi
MS4uZGUwN2YxYzUxYjU1MTJkY2NhYjliMDI0OGYzZmQ4MWJmMWI0YWJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2
ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAg
ICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApA
QCAtMzI5LDYgKzMzMCwxMyBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8o
RmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2Vu
ZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRv
clN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA5MGY2NWMyNGQ2MzJi
NjIxMDg5ZGU1YzFiYmQ0OTY0ZDQ0OTY0MzkxLi5jNjdjYzcwMjExOWQ3Mzg4M2RkY2U3MWRmNzM5
ZTJkYWJjNmI3NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enou
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgpAQCAtNjQ0LDYgKzY0NSwzOCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNo
ZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVO
RCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5
IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0
ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3Qg
aW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0
aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisg
ICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklY
TUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRo
aXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxv
Y2F0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+
dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7CisgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRC
eUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBmcmFtZS0+cmVzdW1l
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4
NWM0YzdlYTdjYzZmYzdmM2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1
OWJkZTE2OGVlODhmNTdkZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVj
b2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1
bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4
ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRh
ODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFT
RV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMs
NyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3Jh
bU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4
MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBh
YjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0
RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRF
eGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0
YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwg
Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAg
ICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZp
cnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+
KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEy
NmI2MGZkN2IwYzM0MGEwNC4uNzViMzA5MWNmODFjNzI5NmZlMmZhZmU5YTk2NzY1MzYyOTk3ODJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJp
YWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAt
NTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAg
Y2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
R2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVy
biBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9s
VGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAg
ICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAg
ICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dG
dW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBK
U1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
Pm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5n
ICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uNWQ3
ZWYzNzY2YWMwZDY5YjM1NTQ2YWY3ZTc5MWNlOTQ5YmI0MmQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5
LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5j
dGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1l
LCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwog
fQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2so
CiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiBhcmdzLCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCAKLSAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
LCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQorICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRp
b24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlv
bnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBT
dHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0g
PSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xu
XG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRv
ciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAgICAg
ZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmco
IntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9
IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1l
LnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlm
IChmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpH
ZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWls
ZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBG
dW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJn
cykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7Ci0gICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkp
OworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAyMmVjYjU3YjkzZjY5YmZjOWY4YjFiMzA2ZmI0YzQy
YTBhNjdkMmUzLi5kMTFmYjJhMzc0ZDYxOTE1MGM5ZDZjNDI2MjliYTkxY2MxMjA1ZjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCkBAIC01NiwxMiArNTYsMTcgQEAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYpOwotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOworZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGUgeworICAgIEZ1bmN0aW9uLAorICAgIEdlbmVyYXRvciwKK307CisKK0pTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOworSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYs
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVu
Y3Rpb24pOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsK
KyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlk
ZUxpbmVOdW1iZXIgPSAtMSwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
RnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlLmdldCgpKQorICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNh
bGxlZUxvY2FscykKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKKyAgICAgICAgbG9jYWxB
dChpKS5jbGVhcigpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVf
dCBudW1iZXJPZkxvY2FscykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KKyAgICAg
ICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9m
TG9jYWxzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Cisg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCit7CisgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2Nh
bHMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQp
LCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBBU1NFUlQobGl2ZUNhbGxlZUxv
Y2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgbGl2ZUNhbGxl
ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgbG9jYWxB
dChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgIH0pOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMu
CisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBw
YXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKKyAg
ICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEg
Y2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
dGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1
YTcxOTRlOGY3NDg0MWM0OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1l
X2gKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0Nl
bGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
Vk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBv
ZmZzZXRPZkxvY2FscygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKKyAg
ICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzKTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JG
cmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBzaXplX3QgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhmNTg5MzFmYzU1MjBhNWMyMjAxNWUy
NWY3MDJhN2Q2ZTA5NzllMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5j
dGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBj
b25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25z
dHJ1Y3RUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNi
OWE1NmM0ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBv
c2l0aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUz
MWJkMzExYjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsK
KworR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5
MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2
bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8s
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5
NzE3NGNhZTZhZDQ2NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNp
bmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90
eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRv
clByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVy
YXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBn
ZW5lcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIHRocm93ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8K
Kwordm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisK
K2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihl
eGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisj
ZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdl
bmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5o
ZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2
YXRlOgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVy
YXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yVGhpc01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclRoaXNNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwM2U3YjAyMmYxYzY2OWQzOTdhOWI3N2I1
ZWYyNGU5NWY1MjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEdlbmVyYXRvclRoaXNNb2RlX2gKKyNkZWZpbmUgR2VuZXJhdG9yVGhp
c01vZGVfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8gaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1v
YmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8gV2hlbiB0aGUgZnVu
Y3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0b3JLaW5kXV0gaXMg
YWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhp
cyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlv
bi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8vCisvLyAgICAgZnVu
Y3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMKKy8vICAgICB9Cisv
LworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRo
aXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8v
CisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8vICAgICAgICAgLy8g
fHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8v
ICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgZmxhZyBt
YW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEg
Y29uc3RydWN0b3IsIGl0IHJldHVybnMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlvbiBoYXMgR2Vu
ZXJhdG9yVGhpc01vZGU6OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdoZW4gYWNjZXNz
aW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0gY2xhc3MgR2Vu
ZXJhdG9yVGhpc01vZGUgOiB1bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9uRW1wdHkKK307
CisKK30KKworI2VuZGlmIC8vIEdlbmVyYXRvclRoaXNNb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAy
ZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRh
MmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyAr
MzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERp
cmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
Y2JjZTAyZDY2MjkwNWUwZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVy
YXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVh
cCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NF
UlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
Z2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24g
PSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxs
b2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5j
dGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNy
ZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmYxMDcyYTUyMTY1ZGQxN2RlZTA5NjdkZWU3YjhhZTQ4OTBmMmQ0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25f
aAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTElu
dERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpT
RnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJl
c3VtZU1vZGUgOiBpbnQzMl90IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJl
dHVybk1vZGUgPSAxLAorICAgICAgICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGNvbnN0
IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0
aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3Rh
dGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7
CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5j
dGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggZWZlYWU1MzMxNWI3NTE1OWMyNGNhZTdjYzllMDQxOGNiNDAwY2QzYi4uZjdiMGI5NWNl
MjEwYTVjNjQ5NjgyYjJhMjc0MDg0OWFmMGM5MWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2lu
Y2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAi
SlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJ
Tl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVS
QVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
aXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJB
VE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJv
ciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7
CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0
cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworCisgICAgbV9nZW5lcmF0b3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOwor
ICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBl
LmdldCgpLCBEb250RW51bSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTU1MSw2ICs1NjQsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVK
b2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHBy
b21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2VuZXJhdG9yUHJvdG90
eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRp
Y0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtODE4
LDYgKzgzMiw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJh
dG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Z2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTAsNiArODY2LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2Nj
NzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQ
cm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRl
clNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAt
MjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJh
eVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQ
cm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQ
cm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3Bl
cnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNv
bGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdl
bmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBT
dHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJv
bE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3
YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1NGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVBy
b2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0
ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0y
NDQsNiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxv
Y2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBj
ZWQzMTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMy
ZjQzYjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggZTBiYzNkNTFm
YjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uMTFhNGJmNDY0ZTY0YzdmZjA3Y2VmZTQ3
MjE0OTY5NGMzMmQyOGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAt
NzE5LDcgKzcxOSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVj
dF9wcm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0Fy
cmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJh
eV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9t
X2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzI3LDcgKzcyNyw3IEBACiAt
IHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRo
b2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlf
c3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1
Myw3ICs3NTMsNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwog
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9p
bnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2Myw3ICs3NjMsNyBAQAogLSBw
YXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2lu
c3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNf
b2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwMyw1NSArODAzLDU1IEBACiAtIHBhdGg6IGVz
Ni9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5j
b25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclBy
b3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0
aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRv
cnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3No
b3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtl
eWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
YXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3Rh
bmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93Lmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJv
ci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2Uu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogLSBw
YXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2lu
X2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJl
YWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3By
ZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9n
ZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQy
M2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAg
LTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIg
Z2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBt
ZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9
PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJy
Lmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9
LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Ro
cm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0g
PSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwog
ZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9y
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVy
YWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4u
ODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMg
KzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2Jh
bCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9k
cykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1
bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5n
dGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAg
J3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdydd
Cit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVu
Y3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0
aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZm
NjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUy
OTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9
PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVh
dGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9
OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikg
eworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5l
eHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTog
YXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwK
KyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRl
cmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQor
cmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0g
Jyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0
YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Ro
cm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVk
JykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9m
IFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7
fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9
IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBt
ZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wu
aXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFi
bGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3Vt
ZW50cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzYmNk
OWE3ZTE4ODM3MDcwY2FlZThkZjhiY2IxNjliNzU1NTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9t
LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKGFjdHVhbC5s
ZW5ndGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgc2hvdWxkQmUoYWN0
dWFsW2ldLCBleHBlY3RlZFtpXSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
cHJpbnQoSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7CisgICAgICAgICAgICB0aHJvdyBlOworICAg
ICAgICB9CisgICAgfQorfQorCisKK2Z1bmN0aW9uICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5j
dGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfQorCisg
ICAgcmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0gZ2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTog
ZnVuY30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1l
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNlNGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZk
MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOwor
fQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQor
CisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisg
ICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIsIjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNl
IHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAg
ICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0g
eWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcy
KDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsi
MCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsK
KyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwg
MSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgp
LnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBi
LCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMg
PSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0g
ZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMwMmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlv
biB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsK
KyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3Ry
aW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0
LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBl
dmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3lu
dGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJv
cikpOworfQorCit0ZXN0U3ludGF4RXJyb3IoYAorY2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1
Y3RvcigpCisgICAgeworICAgIH0KK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUg
YSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJy5gKTsKKwordGVzdFN5bnRheChgCitjbGFz
cyBDb2NvYSB7CisgICAgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30K
K2ApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAg
ICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhv
ZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZl
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworY2xhc3MgQSB7CisgICAgKmdlbigpCisgICAg
eworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1
cm4gNDI7CisgICAgfQorCisgICAgc3RhdGljICpzdGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAg
eWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAg
IH0KK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgbGV0IGcgPSBhLmdlbigpOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBU
eXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcg
YS5nZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQgZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBB
KTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4
dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAg
bGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBp
cyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJj
MjU1YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWll
bGQgZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rp
b24oKSB7CisgICAgZXZhbCgndGhpcycpOworICAgIGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2Ns
YXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICByZXR1
cm4gZXZhbCgndGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5l
dyBBKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAgKmdlbmVyYXRvcigpCisgICAgeworICAgICAg
ICB5aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAg
Zy5uZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCknKWApOworCisoZnVuY3Rpb24gKCkgeworICAg
IGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29u
c3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFlNWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFl
NzVhZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3No
b3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9yRnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3Zh
ciBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0
cnVjdG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18s
IEZ1bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90
eXBlLmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9u
LW5hbWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2Jm
NDViMGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2VuZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5l
cmF0b3I7Cit9OworCit2YXIgZyA9IG9rKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NTYxZDkzMDc2MGQyMGVlNmVmNGNlNTcwM2VmNzNiOWZmOWFlNTZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
bWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigpIHsKK30KK3ZhciBnID0gZ2VuKCk7CisKK3No
b3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8
dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CisKKworc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgIGcudGhyb3cuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEg
Z2VuZXJhdG9yYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnJldHVybi5jYWxsKHt9
KTsKK30sIGBUeXBlRXJyb3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0
aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
bGF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmE0ZGM4Y2UwNzZjNzMxYzQyNGE4ODVmYjM4ZTM1N2U0
OTNmZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmVsYXRpb25zLmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiAqZ2VuZXJhdG9yRnVuY3Rpb24oKSB7Cit9CitsZXQgZ2VuZXJhdG9yID0gZ2VuZXJh
dG9yRnVuY3Rpb24oKTsKKworc2hvdWxkQmUoZ2VuZXJhdG9yIGluc3RhbmNlb2YgZ2VuZXJhdG9y
RnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUodHlwZW9mIGdlbmVyYXRvci5fX3Byb3RvX18sICdv
YmplY3QnKTsKK3Nob3VsZEJlKGdlbmVyYXRvci5fX3Byb3RvX18sIGdlbmVyYXRvckZ1bmN0aW9u
LnByb3RvdHlwZSk7CisKK2xldCBHZW5lcmF0b3JQcm90b3R5cGUgPSBnZW5lcmF0b3IuX19wcm90
b19fLl9fcHJvdG9fXzsKKworbGV0IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlID0gZ2VuZXJh
dG9yRnVuY3Rpb24uX19wcm90b19fOworbGV0IEdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9y
RnVuY3Rpb24uX19wcm90b19fLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rp
b24ucHJvdG90eXBlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRCZShnZW5l
cmF0b3JGdW5jdGlvbiBpbnN0YW5jZW9mIEdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3Vs
ZEJlKEdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuX19wcm90b19fLCBGdW5jdGlvbi5wcm90b3R5cGUpOwor
CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUsIEdlbmVyYXRv
clByb3RvdHlwZSk7CitzaG91bGRCZShHZW5lcmF0b3JQcm90b3R5cGUuY29uc3RydWN0b3IsIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworbGV0IGFycmF5SXRlcmF0b3IgPSBbXVtTeW1i
b2wuaXRlcmF0b3JdKCk7CitsZXQgQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGFycmF5SXRlcmF0
b3IuX19wcm90b19fOworbGV0IEl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5fX3Byb3RvX187CisKK3Nob3VsZEJlKEl0ZXJhdG9yUHJvdG90eXBlLCBHZW5lcmF0b3JQ
cm90b3R5cGUuX19wcm90b19fKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmly
c3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk2YTIxN2Y3MmM4N2MwODk4ZTU5MDlhYmFmMzg1YmYy
MDg5OTM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMTIg
QEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7
Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBn
ID0gZ2VuKCk7CitnLnJldHVybigiSGVsbG8iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MGFmNmUw
Nzg5ZGMxOGJiYWQzYTBhZmJiZjVhZDlhODVlYzEzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aGlzLmpzCkBAIC0wLDAg
KzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3Nh
Z2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxs
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAg
ICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisKK3ZhciBnbG9iYWwg
PSBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGds
b2JhbCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBg
UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
KyAgICB9CisgICAgeworICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQg
ZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZ2VuKCkgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIHRoaXM7
CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQg
ZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAg
Zy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2Jq
ZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhy
b3ctYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDZj
YjRmOTdlZTEwYzM4NTA2ZTE4ZWFjMGQ5YTNlNDE4NzllZGRlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3Jl
LWZpcnN0LWNhbGwuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQor
eworICAgIHRocm93IG5ldyBFcnJvcigiTkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7Cisg
ICAgdW5yZWFjaGFibGUoKTsKK30KKwordmFyIGcgPSBnZW4oKTsKK3ZhciBlcnJvciA9IG5ldyBF
cnJvcigiT0siKTsKK3ZhciB0aHJvd24gPSBudWxsOwordHJ5IHsKKyAgICBnLnRocm93KGVycm9y
KTsKK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJvd24gPSBlOworfQoraWYgKHRocm93biAhPT0gZXJy
b3IpCisgICAgdW5yZWFjaGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZDNiMmRmOTlhODQ4MGNiMzVhN2RkNmIzNGU2NjI1MzZlYWI4ZGI3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
d2l0aC1uZXctdGFyZ2V0LmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAq
Z2VuKCkKK3sKKyAgICB5aWVsZCBuZXcudGFyZ2V0OworfQorCit2YXIgZyA9IGdlbigpOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CisKK3ZhciBnMiA9IG5ldyBnZW4oKTsK
K3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWU1M2M3OTE3MzhlY2Y4YjlkMzQ5ODM1ZWE4M2JmOGQ2Yzg5NzdiYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtc3VwZXIuanMKQEAgLTAsMCArMSw4MiBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgcmV0dXJuIGV2YWwoJ3N1cGVyJyk7CisgICAgfQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4g
dGVzdCgpLCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9u
cy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdl
bigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNs
YXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiBl
dmFsKCdzdXBlci5nZW4oKScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcg
QSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgYS5nZW4oKS5uZXh0KCk7Cisg
ICAgfSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMu
YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4o
KSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFz
cyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBl
ci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBz
aG91bGRCZShhLmdlbigpLm5leHQoKS52YWx1ZSwgNDIpOworfSgpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQy
OworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAq
Z2VuKCkgeworICAgICAgICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAg
ICBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25z
dHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOworfSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuaAppbmRleCA5ZjE4OGJjYzJmNWI1ZWNjMzUzMDUxNGMyMGVkNTY2ODhhNmEyOThjLi45
OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZl
Y3Rvci5oCkBAIC0xODEsNyArMTgxLDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoU2V0
Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuID0gYXJy
YXlMZW5ndGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkgewpA
QCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oCmluZGV4IDQyMTk0MWYzYTQ0YWM2ZGM1ZDliNjdmZDJjZGQ4NmYxMjAxM2M2NDguLmY0NmUx
MTk3M2U1MjRjYTQyODU2YjBkNzY4Mzc5ZTFhOWY0NTkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaApAQCAtMzY0LDcgKzM2NCw3IEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9F
UzZfQ0xBU1NfU1lOVEFYKQotI2RlZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMAorI2RlZmlu
ZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVf
RVM2X01PRFVMRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3
NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVf
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1F
TkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVf
RVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsK
IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDEx
ZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZf
QVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwog
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZf
R0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQw
MzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyAr
NDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
ID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZ
TlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNT
X1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JT
ID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5B
QkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9
IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4
IDljZDg0NjVjMDljOWYxNzg2MDRjOWFiMjkyNWE3MGFiNDdjNjNlM2MuLjAyY2M3OThiMjBiZDZl
NDYyNjNiZTM5ZDkwMWE4ZmU5NGNiOWVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0zNCw3
ICszNCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04gUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJM
SUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVS
QVRPUlMgUFVCTElDIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9FUzZfR0VORVJBVE9SUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfRVM2X01PRFVMRVMgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVNIFBV
QkxJQyBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZDk2MjI0ZDQxNzFiZGJh
NzE3MGM0NWQzZGQ3MjE3NTQ3NzEyZjUwZC4uMDBlZGJjMDEzYmZmNjZmN2EwM2ZkZDI5YjYzMWY0
NjI1MGJlMjQzNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNyArNzcsNyBA
QCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9FTkNSWVBURURfTUVESUFfVjIgIlN1cHBvcnQgRU1FIHYyIiBQUklWQVRFIE9GRikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYICJU
b2dnbGUgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYICJUb2dnbGUgRVM2
IGNsYXNzIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQi
IFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VORVJB
VE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9NT0RVTEVTICJUb2dnbGUgRVM2IG1vZHVsZXMg
c3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VT
Nl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCAiVG9nZ2xlIEVTNiB0ZW1wbGF0ZSBsaXRlcmFsIHN5
bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9GSUxURVJTX0xFVkVMXzIgIlRvZ2dsZSBGaWx0ZXJzIE1vZHVsZSBMZXZlbCAyIiBQUklWQVRF
IE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA1NzhhYmI5NDI4ZmRlMWNlOTkzNTBlYThiZWI5ZmQzZDc1MjQyMzBjLi4xNGM3YmU1MDMyNDFk
Yzk3YjVjM2M0YzNmNDAzOTJmMDY5YzExM2M3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjQgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVt
ZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUg
dGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxNS0xMS0yMyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gVXNlIHRoZSBuZXR3b3JrIHByb2Nlc3MgdW5jb25kaXRpb25hbGx5CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5
ZDIzM2Q2OTFjNmI4OS4uNDYyMTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3
IEBAIEJFR0lOCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVm
YXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAi
Z2VuZXJhdG9ycyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJGdlbmVyYXRvcnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZf
R0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9
LAogCiAgICAgeyBvcHRpb24gPT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVs
ZXMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IDk5MWExNzdjZTNkM2YwZWE5NGU2YWQ0YzY0MDNlYjM5OWRj
YzljMzQuLmYxYjAwM2M1YzhkOWNkNjNkODVmMDhhODFlMWVhMDIxNzljMzRiNzggMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0y
NCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2
XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5k
IGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICog
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTExLTIzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBhbmQgTkVXUyBmb3IgMi4xMS4yIHJlbGVhc2UuCmRp
ZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZwppbmRleCAwYzhhZjJhYmIxMTI0OGViYTFmYTA4M2I5MzIyOTdjMjdjNDI4MGI1Li5k
ZDk1ZTJkN2Q5MjU0MjY2MTkwZWUwYjk2MTA0MmY4ZTUyYmJlODVhIDEwMDY0NAotLS0gYS9XZWJL
aXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9y
dCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMv
RmVhdHVyZURlZmluZXMucHJvcHM6CisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXNDYWlyby5wcm9wczoKKwogMjAxNS0xMS0wNSAgTmlrb3MgQW5kcm9uaWtvcyAgPG5p
a29zLmFuZHJvbmlrb3Mtd2Via2l0QGNpc3JhLmNhbm9uLmNvbS5hdT4KIAogICAgICAgICBBZGQg
cnVudGltZSBhbmQgY29tcGlsZSB0aW1lIGZsYWdzIGZvciBlbmFibGluZyBXZWIgQW5pbWF0aW9u
cyBBUEkgYW5kIG1vZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCmluZGV4IDBkNzRhOGY3ZWU1MjFlMDRmOWZlYmU0
ZGZhNzkyOWQ3ZTMzY2NkY2YuLmIwN2RjNTBhYmUyNWUwYjcwZmNhNWMzMDVkMTY2YmY1ZTcwYTg4
ZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJl
RGVmaW5lcy5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVh
dHVyZURlZmluZXMucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPgog
ICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPkVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI8
L0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAv
PgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFC
TEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJB
TF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJM
RV9GSUxFX1NZU1RFTSAvPgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92
c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwppbmRleCA5MWVlODBmZGY0YWYx
NThlYzVlZTQ4M2QwNjk2YzcxY2U0ODY0MTJkLi5mNWIwOGZmODEwZjdlNjFiN2NlYzZhYzVlYTY5
YTFhOTgzNTM4MGE4IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJv
cHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAog
ICAgIDxFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNf
Q09OU1RSVUNUT1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgLz4KLSAg
ICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5F
TkFCTEVfRVM2X0dFTkVSQVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxF
X0VTNl9NT0RVTEVTIC8+CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWD4KICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266152</attachid>
            <date>2015-11-25 05:27:19 -0800</date>
            <delta_ts>2015-11-25 07:29:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151125222701.patch</filename>
            <type>text/plain</type>
            <size>325689</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OGMwMzQxZjNjZTBkM2QzMjg3ZDhjZmU4NzdhMTUwNjllYjk0NTE3Li42ZjZiMTE2Y2ZjZGJkNTMx
Nzc0NDZmNzY1ZmExMjNiNzMxZjdhYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OTUgQEAKKzIwMTUtMTEtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlZ2lzdGVyIGlz
IGxpdmUuCisgICAgICAgIFJlZ2lzdGVycyByZXNpZGUgaW4gQyBzdGFjay4gU28gaWYgd2UgZG9u
J3QgcGVyZm9ybSBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIHZhbHVl
IGlzICpsaXZlKiBhbmQgKmNvcnJlY3QqIEpTQ2VsbCBvciBub3QKKyAgICAgICAgdG8gZW1pdCB3
cml0ZSBiYXJyaWVycy4KKyAgICAgICAgQnkgcGVyZm9ybWluZyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMsIHdlIGNhbiBkZXRlcm1pbmUgYWN0dWFsbHkgKmRlZippbmVkIHJlZ2lzdGVycyBhdCB0
aGF0IHJlc3VtZSBwb2ludC4KKworICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2
YWx1YXRlIHBhcmFtZXRlcnMgYmVmb3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAg
R2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5n
IEdlbmVyYXRvcidzIGJvZHkuIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBo
ZWxsbygpIHsgLi4uIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGxldCBnID0gZ2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNh
bGxlZC4KKworICAgICAgICBUbyBlbmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBp
biBHZW5lcmF0b3JGdW5jdGlvbiwgYW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRv
ciBhbmQgcmV0dXJuIGl0LgorICAgICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZv
bGxvd2luZyBwc2V1ZG8gY29kZS4KKworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0g
aGVsbG8oKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVy
YXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2Vu
ZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgNC4gb3Bfc2F2ZSBzZWVtcyBz
aW1pbGFyIHRvIGNvbmRpdGlvbmFsIGp1bXAKKworICAgICAgICBXZSB3b24ndCBqdW1wIHRvIGVs
c2V3aGVyZSBmcm9tIG9wX3NhdmUgYWN0dWFsbHkuIEJ1dCB3ZSBhZGQgYSAqdmlydHVhbCoganVt
cCBlZGdlIChmbG93KSBmcm9tIG9wX3NhdmUgdG8gdGhlIHBvaW50IHNvIGNhbGxlZCAqbWVyZ2Ug
cG9pbnQqLgorICAgICAgICBXZSBjb25zdHJ1Y3QgdGhlIENGRyBhcyBmb2xsb3dzLAorCisgICAg
ICAgICAgICAoZ2xvYmFsIGdlbmVyYXRvciBzd2l0Y2gpIC0+IChpbml0aWFsIHNlcXVlbmNlKSAt
PiAob3Bfc2F2ZSkgLS0tLSstPiAobWVyZ2UgcG9pbnQpIC0+IChuZXh0IHNlcXVlbmNlKSoKKyAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICB8CisgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BfcmV0
KSAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPihvcF9yZXN1bWUpLS0rCisK
KyAgICAgICAgQnkgY29uc3RydWN0aW5nIHN1Y2ggYSBncmFwaCwKKworICAgICAgICAgICAgMS4g
U2luY2Ugd2UgaGF2ZSBhIGZsb3cgZnJvbSAob3Bfc2F2ZSkgdG8gKG1lcmdlIHBvaW50KSwgYXQg
bWVyZ2UgcG9pbnQsIHdlIGNhbiAqdXNlKiBsb2NhbHMgdGhhdCBhcmUgZGVmaW5lZCBiZWZvcmUg
KG9wX3NhdmUpCisgICAgICAgICAgICAyLiBvcF9zYXZlIHNob3VsZCBjbGFpbSB0aGF0IGl0IGRv
ZXMgbm90IGRlZmluZSBhbnl0aGluZy4gQW5kIGNsYWltIHRoYXQgaXQgKnVzZSpzIGxvY2FscyB0
aGF0IGFyZSB1c2VkIGluIChtZXJnZSBwb2ludCkuCisgICAgICAgICAgICAzLiBhdCBvcF9yZXN1
bWUsIHdlIHNlZSAqdXNlKmQgbG9jYWxzIGF0IG1lcmdlIHBvaW50IGFuZCBkZWZpbmUgYWxsIG9m
IHRoZW0uCisKKyAgICAgICAgV2UgY2FuIGRvIHRoZSBhYm92ZSB0aGluZ3MgaW4gdXNlLWRlZiBh
bmFseXNpcyBiZWNhdXNlIHVzZS1kZWYgYW5hbHlzaXMgaXMgYmFja3dhcmQgYW5hbHlzaXMuCisg
ICAgICAgIEFuZCBhZnRlciBhbmFseXppbmcgdXNlLWRlZiBjaGFpbnMsIGluIG9wX3NhdmUgLyBv
cF9yZXN1bWUsIHdlIG9ubHkgc2F2ZSAvIHJlc3VtZSBsaXZlIHJlZ2lzdGVycyBhdCB0aGUgaGVh
ZCBvZiBtZXJnZSBwb2ludC4KKworICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAg
ICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChnZW5l
cmF0b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAg
ICAodGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgor
ICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2
YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bnVtQ2FsbGVlTG9jYWxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjp0cnlHZXQpOgorICAgICAgICAoSlND
OjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6
aXNDYWNoZWFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpnZW5lcmF0b3JUaGlzTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6
cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJyb3dGdW5jdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1v
ZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpc01vZGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c3VwZXJCaW5kaW5nKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2lu
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25Db21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9y
VGhpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5n
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlZ2lzdGVyRm9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAg
IChKU0M6OmVtaXRTdXBlckJhc2VGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Qnl0ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZn
L0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxl
RXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBmdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRp
YWxpemVFbnRyeUJ1ZmZlcik6CisgICAgICAgICogZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5o
OgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJl
cGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmlzTGl2ZUNlbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpmcmFtZVJlZ2lzdGVyQ291
bnRGb3IpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNDb21tb24pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21t
b24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUp
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmZyYW1lUmVnaXN0ZXJDb3VudEZvcik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0
aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNs
YXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0
eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpT
Y29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OlNjb3Bl
Ojpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rp
b25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAg
IChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVL
ZXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNr
UG9wKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNo
OjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRz
Ojppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNo
ZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVj
a1N5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmxvY2FsQXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0
T2ZMb2NhbHMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVG
b3JMb2NhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXNNb2Rl
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9y
RnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1
bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVy
YXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRv
ci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChf
X2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToK
KyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6
CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJ
dGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVu
dHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50
YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3Vs
ZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRv
cik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChnZW4p
OgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVh
Y2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQik6CisgICAg
ICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQSk6CisKIDIwMTUtMTEtMjMgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBN
YWMgQ01ha2UgYnVpbGQgYWZ0ZXIgcjE5Mjc5My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5NGMwNmY0ZmFiMDlmZjAz
YTY0MTc4MGUzZjI2YWMzYWQ4ZC4uYWQ5NWNhYjU1MDU2NjE5OGIyMmQ5MTQ0NjY4NDMxNTQyNzcz
NDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zh
c3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNldEJp
dCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUtMTEtMTggIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBG
QUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2ViQ29yZTo6b3BlblRl
bXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhYTdjMTQ3ZmRiMThkMTlhNGYwZjgzOTg5NTcx
MzA3MTY1NTVjOWUuLjFkNTg0NTVhOTQ5MDAxNjg0NGFmZDlhNjU4NzE5MTEwYzNkMDIwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTA5ODMp
OiBOb24tZWxlbWVudCwgbm9uLXRleHQgbm9kZXMgc2hvdWxkIG5vdCBiZSBkaXN0cmlidXRlZCB0
byBzbG90cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDNiOTlmNDg4MTkxY2EyMzA2MWVkMjBkNzhlODcx
MzMxZDQ1MWU0NjAuLmNlZWI5NDQ5NjM2NzQ1MTFiYjE2OTMxOWMzMDliNjVkYmZlYjc5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEgKzEsMTAgQEAKKzIwMTUtMTEtMjUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50
L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiA9PSBSb2xsZWQgb3ZlciB0
byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUyNDg2ZGIxMTAzZWM4NzQ0
NjEzYWU2ZWM1MGQ5ZTQ4ZjFhZTY2ZjQuLmZlYjc0MDAyYzllNzFjZWVkZDBiODA0MzhlMGY5NjMw
ZGIzMjE0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEt
MjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHVuY29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJl
OTczYzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5Mzdk
MzA5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAt
NzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6
cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE5MWVmNjZhNWFjNDEwMWQ1MmI3OWUz
YzY2M2M0Y2QxZWMyOWRiNDIuLjk0NjU1ZTU0NTkwY2VkMWVmMzYyM2ViZjM4YjQxOTcwMThlNzBh
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAg
cnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAt
NjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBy
dW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNw
cAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2
ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcworICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQy
MzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2
NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5B
QkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFC
TEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9E
VUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAzNzU4YTM2MzY0ZDk3YzM1ODNjOTE2ZjNmM2Q5ODVhNDg3N2Y5MmM2Li43
NjhlYmFhNjI5NzcyZjZkZWQ3OThhN2U2ZDdmODFkZWUwZWI2ZTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNiArODQsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zL0FycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9i
YWxPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVD
VF9MVVRfSEVBREVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQ
cm90b3R5cGUubHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5s
dXQuaCBcCiAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCAzZTdmOTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi5jYWZlMWYy
NzM0OGNlYmVhMTk0ZTZjNzU4MWYwZjNhM2UzNTU0ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsx
NjA4LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvblByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxGdW5jdGlvblJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY09m
ZnNldC5oIiAvPgpAQCAtMTY2MCw2ICsxNjcyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGbG9hdDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGbG9hdDY0QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBhNmQzZmYwMGUyNTAzYWNiYzM2Nzkw
YTM2ZTZlZTQzN2E5MzRiZmE4Li4xYjk3OGVlNDgxYzE4NDg3YTgyNTM1ZGY3Nzk4NTAxNTgyN2Ex
Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC02NjYsNiArNjY2LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGcmFtZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdldHRlclNldHRlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC03NDcsNiArNzU5LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0dsb2JhbE9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC0yNjEyLDYgKzI2MjcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNv
dXJjZUNvZGVLZXkuaCI+CisgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVy
LmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAg
LTI4MTMsNiArMjgzMSwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvblJhcmVEYXRhLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZyYW1lLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
UHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNN
b2RlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgsNiAr
Mjk1MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24u
aCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4K
KyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICszMzE4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xF
cnJvclByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVy
PkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzYzI1ZTZkNjM5MTk3NWQyZWQxYzUy
Njk5YjEwNTcxNjc2NGJmZDcuLjVkZTcxZmZjMTMyYzUyMjAzN2JlMzYxNzQxNzdkNTI1ZWFhMWIw
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkgQEAK
IAkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMz
NUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIw
MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNv
ZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5jcHAgKi87IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9
OworCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclRoaXNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3
OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QzFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi87IH07CisJCTcwQjc5MTlDMUMwMjRB
NDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREMzRTA5MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyog
SXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkg
LyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcw
REU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERFOUEwODFCRTdENjcwMDA1RDg5RDkg
LyogTExJbnRBc3NlbWJseS5oICovOyB9OwpAQCAtMzI3MSw2ICszMjg0LDIwIEBACiAJCTcwOUZC
ODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAx
MzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhp
c01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yVGhpc01v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4
MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291
cmNlQ29kZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RjFDMDI0
NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5
RDkgLyogTExJbnRBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
TEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDg1LDYgKzUx
MTIsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3Iu
bHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBl
Lmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRl
Y29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMTMsNiArNTI0MSw3IEBA
CiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkw
RjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2
RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0
NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEw
MDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAw
QTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovLApAQCAtNTM0Miw2ICs1MzcxLDE1IEBA
CiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8s
CiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICov
LAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8s
CisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywK
KwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJ
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThB
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4
QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAx
MTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEy
MUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBG
RTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDQxLDYg
KzU0NzksOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNw
cCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAog
CQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAor
CQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAq
LywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
ICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02
NTUzLDYgKzY1OTMsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGlu
TmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxz
LmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uUHJvdG90eXBl
LmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUuanMgKi8sCiAJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5q
cyAqLywKIAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKQEAgLTY5NjYsNiArNzAwNyw3IEBACiAJCQkJ
QTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcy
RSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMw
MDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzAxNSw2ICs3MDU3
LDcgQEAKIAkJCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJl
clN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyog
REZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZD
Q0ZGMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkExN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTcyMzUsNiArNzI3OCw3IEBACiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZE
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMx
ODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5
LmggaW4gSGVhZGVycyAqLywKQEAgLTcyNjEsNiArNzMwNSw3IEBACiAJCQkJNzAxMTNENEMxQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBG
MTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQw
RTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQxNTBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQwNCw2ICs3NDQ5LDcgQEAKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZB
M0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1
N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZE
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTc0NDAsNiArNzQ4Niw3IEBACiAJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8q
IEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDMxNzM4MTQ2QkFD
NjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5
MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVP
YmplY3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEg
LyogTGl2ZU9iamVjdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMiw2ICs3NjU5LDcgQEAK
IAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3RDEy
ODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OTBE
RDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NjQ0LDYgKzc2OTIsNyBAQAogCQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM4NzhFMUJG
QkM0NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDJFMzEzQjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJl
Q2hhaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODY2Miw2ICs4NzExLDcgQEAKIAkJCQlBMUI5RTIz
RDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTlC
MUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0
QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTg2ODgsNiArODczOCw3IEBACiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgw
MDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQy
Mzg5MDFCRTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAv
KiBKSVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOEND
OTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTg4MjUsNiArODg3Niw3IEBACiAJCQkJMTQyRDZGMDgxMzUz
OUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJG
M0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1h
dGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYz
IC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTcyLDYgKzkwMjQs
NyBAQAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4t
aW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
NDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk4MCw2ICs5MDMz
LDcgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5
MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5
MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJm
OTM5NGM2OGJkYzBhMy4uYTllNjliZWE2ZWVhZTU3OGI5MmQ5ODllMWU4OTE5MWEzMzQ4OTllZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAg
ICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVs
dENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBl
cnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKICAgICAg
ICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBp
ZiAoIXByb2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
cwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1t
eVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5h
bWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Njk5MTA1ZDE1OTNkZjIw
YjEwZGUxOGJiY2MxN2M2YmZkMDBmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIEdlbmVyYXRvclN0YXRlLgorICAgIGNvbnN0
IENvbXBsZXRlZCA9IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworCisgICAgLy8gUmVz
dW1lTW9kZS4KKyAgICBjb25zdCBOb3JtYWxNb2RlID0gMDsKKyAgICBjb25zdCBSZXR1cm5Nb2Rl
ID0gMTsKKyAgICBjb25zdCBUaHJvd01vZGUgPSAyOworCisgICAgbGV0IHN0YXRlID0gZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1
ZTsKKworICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICdudW1iZXInKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOworCisgICAgaWYg
KHN0YXRlID09PSBFeGVjdXRpbmcpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5l
cmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IENvbXBsZXRlZCkgewor
ICAgICAgICBpZiAocmVzdW1lTW9kZSA9PT0gVGhyb3dNb2RlKQorICAgICAgICAgICAgdGhyb3cg
c2VudFZhbHVlOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICBpZiAocmVzdW1lTW9k
ZSA9PT0gUmV0dXJuTW9kZSkKKyAgICAgICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IHNlbnRWYWx1ZTsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1
dGluZzsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09
PSBFeGVjdXRpbmcpIHsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRl
ID0gQ29tcGxldGVkOworICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIG5l
eHQodmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JS
ZXN1bWUodGhpcywgdmFsdWUsIC8qIE5vcm1hbE1vZGUgKi8gMCk7Cit9CisKK2Z1bmN0aW9uIHJl
dHVybih2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGdlbmVyYXRv
clJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogUmV0dXJuTW9kZSAqLyAxKTsKK30KKworZnVuY3Rpb24g
dGhyb3coZXhjZXB0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAZ2Vu
ZXJhdG9yUmVzdW1lKHRoaXMsIGV4Y2VwdGlvbiwgLyogVGhyb3dNb2RlICovIDIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcAppbmRleCA1NGRmZDE2OGNhNjAwZWJlZjEzNTgwNDMyYzc3ZTI1YWQ0NDRhZDBjLi41OTYw
NjRjNDA2ODI0OTc4MDg5YzQ2NDNmMWMzZGZiZDA1MzRiOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTks
NiArNTksNyBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBj
YXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNl
IG9wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAyOTkwZmFl
MzU0ODk3OWZlYzdjYTE4NjY5MDkxYmIwNWUyYWM2MmU4Li5iNDliNGYyYmJlYWU5MGM1ZDY0ZmMy
OTE4MmEyYzE5OWRhYWZlMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zd2l0Y2hfc3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgi
IDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIg
OiA5IH0sCkBAIC0xMjksNyArMTMxLDkgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rv
X2luZGV4X3N0cmluZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAotICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfQorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKaW5kZXggYzc3YWJlYWEyOTIwOWUzMjk5MTNjZDk0Y2ZhZDc1MTUxOWJk
OTlmMS4uNzIyOGIwMzMzNjZjN2E2N2I1MTA0ODhkZmU0NWYzZGQzY2ZhNDMxNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9j
ayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHQK
IC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVy
bWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8vIGV4Y2VwdGlv
biBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5
cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0
b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0
cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5z
dHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3Bl
cmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRl
cmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2Ft
ZQpAQCAtMTE2LDE5ICsxMTYsMTkgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAvLyBm
aXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92
ZSBpdCAodGhlIGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgK
LSAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBi
bG9jaywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAgICBpZiAo
aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAgICAgICAg
ICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAg
IH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJs
b2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAgICAgICAgICAgICAgICB1c2UoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxp
dmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKICAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0
byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUu
CiAgICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0
aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0
cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBG
YXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAg
ICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAogICAg
ICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJp
dEluZGV4KTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAg
ICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBiYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwog
ICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvYwogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQoKQogewogICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwor
ICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9j
a3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mm
IHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBi
bG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICBy
ZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAt
MjcxLDcgKzI3MSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2ls
bHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fY29kZUJsb2Nr
LCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAg
WyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZv
ciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGE2MTMy
YzMyYWFjZTk5YTcyOThmMzg0OTFjYmY4ODZlNWQ2NjY4NDUuLmQzZWMxNjVmODMyYWVmZWFlMmVk
YmFmYzE1ZDJhYmQwZGJlY2Y4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMiw3ICszMiw3IEBACiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CiB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKQEAgLTcwLDggKzcwLDkgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVxX251bGw6CiAgICAgY2FzZSBvcF9q
bmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2FzZSBvcF9pbmM6IAotICAgIGNhc2Ug
b3BfY29weV9yZXN0OiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6
CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoKICAgICBjYXNl
IG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Miw2ICsxNTQsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBv
cF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7
CkBAIC0yMzMsNiArMjM2LDIyIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxh
c3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX3NhdmU6IHsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKKyAgICAg
ICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3Jz
KCkpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkg
PT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgbWVyZ2VQb2lu
dEJsb2NrID0gc3VjY2Vzc29yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOworICAgICAgICBt
ZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjQwLDcgKzI1OSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtMjU1LDYgKzI3NCw3
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxs
OgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Cisg
ICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6
CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTUsNiArMzM1LDggQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAg
ICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoK
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfYXJy
b3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWls
X2NhbGxfdmFyYXJnczoKQEAgLTM5MCw3ICs0MTIsMTUgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5tX251bVZhcnM7IGktLTsp
CiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKLSAg
ICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgIGJsb2NrLT5zdWNj
ZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGZjYTYzMDE0OTE4
MjZiZWUxMDAxMjRjMmY2YWU0MmYxOGRlZjk5ZWUuLjQ5N2I2ZWVmMzQ5OWJiN2ZkMWRkODY0YjYw
MTU0YWVkMDgxOTQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAiOiAlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBi
eXRlczsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxl
KHMpIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIG1fbnVtUGFyYW1ldGVy
cywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CisgICAgICAgIG1fbnVtUGFyYW1l
dGVycywgbV9udW1DYWxsZWVMb2NhbHMsIG1fbnVtVmFycyk7CiAgICAgaWYgKG5lZWRzQWN0aXZh
dGlvbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBvdXQucHJpbnRm
KCI7IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zm
c2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CkBAIC02ODAsNiArNjgwLDE4IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3aGls
ZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAg
IH0KIAorICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLmlzRW1wdHkoKSkgeworICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVl
IExvY2FsczpcbiIpOworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOworICAgICAgICAgICAgb3V0LnByaW50ZigiICBsaXZl
JTF1ID0gIiwgaSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCJcbiIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9IHdoaWxlIChp
IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOworICAgIH0K
KwogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTEyOTQsNiArMTMwNiwxNCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKQEAgLTEzMTEsNiArMTMzMSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2Fs
bExpbmtJbmZvcyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0OTksNiArMTUyNywyNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
ICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7
CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwor
ICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
KEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgr
K2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAi
LCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgbGl2ZW5lc3Mu
ZHVtcChvdXQpOworICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE2
NjMsNyArMTcxMiw3IEBAIGNsYXNzIFB1dFRvU2NvcGVGaXJlRGV0YWlsIDogcHVibGljIEZpcmVE
ZXRhaWwgewogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9iYWxPYmpl
Y3Qob3RoZXIubV9nbG9iYWxPYmplY3QpCiAgICAgLCBtX2hlYXAob3RoZXIubV9oZWFwKQotICAg
ICwgbV9udW1DYWxsZWVSZWdpc3RlcnMob3RoZXIubV9udW1DYWxsZWVSZWdpc3RlcnMpCisgICAg
LCBtX251bUNhbGxlZUxvY2FscyhvdGhlci5tX251bUNhbGxlZUxvY2FscykKICAgICAsIG1fbnVt
VmFycyhvdGhlci5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Iob3RoZXIubV9pc0Nv
bnN0cnVjdG9yKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTE3MjAs
NiArMTc2OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQ
YXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9j
b25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Cisg
ICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBtX2hl
YXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0xNzMwLDcgKzE3ODAsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpCiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2Jh
bE9iamVjdChzY29wZS0+Z2xvYmFsT2JqZWN0KCktPnZtKCksIHRoaXMsIHNjb3BlLT5nbG9iYWxP
YmplY3QoKSkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkKLSAgICAs
IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNh
bGxlZUxvY2FscykKICAgICAsIG1fbnVtVmFycyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1WYXJz
KQogICAgICwgbV9pc0NvbnN0cnVjdG9yKHVubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9y
KCkpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVlKQpAQCAtMTkwMCw2ICsxOTUw
LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAorICAg
IC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgorICAgIFZlY3Rv
cjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisKICAgICBSZWZDb3VudGVkQXJy
YXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKQEAgLTIx
ODgsNiArMjI0MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBp
ICsgb2Zmc2V0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxOTksNiArMjI2MCwyMCBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6Om1v
dmUoaW5zdHJ1Y3Rpb25zKTsKIAorICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5h
bHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJl
c3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgorICAgIGlmICh1bmxpbmtlZENvZGVCbG9j
ay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAg
ICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkg
eworICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOworICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKKyAgICAgICAg
ICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOworICAgICAgICAgICAgZm9yIChz
aXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7CisgICAg
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBTZXQgb3B0aW1p
emF0aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXpl
ZCwgc2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5k
IGFyZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0
cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11
cCkuCkBAIC0yMjIyLDcgKzIyOTcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIDog
SlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCB0aGlzLCBnbG9iYWxPYmplY3QpCiAgICAgLCBtX2hlYXAoJm1fZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycygwKQorICAgICwgbV9udW1D
YWxsZWVMb2NhbHMoMCkKICAgICAsIG1fbnVtVmFycygwKQogICAgICwgbV9pc0NvbnN0cnVjdG9y
KGZhbHNlKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQoZmFsc2UpCkBAIC0zMDQ5LDYg
KzMxMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtN
b2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQg
aGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00
MDIwLDcgKzQwOTYsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogICAgIAogICAgIEZh
c3RCaXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoMCk7CiAgICAgCi0gICAgaWYgKGxpdmVBdEhlYWQubnVtQml0cygpICE9IHN0YXRp
Y19jYXN0PHNpemVfdD4obV9udW1DYWxsZWVSZWdpc3RlcnMpKSB7CisgICAgaWYgKGxpdmVBdEhl
YWQubnVtQml0cygpICE9IHN0YXRpY19jYXN0PHNpemVfdD4obV9udW1DYWxsZWVMb2NhbHMpKSB7
CiAgICAgICAgIGJlZ2luVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAgICAgICAgZGF0YUxvZygiICAg
IFdyb25nIG51bWJlciBvZiBiaXRzIGluIHJlc3VsdCFcbiIpOwogICAgICAgICBkYXRhTG9nKCIg
ICAgUmVzdWx0OiAiLCBsaXZlQXRIZWFkLCAiXG4iKTsKQEAgLTQwMjgsNyArNDEwNCw3IEBAIHZv
aWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7
CiAgICAgfQogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OyBpLS07KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9udW1DYWxsZWVMb2NhbHM7IGktLTsp
IHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGkpOwogICAgICAgICAKICAgICAgICAgaWYgKGxpdmVBdEhlYWQuZ2V0KGkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYzFkZjE4N2MxMjIwZDJm
N2YwMzI0YTJkMjVmOWI4M2MwNTJkODJlYy4uM2NiZTc1YzQ5NzgxMDE5Mzg4MGMzYTViMWI5OTU5
MzA1MDBhYTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1
ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+CisjaW5jbHVkZSA8d3RmL0Zh
c3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xNDEsNiAr
MTQyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgaW50IG51bVBh
cmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KICAgICB2b2lkIHNl
dE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsKIAorICAgIGludCBudW1DYWxsZWVMb2NhbHMo
KSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZUxvY2FsczsgfQorCiAgICAgaW50KiBhZGRyZXNz
T2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gJm1fbnVtUGFyYW1ldGVyczsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1QYXJhbWV0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKTsgfQogCkBAIC02NTQsNiArNjU3LDE4IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYg
YWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRh
YmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3Qo
KTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJs
ZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKKyAgICAvLyBMaXZlIGNh
bGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgorICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKKyAgICB9CisgICAgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOworICAgIH0KKwogICAgIEV2
YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJp
bmtNb2RlIHsKQEAgLTg1NSw3ICs4NzAsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSByZW1haW5pbmcgbWVtYmVycyBwcml2YXRl
LgogCiAgICAgaW50IG1fbnVtTG9jYWxSZWdpc3RlcnNGb3JDYWxsZWVTYXZlczsKLSAgICBpbnQg
bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgaW50IG1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIGlu
dCBtX251bVZhcnM7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIApAQCAtOTAw
LDYgKzkxNSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBW
ZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAgICAgICBW
ZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKKwogICAgICAg
ICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCA2MjUyMWZjNjUyOGM1
YTJlN2Q0ZWFmNDM4NThjMDZjZWU3YzdhZWRkLi44MzcwM2NmYTkyMmNjNjI3MTI4NWY1OTM4ZTJh
ODIwZjhiZWRiMDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VDb2RlS2V5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDQsMjMgKzQ1LDI5
IEBACiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2
YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYg
ZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlH
ZXQoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIFRo
aXNURFpNb2RlIHRoaXNURFpNb2RlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUp
KQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NhY2hlTWFwLmdldChldmFsU291cmNlLmltcGwo
KSkuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChpc0NhY2hl
YWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2Rl
S2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2
YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2Nh
Y2hlTWFwLmdldChzb3VyY2VDb2RlS2V5KS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBFdmFsRXhl
Y3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU3RyaW5nJiBldmFs
U291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3co
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2Nv
cGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZh
cmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1Vu
ZGVyVERaKHNjb3BlLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0
YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VT
b3VyY2UoZXZhbFNvdXJjZSksIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJs
ZXNVbmRlclREWik7CisgICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUg
PSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4
dCwgdGhpc1REWk1vZGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAgICBpZiAoIWV2
YWxFeGVjdXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RD
b250ZXh0LCBldmFsU291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNo
ZUVudHJpZXMpCi0gICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5pbXBs
KCksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxF
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0
LCBldmFsU291cmNlLCBzY29wZSkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNoZUVudHJp
ZXMpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAg
ICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygp
LCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAg
ICAgICAgICBtX2NhY2hlTWFwLnNldChzb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gZXZhbEV4ZWN1dGFibGU7CiAg
ICAgICAgIH0KQEAgLTgwLDE3ICs4NywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNjb3BlLT5p
c0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIHx8IHNjb3BlLT5pc0Z1bmN0aW9uTmFtZVNjb3Bl
T2JqZWN0KCkgfHwgc2NvcGUtPmlzVmFyU2NvcGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3Qg
U3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2Rl
JiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8g
SWYgZXZhbCgpIGlzIGNhbGxlZCBhbmQgaXQgaGFzIGFjY2VzcyB0byBhIGxleGljYWwgc2NvcGUs
IHdlIGNhbid0IHNvdW5kbHkgY2FjaGUgaXQuCiAgICAgICAgICAgICAvLyBJZiB0aGUgZXZhbCgp
IG9ubHkgaGFzIGFjY2VzcyB0byB0aGUgInZhciIgc2NvcGUsIHRoZW4gd2UgY2FuIGNhY2hlIGl0
LgogICAgICAgICAgICAgcmV0dXJuICFpblN0cmljdENvbnRleHQgCi0gICAgICAgICAgICAgICAg
JiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291
cmNlTGVuZ3RoKCkgCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihldmFs
U291cmNlLmxlbmd0aCgpKSA8IE9wdGlvbnM6Om1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVu
Z3RoKCkKICAgICAgICAgICAgICAgICAmJiBpc0NhY2hlYWJsZVNjb3BlKHNjb3BlKTsKICAgICAg
ICAgfQogICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heENhY2hlRW50cmllcyA9IDY0OwogCi0g
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFdyaXRlQmFycmllcjxF
dmFsRXhlY3V0YWJsZT4+IEV2YWxDYWNoZU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFNv
dXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4sIFNvdXJjZUNvZGVLZXlI
YXNoLCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cz4gRXZhbENhY2hlTWFwOwogICAgICAgICBFdmFs
Q2FjaGVNYXAgbV9jYWNoZU1hcDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDkyMTQ0Zjg5ZmJkNDUwZmU4MjA1MDBj
MmEwOTY5YjUwYjEwMmExNWQuLjI2MDJiZTdjNGZiZWNlOWRlYTUwMjE4ZmUxNGI1NjUxZmI0N2I4
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCkBAIC0yNiwyMSArMjYsMjggQEAKICNpZm5kZWYgRXhlY3V0YWJsZUluZm9faAogI2RlZmlu
ZSBFeGVjdXRhYmxlSW5mb19oCiAKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2lu
Y2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCisvLyBGSVhNRTogVGhl
c2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNo
b3VsZCBiZSByZW9yZ2FuaXplZC4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIEV4ZWN1dGFi
bGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0
TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlz
TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAg
ICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmlj
dE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAg
ICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgLCBtX2dl
bmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzTW9kZSkp
CiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0
cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9u
KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJp
bmRpbmcpKQorICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSk7CisgICAgICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CisgICAgICAgIEFTU0VSVChtX2dlbmVyYXRvclRo
aXNNb2RlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzTW9kZSkpOwogICAg
IH0KIAogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Fj
dGl2YXRpb247IH0KQEAgLTQ4LDggKzU1LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3Rvcjsg
fQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4obV9nZW5lcmF0b3JU
aGlzTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1
bmN0aW9uOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CisgICAgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAtNTcsOCArNjYs
MTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9k
ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsK
KyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKaW5kZXggZDYwZmRmN2QzY2YzNjBlM2VjMTY5ODc3OWFiZTZiOWViOTA2ZDUx
NC4uOTg5OTM5YjIzMzIxNGNmZDQ1YmUwN2JhZTg2MDlmYzg0YzdlYjM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAK
QEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pu
bGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6
CisgICAgY2FzZSBvcF9zYXZlOgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
Y3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX3N3aXRj
aF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThi
NTc2Li44N2U4MjMzZjFmZTNhOGJlYzQwMjMwZDI5OGIwOWU2ZGZmOWEzODk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAKIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhW
TSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhl
Y3V0YWJsZUluZm8mIGluZm8pCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9u
dW1WYXJzKDApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycygwKQorICAgICwgbV9udW1DYWxs
ZWVMb2NhbHMoMCkKICAgICAsIG1fbnVtUGFyYW1ldGVycygwKQogICAgICwgbV92bSh2bSkKICAg
ICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCkBAIC02NSwxMCAr
NjUsMTIgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkK
LSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBt
X2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmdlbmVyYXRvclRo
aXNNb2RlKCkpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
Zm8uc3VwZXJCaW5kaW5nKCkpKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNv
dW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKKyAgICAsIG1fcGFyc2VNb2RlKGlu
Zm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX2NvZGVUeXBlKGNv
ZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmYTUxNGMxNTZh
N2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi5iY2EyYzA0YWNhNDM4MjkyMTc1Njk1OGJh
YTY4ZGIzMGU4ZjEzNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1
YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2
LDcgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsg
fQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNl
TW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIwMiw2ICsyMDQsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
c3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRv
clRoaXNNb2RlPihtX2dlbmVyYXRvclRoaXNNb2RlKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3Vw
ZXJCaW5kaW5nKTsgfQogCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAgICAgewpAQCAtMjMyLDcg
KzIzNiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAg
ICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKLSAgICBpbnQgbV9u
dW1DYWxsZWVSZWdpc3RlcnM7CisgICAgaW50IG1fbnVtQ2FsbGVlTG9jYWxzOwogCiAgICAgLy8g
SnVtcCBUYWJsZXMKIApAQCAtMzg3LDEyICszOTEsMTQgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24g
OiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOworICAgIHVuc2lnbmVk
IG1fc3VwZXJCaW5kaW5nIDogMTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVu
c2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCisgICAgU291
cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwog
ICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4
IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0N2U5ZDU5YjYuLjNmNDk0ODg1YWY0OWMy
OGUyNmY0OTdkNjc1ZjY0YTE2YzliOWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApA
QCAtNTAsMTMgKzUwLDEzIEBACiBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIFZNJiB2bSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVu
Y3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAg
IFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVp
bHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWls
dGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdDsKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5w
YXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9u
ID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgp
LCBlcnJvciwgbnVsbHB0cik7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1l
KCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhl
Y3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyKTsKIAogICAgIGlmICghZnVu
Y3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC02Nyw3ICs2Nyw3
IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZl
YXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1
bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9u
LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQg
PT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgp
LCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5l
ZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0
TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFi
bGUtPmdlbmVyYXRvclRoaXNNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJz
ZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkpKTsKICAgICBlcnJv
ciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAt
NzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5v
ZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJs
ZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKICAgICA6IEJhc2UoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWRO
YW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtOTksNyArOTksOCBAQCBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RB
YmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
b2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5j
dGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlv
bigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2Vu
ZXJhdG9yVGhpc01vZGUpKQorICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rvcktp
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAg
ICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KTsKQEAgLTE4MCw3ICsxODEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogCiBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKLSAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKQorICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKIHsKICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewogICAgIGNhc2Ug
Q29kZUZvckNhbGw6CkBAIC0xOTYsNyArMTk3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IAotICAgICAgICBlcnJvciwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgZXJyb3IsIHBhcnNl
TW9kZSk7CiAgICAgCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGQ4ZTgyMjkzOTBlNTc3Y2I0ODBmYjBl
OTI5M2Y0MWJhNDJkOWMxZjguLmM4YmJhMGFjMzJiZTQzN2ZmYjVkZjNlM2Y5ZTA1YjA0NzhhNTM2
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Q29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhw
cmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5j
bHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCkBAIC02NSwxMCArNjYsMTAgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRG
dW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVF
bnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRl
cj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JU
aGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0tPmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
dm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNl
LCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Y29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBu
b2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhp
c01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC04Miw2
ICs4Myw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0K
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KKyAgICBHZW5l
cmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEdlbmVyYXRvclRoaXNNb2RlPihtX2dlbmVyYXRvclRoaXNNb2RlKTsgfQorICAgIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJp
bmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAgdW5zaWduZWQgdW5saW5rZWRGdW5jdGlv
bk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydDsg
fQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAtOTUsNyArOTgsNyBAQCBjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2VyRXJyb3ImLCBib29sKTsKKyAgICAgICAg
UGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwg
CkBAIC0xMjUsMTAgKzEyOCw5IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0QWJpbGl0eT4obV9jb25z
dHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7
IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9Ci0gICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQog
CiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJl
KiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVy
cmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUsIFZh
cmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7
CiAKQEAgLTE1OCw3ICsxNjAsOCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0QWJpbGl0eTog
MTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9m
dW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CisgICAg
dW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI5MzcwYzhkMjg0YTM4NGYy
MWUwZTc4OTI2ODU0NWM5MmIxOTgyM2IuLjg3NzAyZWMzOWEzM2I2MjkwMGY4Y2NjZWJjNThkOTZi
MWY3NjlhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMiw4ICszMiwxMCBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJK
U1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CkBAIC0yMjcsOSArMjI5LDMzIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
ID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsKICAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZU
aGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29s
IG5lZWRzQXJndW1lbnRzID0gZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJs
b2NrLT51c2VzRXZhbCgpOworCisgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1
bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBl
ciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7
CisKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5v
dCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlv
biBwcm92aWRlcyAiYXJndW1lbnRzIi4KKyAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3Vt
ZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBp
dC4KKyAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJndW1l
bnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5kIHJl
ZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICAvLworICAgICAgICAvLyAgICBm
dW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQorICAgICAgICAvLyAgICB7CisgICAgICAgIC8v
ICAgICAgICByZXR1cm4geworICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIHsKKyAgICAgICAgLy8g
ICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVm
ZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCisgICAgICAgIC8vICAgICAgICAgICAgICAg
IC4uLgorICAgICAgICAvLyAgICAgICAgICAgIH0KKyAgICAgICAgLy8gICAgICAgIH0KKyAgICAg
ICAgLy8gICAgfQorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsK
KyAgICB9CisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzKQogICAgICAgICBm
dW5jdGlvbk5vZGUtPnZhckRlY2xhcmF0aW9ucygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVk
KCk7CiAgICAgCkBAIC0yNTQsMTQgKzI4MCwzMyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUoKQogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAgICAgCiAgICAg
bV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwotICAgIAorCisgICAg
aW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CisKKyAgICAvLyBCZWZvcmUgZW1pdHRp
bmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRh
aW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKyAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICBtX2dlbmVyYXRv
clJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKKyAgICAgICAgaWYgKGdlbmVyYXRvclRoaXNN
b2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1vdmVF
bXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRj
aF9pbW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRp
bmUgc3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBjYWxs
aW5nIGBuZXh0KClgLCB3ZSB3b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGlu
c3RlYWQgb2YganVtcGluZyBiYXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4K
KyAgICAgICAgLy8gSXQncyBzdWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlu
bGluZXMgb25lIGBuZXh0YCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBiZWdp
bkdlbmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIEluaXRp
YWwgc3RhdGUuCisgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgfQorCiAg
ICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0
aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CisgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNT
Y29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwg
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVD
YXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAg
ICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVD
YXB0dXJlZDsKICAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUt
PmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7CiAgICAgfQotICAg
IAorCiAgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpIHsKICAgICAgICAgbV9s
ZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOwogICAgICAgICAvLyBXZSBjYW4g
YWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRvbid0IGhhdmUgZGVmYXVsdCBw
YXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKQEAgLTI3MSwxOSArMzE2LDYgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAgIGluaXRp
YWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAg
ICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9m
IG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycwotICAgIC8vIG5l
ZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUgbm90ZWQuCi0gICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFy
YW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0gICAgbV90
aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7
IC8vIHRoaXMKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7
ICsraSkgewotICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0Owot
ICAgICAgICBpZiAocGF0dGVybi0+aXNSZXN0UGFyYW1ldGVyKCkpIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3Jlc3RQYXJhbWV0ZXIpOwotICAgICAgICAgICAgbV9yZXN0UGFyYW1l
dGVyID0gc3RhdGljX2Nhc3Q8UmVzdFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOwotICAgIH0KLSAg
ICAKICAgICAvLyBGaWd1cmUgb3V0IHNvbWUgaW50ZXJlc3RpbmcgZmFjdHMgYWJvdXQgb3VyIGFy
Z3VtZW50cy4KICAgICBib29sIGNhcHR1cmVzQW55QXJndW1lbnRCeU5hbWUgPSBmYWxzZTsKICAg
ICBpZiAoZnVuY3Rpb25Ob2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB7CkBAIC00NzYsNyAr
NTA4LDM2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
fQogCiAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOwotICAgIGlmICghY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgeworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQorICAgICAg
ICAgICAgZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKwor
ICAgICAgICAvLyBGSVhNRTogRW1pdCB0b190aGlzIG9ubHkgd2hlbiBHZW5lcmF0b3IgdXNlcyBp
dC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU4NgorICAgICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisKKyAgICAgICAgZW1pdE1vdmUobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2Fs
bGVlUmVnaXN0ZXIpOworICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVy
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6IHsKKyAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJl
Y3RseSBiZWZvcmUgaGVyZS4KKyAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3Rlciwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsK
ICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9u
ZXdUYXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTUz
LDggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAg
ZW1pdExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03OTksNiArODU5LDIyIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFtZXRlcigpCiAgICAgcmV0dXJu
ICZwYXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJh
bWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQg
bWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBh
cmUgbm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsg
Ly8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgo
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRv
IHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0OworICAgICAgICBpZiAocGF0dGVybi0+
aXNSZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQ
YXJhbWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVz
dFBhcmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KK30KKwogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIpOwpAQCAtODI2LDE3ICs5MDIsMTcgQEAgVW5pcXVlZFN0cmluZ0ltcGwqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjp2aXNpYmxlTmFtZUZvclBhcmFtZXRlcihEZXN0cnVjdHVyaW5nUGF0dGUKIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1JlZ2lzdGVyKCkKIHsKLSAgICBtX2Nh
bGxlZVJlZ2lzdGVycy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVSZWdp
c3RlcnMuc2l6ZSgpKSk7Ci0gICAgaW50IG51bUNhbGxlZVJlZ2lzdGVycyA9IG1heDxpbnQ+KG1f
Y29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywgbV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgp
KTsKLSAgICBudW1DYWxsZWVSZWdpc3RlcnMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKLSAgICBtX2NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgPSBudW1DYWxsZWVSZWdpc3RlcnM7Ci0gICAgcmV0
dXJuICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CisgICAgbV9jYWxsZWVMb2NhbHMuYXBwZW5k
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOworICAgIGlu
dCBudW1DYWxsZWVMb2NhbHMgPSBtYXg8aW50PihtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMsIG1fY2FsbGVlTG9jYWxzLnNpemUoKSk7CisgICAgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUNhbGxlZUxv
Y2Fscyk7CisgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9j
YWxzOworICAgIHJldHVybiAmbV9jYWxsZWVMb2NhbHMubGFzdCgpOwogfQogCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycygpCiB7Ci0gICAgd2hpbGUgKG1fY2Fs
bGVlUmVnaXN0ZXJzLnNpemUoKSAmJiAhbV9jYWxsZWVSZWdpc3RlcnMubGFzdCgpLnJlZkNvdW50
KCkpCi0gICAgICAgIG1fY2FsbGVlUmVnaXN0ZXJzLnJlbW92ZUxhc3QoKTsKKyAgICB3aGlsZSAo
bV9jYWxsZWVMb2NhbHMuc2l6ZSgpICYmICFtX2NhbGxlZUxvY2Fscy5sYXN0KCkucmVmQ291bnQo
KSkKKyAgICAgICAgbV9jYWxsZWVMb2NhbHMucmVtb3ZlTGFzdCgpOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3QmxvY2tTY29wZVZhcmlhYmxlKCkKQEAgLTE5MTUsNyAr
MTk5MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgICAg
ICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQo
bG9ja2VyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YXJLaW5kID09IFZhcktpbmQ6
OlN0YWNrKTsKLSAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkpOworICAgICAgICB2YXJPZmZzZXQgPSBW
YXJPZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7
CiAgICAgfQogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCAwKTsKICAg
ICBzeW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgcHJvcGVydHkuaW1wbCgpLCBuZXdFbnRyeSk7CkBA
IC0yMzEyLDEyICsyMzg4LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
QXNzZXJ0KFJlZ2lzdGVySUQqIGNvbmRpdGlvbiwgaW50IGxpbmUpCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KQogewogICAgIHNp
emVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX3N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuY3JlYXRlVGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiArIDMpOwor
ICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKGRzdC0+aW5kZXgoKSwgYmVn
aW4gKyAzKTsKIAogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
KGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7
IAotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCi0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIHJldHVybiBkc3Q7CkBAIC0yNDcxLDIwICsy
NTQ3LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJheShSZWdp
c3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiBlbGVtZW4KICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQotewotICAgIHJldHVybiBlbWl0
TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFr
ZUZ1bmN0aW9uKGZ1bmN0aW9uKSkpOwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRl
eCkKLXsKLSAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdp
c3RlcigpLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwotICAg
IHJldHVybiBkc3Q7Ci19Ci0KIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiB7CiAgICAgZW1pdE9wY29k
ZShvcF9uZXdfcmVnZXhwKTsKQEAgLTI0OTMsMTMgKzI1NTUsMjUgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJl
Z0V4cCkKICAgICByZXR1cm4gZHN0OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBmdW5j
LCBPcGNvZGVJRCBvcGNvZGVJRCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBm
dW5jKQogewotCi0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCB8fCBvcGNv
ZGVJRCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHApOwotICAgIAogICAgIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBmdW5jdGlvbiA9IGZ1bmMtPm1ldGFkYXRhKCk7CiAgICAgdW5zaWduZWQgaW5kZXgg
PSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwor
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBvcF9uZXdfZnVuY19leHA7CisgICAgc3dpdGNoIChm
dW5jdGlvbi0+cGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hcnJvd19m
dW5jX2V4cDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIH0KICAgICAKICAgICBlbWl0T3Bjb2RlKG9wY29kZUlEKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTI1MTIsMTcgKzI1ODYs
MTggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lz
dGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSoKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhw
ck5vZGUqIGZ1bmMpCiB7Ci0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3Bf
bmV3X2Z1bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwg
ZnVuYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEFycm93
RnVuY0V4cHJOb2RlKiBmdW5jKQogeworICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgpLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKICAgICBib29s
IGlzQ2xhc3NDb25zdHJ1Y3RvciA9IG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgJiYgY29u
c3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwotICAgIGlmIChpc0NsYXNz
Q29uc3RydWN0b3IpCisgICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvciB8fCBnZW5lcmF0b3JUaGlz
TW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKICAgICAgICAgZW1pdFREWkNoZWNr
KHRoaXNSZWdpc3RlcigpKTsKICAgICAKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBm
dW5jLCBvcF9uZXdfYXJyb3dfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNTQwLDYgKzI2
MTUsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29u
c3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHIKICAgICByZXR1cm4gZHN0OwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQoreworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24p
KTsKKyAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3Jf
ZnVuYyk7CisgICAgZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoaW5kZXgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVj
dGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBl
bWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNzY2LDYgKzM4NTQsMjQgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBpdGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gbmV4dCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJv
cGVydHlOYW1lcygpLm5leHQpOworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMo
KnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICBlbWl0Q2FsbChkc3QsIG5leHQuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICB9CisgICAgeworICAgICAg
ICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgZHN0KSwgdHlwZUlzT2JqZWN0
LmdldCgpKTsKKyAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0
b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgZW1pdExh
YmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKIHsKICAgICBSZWZQdHI8
TGFiZWw+IGRvbmUgPSBuZXdMYWJlbCgpOwpAQCAtMzg0Miw0ICszOTQ4LDIxOCBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVz
dWx0LCB1bnNpZ25lZCBudQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIFJl
ZlB0cjxMYWJlbD4gbWVyZ2VQb2ludCA9IG5ld0xhYmVsKCk7CisgICAgc2l6ZV90IHlpZWxkUG9p
bnRJbmRleCA9IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsKKyAgICBlbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4KTsKKyAgICAvLyBGaXJzdCB5aWVsZCBwb2lu
dCBpcyB1c2VkIGZvciBpbml0aWFsIHNlcXVlbmNlLgorICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHlpZWxkUG9pbnRJbmRleCAtIDE7CisgICAgZW1pdFNhdmUobWVyZ2VQb2lu
dC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBlbWl0UmV0dXJuKGFyZ3VtZW50
KTsKKyAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBv
aW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCit7CisgICAgc2l6ZV90IGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCog
bWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQoreworICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBlbWl0TGFi
ZWwobWVyZ2VQb2ludCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgZW1pdFlpZWxkUG9pbnQoYXJndW1l
bnQpOworCisgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRF
cXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdl
dCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAg
ZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93
TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVs
LmdldCgpKTsKKyAgICAvLyBSZXR1cm4uCisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCk7CisgICAgICAgIGlm
IChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZW1p
dE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICAgICAgICAg
IGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAgICAgfQorICAgICAgICBl
bWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBUaHJvdy4K
KyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgZW1pdFRocm93KGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3JtYWwuCisgICAgZW1pdExhYmVsKG5vcm1h
bExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworfQor
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcmV2aW91cyA9IG5ld1RlbXBvcmFyeSgpOworICAgIGVtaXRMb2Fk
KHByZXZpb3VzLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICB7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVu
dCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgeworICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVtaXRN
b3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVtaXRDYWxs
KGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdz
LCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbmV4dEVsZW1lbnQgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgICAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7
CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5leHRFbGVtZW50LmdldCgpKTsKKworICAgICAgICAg
ICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1p
dExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRZaWVsZFBvaW50KHZhbHVlLmdldCgp
KTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwg
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAg
ZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCks
IGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNv
bmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBuZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybi4KKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBy
ZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jh
cnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1l
bnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3Zl
KHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0
ZXIoMCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9k
ZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRl
cmF0b3JSZXN1bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlC
bG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBl
bWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1
cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVyblNlcXVlbmNlLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1
cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJl
c3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdl
dCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCks
IHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuSXRlcmF0b3JSZXN1bHQu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgLy8gVGhyb3cuCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHRocm93TGFi
ZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiB0aHJvd01ldGhvZE5vdEZvdW5kID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudGhyb3dLZXl3b3JkKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1Rl
bXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9kTm90Rm91bmQuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgdGhyb3dBcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZSh0aHJvd0FyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBl
bWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgdGhyb3dNZXRob2QuZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgdGhyb3dBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRK
dW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1
bHQuZ2V0KCkpLCByZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2Ug
aXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHRo
cm93TWV0aG9kTm90Rm91bmQuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0
b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3Qg
aGF2ZSBhICd0aHJvdycgbWV0aG9kLiIpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBOb3JtYWwuCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKG5vcm1hbExhYmVs
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0TW92ZShwcmV2aW91cy5nZXQoKSwgZ2VuZXJh
dG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW1pdExh
YmVsKG5leHRFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBl
bWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgcHJl
dmlvdXMuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUp
LCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAg
IGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHByZXZp
b3VzLmdldCgpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0
YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3Rh
dGUpKSk7CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlKTsKK30KKwordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAgIFJl
ZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzLmFwcGVuZChsYWJlbC5nZXQoKSk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3Rh
dGUpCit7CisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0
ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVm
YXVsdExhYmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4
dFN0YWNrLmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisK
KyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClb
c3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRj
aEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKwor
ICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRk
U3dpdGNoSnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5m
by5ieXRlY29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUu
YnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7
CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQg
aGF2ZSBiZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUg
ImZvcndhcmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxh
YmVsc1tpXS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAz
KSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAzOGI2
NTlhMzM2ODViYjNjNzI2NDdkY2ZhZmI4ZDU4MjA0MjJiYTg2Li5kZmQwMTFiOTQzMmVjY2YxZGQz
Y2QzMGE3ZTVhZTU1M2U4NjY2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3IEBACiAj
ZGVmaW5lIEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
ICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCkBAIC0yODAsNiAr
MjgxLDggQEAKIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JL
aW5kKCk7IH0KKyAgICAgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUoKTsgfQorICAgICAg
ICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnN1cGVyQmluZGluZygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoKTsKIApA
QCAtMjk3LDYgKzMwMCw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGVSZWdpc3Rlcigp
IHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclJlZ2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3RlcjsgfQorCiAgICAgICAg
IC8vIFJldHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSByZWdpc3Rlci4gUmVnaXN0
ZXJzIHJldHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSByZXF1aXJlIGEgbW9kaWZp
ZWQgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAgICAvLyByZWdpc3RlciB3
aXRoIGEgcmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFibGUiLCBtZWFuaW5nIHRo
YXQKQEAgLTQ5OSwxMCArNTA0LDggQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5
KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgpOyAvLyBzdG9w
cyBhdCBmaXJzdCBlbGlzaW9uCiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBp
bmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVn
aXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25D
b21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqLCBPcGNvZGVJRCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwg
QXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChS
ZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBAIC01OTYsNiArNTk5LDcgQEAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAgICAgICB2b2lkIGVtaXRJ
dGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIo
UmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsKQEAgLTY0
NCwxMiArNjQ4LDI4IEBACiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCosIFN3
aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3aXRjaCh1aW50MzJfdCBj
bGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2RlKiosIExhYmVsKiBkZWZh
dWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAorICAgICAgICB2b2lkIGVt
aXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbWl0U2F2ZShMYWJlbCog
bWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgdm9p
ZCBlbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOworCisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAg
ICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVy
SUQqKTsKKyAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzJdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0K
KwogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7
IH0KIAogICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3No
b3VsZEVtaXRQcm9maWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpOyB9CisKKyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KIApAQCAtNjY3LDYgKzY4Nyw3IEBACiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAg
ICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHBy
Tm9kZSopOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFy
aWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3Rl
cklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpAQCAtNzMwLDcgKzc1
MSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQmIHJlZ2lzdGVyRm9yKFZpcnR1YWxSZWdpc3RlciBy
ZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyc1tyZWcudG9Mb2NhbCgpXTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNbcmVnLnRvTG9jYWwoKV07CiAKICAgICAgICAg
ICAgIGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQogICAgICAgICAgICAgICAg
IHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyOwpAQCAtNzUyLDEyICs3NzMsMjIgQEAKICAgICAgICAg
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBn
ZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNVbmRlclREWik7CiAKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENv
ZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwogICAgICAgICAgICAgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSA9IG1ldGFkYXRhLT5wYXJzZU1vZGUoKTsKICAgICAgICAgICAg
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bkNvbnN0cnVjdDsKLSAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUg
fHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkg
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgICAgICAg
ICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZSAmJiBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5k
aW5nOjpOZWVkZWQpCisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKworICAgICAgICAgICAgR2VuZXJhdG9yVGhpc01v
ZGUgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHk7CisgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAm
JiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpc01vZGUgPSBH
ZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHk7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0
YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERa
KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWik7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKQEAgLTc2NSw2ICs3OTYsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lz
dGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBm
aXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCog
cHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAorICAgICAgICB2b2lkIGluaXRp
YWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYpOwogICAgICAgICB2b2lkIGluaXRp
YWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7
CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1
bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlvblBhcmFtZXRlcnMmLCBGdW5jdGlvbk5vZGUqLCBTeW1i
b2xUYWJsZSosIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbCAoVW5pcXVlZFN0cmluZ0ltcGwqKT4mIGNhcHR1cmVzKTsKIApAQCAtODA0LDYgKzgz
Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIG1fdG9wTW9zdFNjb3BlIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2FyZ3VtZW50c1JlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyIHsgbnVsbHB0ciB9
OworICAgICAgICBSZWdpc3RlcklEKiBtX2dlbmVyYXRvclJlZ2lzdGVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKQEAgLTgx
MSw3ICs4NDQsNyBAQAogCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklEKiwgMTY+
IG1fbG9jYWxSZWdpc3RlcnNGb3JDYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50
ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwotICAgICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOworICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlTG9jYWxzOwogICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVyczsKICAgICAg
ICAgU2VnbWVudGVkVmVjdG9yPExhYmVsLCAzMj4gbV9sYWJlbHM7CiAgICAgICAgIExhYmVsU2Nv
cGVTdG9yZSBtX2xhYmVsU2NvcGVzOwpAQCAtODI3LDYgKzg2MCw3IEBACiAgICAgICAgIFZlY3Rv
cjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKICAgICAgICAgZW51bSBGdW5jdGlv
blZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxG
dW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXpl
OwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2OGU1YmJkMGY1Mi4uMWNkZTY1
ZDE0OGE4ZWMyYjQyOWIxMTk3MTdjZjg4YjJhYTNiYjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJM
YWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQK
IAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7
CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0xNzAsMTIg
KzE3MSwxNiBAQCBSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgJmNhbGxlZSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCi1zdGF0aWMgUmVn
aXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yKQorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2Fs
bGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK30KIAotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBob21lT2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0
UHJpdmF0ZU5hbWUpOworc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
aG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGhvbWVP
YmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsK
IH0KIApAQCAtMjU4NCw2ICsyNTg5LDcgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBk
c3QgPSAwOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1
ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5l
cmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5j
dGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAo
Z2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAgICAgICByZXR1cm5SZWdpc3RlciA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lz
dGVyLmdldCgpKTsKQEAgLTI5NjYsMjYgKzI5NzIsOTYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGlu
ZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KTsKIAotICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0
YXRlbWVudCgpOwotICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworICAgIHN3aXRjaCAo
Z2VuZXJhdG9yLnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRl
bWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhw
clN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVt
ZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5leHBy
KCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVu
Y0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOwor
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOwor
CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpO
ZWVkZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1p
dEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21l
T2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAg
IH0KIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBh
IGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0
ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50
Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5n
bGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50
SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAg
ICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJ
bkJsb2NrKTsKLSAgICB9CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3Jl
YXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBw
cm9wZXJ0aWVzIGZvciBlYXNlLgorICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQs
IHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5l
cmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJv
cGVydGllcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0NQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJh
dG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJp
dmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRp
cmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2Ug
bXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0gICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgorICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1
bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZv
ciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2Rl
LgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExp
bmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAg
ICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9u
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
cXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0
b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAg
ICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93
TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0
b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhy
b3coZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgIH0KKworICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAg
ICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpOworCisgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRl
ZmluZWQoKSkpOworICAgICAgICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGVtaXRTdGF0
ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKKwor
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAgICAgICAg
Ly8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24g
Y29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQg
JiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRlbWVudE5v
ZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xl
U3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZW1l
bnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxhc3RTdGF0
ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJl
dHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYgKCFyZXR1
cm5Ob2RlKSB7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0
cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
MCwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBu
b3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90
IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZz
ZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgfQogfQogCkBAIC0zMDEzLDExICszMDg5LDI0IEBAIFJlZ2lzdGVySUQqIEFycm93RnVuY0V4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
CiAKIFJlZ2lzdGVySUQqIFlpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMg
aXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGluZyBFUzYgR2VuZXJhdG9ycywgd2UgbmVlZCB0
byBpbXBsZW1lbnQgaXQuCi0gICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxp
dGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikpOworICAgIGlmICghZGVsZWdhdGUoKSkgewor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFy
Z3VtZW50KCkpIHsKKyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50KCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCkpOworICAgICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSk7CisgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQo
KSwgYXJndW1lbnQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXREZWxlZ2F0ZVlpZWxkKGFyZy5nZXQoKSwgdGhpcyk7CiAgICAgaWYgKGRzdCA9PSBnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggMjRkYmQ3YmUyZDg3ODY4NWNlMTUwZTQ3MWUzNWIyYTg3MjZlNjcyMC4uZGE5NDAzOGQ2Yjky
YmQ4YzVkNTRkOWQ1ZjZkY2FiMDdhZDQ4NWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBC
eXRlQ29kZVBhcnNlciB7CiAgICAgICAgICwgbV9jb25zdGFudE5hTihncmFwaC5mcmVlemUoanNO
dW1iZXIoUE5hTikpKQogICAgICAgICAsIG1fY29uc3RhbnRPbmUoZ3JhcGguZnJlZXplKGpzTnVt
YmVyKDEpKSkKICAgICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKQotICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykKKyAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJTbG90cygwKQogICAgICAgICAsIG1fbnVtUGFz
c2VkVmFyQXJncygwKQogICAgICAgICAsIG1faW5saW5lU3RhY2tUb3AoMCkKQEAgLTE0MTMsNyAr
MTQxMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgCiAgICAgZW5zdXJlTG9jYWxz
KAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lU3RhcnQpLnRvTG9jYWwo
KSArIDEgKwotICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
clNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBzaXplX3Qg
YXJndW1lbnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUo
KTsKIApAQCAtMjkyNyw3ICsyOTI3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29y
cmVzcG9uZHMgdG8gdGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKAotICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSkub2Zmc2V0KCk7Cisg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMgLSAxKS5vZmZzZXQoKTsKICAgICByZWdpc3Rlck9mZnNldCAtPSBudW1iZXJPZlBhcmFtZXRl
cnM7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsK
ICAgICAKQEAgLTMwOTYsNyArMzA5Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5SWQoCiAgICAgCiAgICAgICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhh
dCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgICAgIGludCBy
ZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKAotICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAtIDEp
Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOwogICAgICAgICByZWdpc3Rlck9mZnNl
dCAtPSBudW1iZXJPZlBhcmFtZXRlcnM7CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggNTFhYzU1ZDRjYTVmOWVkNDk4YWI4ODk3Yzk2ZWQyNTkz
MzNkNjI4Ny4uZjVmNGNiNTIzODBlZGJiM2M5Zjg5NzEwMzIxMTBhMDg4Y2ZkMTI5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzYsNyArNzYsNyBA
QCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZUJlZm9y
ZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQmVmb3JlID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGJlZm9yZS5ieXRlY29kZUluZGV4
KTsKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUFmdGVyID0gZnVsbExpdmVuZXNz
LmdldExpdmVuZXNzKGFmdGVyLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
czsgcmVsYXRpdmVMb2NhbC0tOykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9j
YWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOyByZWxhdGl2ZUxvY2FsLS07KSB7CiAg
ICAgICAgICAgICBpZiAobGl2ZUJlZm9yZS5nZXQocmVsYXRpdmVMb2NhbCkgJiYgIWxpdmVBZnRl
ci5nZXQocmVsYXRpdmVMb2NhbCkpCiAgICAgICAgICAgICAgICAgZnVuY3Rvcih2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKSArIHN0YWNrT2Zmc2V0KTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDQyODg3MGIxYzJhMjU4NzE1Y2Q3
MTUzYjhlNzk5YmVhZTkyYzRlNWYuLjE5MTFjZmVlZDY0MTkwMzk2YzhhZTY1ZjNhN2VjNDk3OGE3
NjZmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTczOCw3ICs3Mzgs
NyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxG
cmFtZSk7CiAgICAgICAgICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgZnVsbExpdmVuZXNzID0g
bGl2ZW5lc3NGb3IoY29kZUJsb2NrKTsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGNvZGVPcmlnaW5QdHItPmJ5dGVj
b2RlSW5kZXgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgcmVsYXRpdmVMb2NhbC0tOykgeworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29kZUJsb2NrLT5tX251bUNhbGxl
ZUxvY2FsczsgcmVsYXRpdmVMb2NhbC0tOykgewogICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciByZWcgPSBzdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHJlbGF0aXZl
TG9jYWwpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIERvbid0IHJlcG9y
dCBpZiBvdXIgY2FsbGVlIGFscmVhZHkgcmVwb3J0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCmlu
ZGV4IGU2YzQyMzVlYzRjYTY4MTdjZDM3ZTY5OTgzNDc4NjA4OWYyYjZlZmEuLjVlNWExNTA0YzI0
ZDA2NDA0Zjc4NmIxNzIyZTJmNjE1MGY4ZmFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCkBA
IC05Myw4ICs5Myw4IEBAIGNsYXNzIE9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgLy8gV2UnZCByZWFsbHkgbGlrZSB0byB1c2UgYW4gdW5zZXQgb3Jp
Z2luLCBidXQgVGhyZWFkZWRDUFMgd29uJ3QgYWxsb3cgdGhhdC4KICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNl
KTsKICAgICAgICAgCi0gICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251
bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBi
YXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKKyAgICAgICAgVmVjdG9y
PE5vZGUqPiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgZm9y
IChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKyts
b2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52YXJpYWJs
ZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hlYWQpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3MgT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKLSAgICAgICAgZm9y
IChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsg
Kytsb2NhbCkgeworICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUt
Pm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91
c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAg
ICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCmlu
ZGV4IGJlOGUyYTc5MTQ5ZjVhMmUzMTQ0YWQ0NjRhMzVjNjU0ZmM1OTllMGMuLjYzOTJmMTRhOTgw
NGNmYjY5MmU4NGJjMzkwMTIwZDBiYWI3ZGJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcApAQCAtMTIzLDkgKzEyMyw5
IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzOwogICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkK
LSAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIFZp
cnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRv
TG9jYWwoKSArIDE7CisgICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
SW5saW5lQ2FsbEZyYW1lKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+bV9udW1DYWxsZWVM
b2NhbHMgKyBWaXJ0dWFsUmVnaXN0ZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0KS50b0xvY2FsKCkgKyAxOwogICAgIGVsc2UKLSAgICAgICAgbnVtVmFyaWFibGVzID0g
YmFzZWxpbmVDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgICAgICBudW1WYXJp
YWJsZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAgICAgCiAgICAg
Ly8gQ3Jhenkgc3BlY2lhbCBjYXNlOiBpZiB3ZSdyZSBhdCBpbmRleCA9PSAwIHRoZW4gdGhpcyBt
dXN0IGJlIGFuIGFyZ3VtZW50IGNoZWNrCiAgICAgLy8gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBh
bGwgdmFyaWFibGVzIGFyZSBhbHJlYWR5IHNldCB1cC4gVGhlIHJlY292ZXJpZXMgc2hvdWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5j
cHAKaW5kZXggMjlmMDVlNTFkNDYxZmRmNmUwMTQzODMxOTljOTE4ZjY0MTVlOGNlYS4uMzA4MGRj
MzQ1MDljNzMzMzI0YjgxNDNkMmE5NTRmMDhlZGFmMTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcApAQCAtNDUsOSArNDUs
OSBAQCBGb3JPU1JFbnRyeUpJVENvZGUqIEZvck9TUkVudHJ5SklUQ29kZTo6ZnRsRm9yT1NSRW50
cnkoKQogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIEZvck9TUkVudHJ5SklUQ29kZTo6aW5p
dGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5zaWduZWQgbnVtQ2FsbGVlUmVnaXN0ZXJzKQor
dm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYgdm0sIHVu
c2lnbmVkIG51bUNhbGxlZUxvY2FscykKIHsKLSAgICBtX2VudHJ5QnVmZmVyID0gdm0uc2NyYXRj
aEJ1ZmZlckZvclNpemUobnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSk7CisgICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKG51bUNhbGxl
ZUxvY2FscyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9T
UkVudHJ5SklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRy
eUpJVENvZGUuaAppbmRleCA0NGFmOGY5NTc5MWFhYTc4ZTZlODFkZmE2NDljODZhMTVlYTM0NDgx
Li45YWU5NzNmNDBkMTJjMTZiODA5YzBjOGNhMWUzNmViYWE4ZWUzNjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgRm9yT1NSRW50cnlKSVRDb2RlIDogcHVibGljIEZUTDo6SklUQ29kZSB7
CiAgICAgRm9yT1NSRW50cnlKSVRDb2RlKCk7CiAgICAgfkZvck9TUkVudHJ5SklUQ29kZSgpOwog
ICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWduZWQgbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICB2b2lkIGluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYsIHVuc2ln
bmVkIG51bUNhbGxlZUxvY2Fscyk7CiAgICAgU2NyYXRjaEJ1ZmZlciogZW50cnlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2VudHJ5QnVmZmVyOyB9CiAgICAgCiAgICAgdm9pZCBzZXRCeXRlY29k
ZUluZGV4KHVuc2lnbmVkIHZhbHVlKSB7IG1fYnl0ZWNvZGVJbmRleCA9IHZhbHVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCmluZGV4IGFjNzE3MTRmOTNmNTVh
ZjI2MThjN2U0MjBhNzFiNjZkZTIxMTc2NjYuLjYwMWI0NjA5NDA2NGFjNjEzYTk4ZmE5YzIyOTM4
NmZhNmVhZGYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICB9CiAgICAgCiAg
ICAgUkVMRUFTRV9BU1NFUlQoCi0gICAgICAgIHN0YXRpY19jYXN0PGludD4odmFsdWVzLm51bWJl
ck9mTG9jYWxzKCkpID09IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAg
IHN0YXRpY19jYXN0PGludD4odmFsdWVzLm51bWJlck9mTG9jYWxzKCkpID09IGJhc2VsaW5lLT5t
X251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KAogICAgICAgICBlbnRyeUNvZGUtPmVudHJ5QnVm
ZmVyKCktPmRhdGFCdWZmZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3Bw
CmluZGV4IDAzMDdlMGVkMDVjNWEyNTYxY2M0ZWY4MmI1YWEyZTVmZmNmOGMwZWIuLjU1ZDgyOWEy
YTY2YjYyNjA5MTU4NGE3M2UxMWRiYTAzYzI1NmVhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAgICAgfQogICAgIGNhc2UgRlRMRm9y
T1NSRW50cnlNb2RlOiB7CiAgICAgICAgIFJlZlB0cjxGb3JPU1JFbnRyeUpJVENvZGU+IGNvZGUg
PSBhZG9wdFJlZihuZXcgRm9yT1NSRW50cnlKSVRDb2RlKCkpOwotICAgICAgICBjb2RlLT5pbml0
aWFsaXplRW50cnlCdWZmZXIoZ3JhcGgubV92bSwgZ3JhcGgubV9wcm9maWxlZEJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIGNvZGUtPmluaXRpYWxpemVFbnRyeUJ1ZmZlcihn
cmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAg
ICAgICAgY29kZS0+c2V0Qnl0ZWNvZGVJbmRleChncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29k
ZUluZGV4KTsKICAgICAgICAgaml0Q29kZSA9IGNvZGU7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZDViMTQ5MmFlN2Y1M2RlNmNh
NjU1MTljNTcyZWI2MWVlYjM5ZTMwZS4uNTQ2OTcxY2U4ZjUzOGI5ZTMzNWNmZmZiMjg0NzMzYmQ5
NjE1NGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0x
NTUsNiArMTU1LDcgQEAKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQq
KTsKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNM
aXZlQ2VsbChjb25zdCB2b2lkKik7CisgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsK
ICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CiAg
ICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1h
cmtlZChjb25zdCB2b2lkKik7CkBAIC0zODgsNyArMzg5LDcgQEAKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKGNv
bnN0IHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2
b2lkKiBwKQogICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVk
KHApKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVyKHApOwpA
QCAtMzk5LDcgKzQwMCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAoYXRvbU51bWJlciA+PSBtX2VuZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50byBpbnZh
bGlkIGNlbGxzIG91dCBvZiB0aGUgcmFuZ2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2Nr
Ojppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCisgICAgeworICAgICAgICBpZiAoIWlzQXRvbShw
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0
aWNfY2FzdDxjb25zdCBKU0NlbGwqPihwKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjNTQ3NTFjZDcyMGZm
ZmMxMWUxNWQzNTI1NmIwNjM3NWMwYjZlOGFjLi42NGU3NGNmNjUwYjAwZDQ4NWE4MzFjZDUyMzcx
ZWM0MmRkNGRkZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKQEAgLTE1Myw3ICsxNTMsMTYgQEAgSlNWYWx1ZSBldmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJG
cmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogY2FsbGVyU2NvcGVDaGFpbiA9IGNhbGxl
ckZyYW1lLT51bmNoZWNrZWRSKGNhbGxlckNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNl
dCgpKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxl
ckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICBVbmxpbmtl
ZENvZGVCbG9jayogY2FsbGVyVW5saW5rZWRDb2RlQmxvY2sgPSBjYWxsZXJDb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CisKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNU
RFpNb2RlOjpDaGVja0lmTmVlZGVkOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgICAgICB0
aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsKKyAgICBpZiAoY2FsbGVyVW5s
aW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
TW9kZSAmJiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUoKSA9PSBH
ZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1v
ZGU6OkFsd2F5c0NoZWNrOworCisgICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKG1ha2VTb3VyY2Uo
cHJvZ3JhbVNvdXJjZSkpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJs
b2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIHNvdXJjZUNvZGUsIHRoaXNURFpNb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgIGlm
ICghZXZhbCkgewogICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
IHsKQEAgLTE3MSw4ICsxODAsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3Qg
aGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCku
ZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gY2FsbGVy
Q29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBUaGlzVERa
TW9kZTo6Q2hlY2tJZk5lZWRlZDsKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZh
bENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBwcm9ncmFtU291cmNlLCBjYWxs
ZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVD
YWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNo
YWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpAQCAtNDEwLDcgKzQxOCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdp
c3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogICAgIGRhdGFMb2dGKCItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLVxuIik7CiAKLSAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKKyAgICBlbmQgPSBpdCAtIGNvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBpZiAo
aXQgIT0gZW5kKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9ICgqaXQp
LmpzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhNjFiNTdkNDYxNWY5
YTkyZTliMzQzOTZlZDM4OGY3OTZkODQ1MGQwLi44NzllZmIyYmFiNGUyNDBjN2MxOTc1YmI0NmY5
ZDQzZDY3NjQyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTQsNiArMjE0
LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfY29weV9yZXN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAg
ICBERUZJTkVfT1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKKyAgICAg
ICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpA
QCAtMjYwLDYgKzI2Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklORV9PUChv
cF9uZXdfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAg
REVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICAgICAgREVGSU5FX09QKG9wX25l
d19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyb3dfZnVu
Y19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19yZWdleHApCkBAIC03NjMsOSArNzY3LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQogCiB1bnNpZ25lZCBKSVQ6OmZyYW1lUmVnaXN0ZXJD
b3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpKTsKKyAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpID09IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykpKTsKIAotICAgIHJldHVy
biByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJl
Z2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2lu
dGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKIH0KIAogaW50IEpJVDo6c3RhY2tQb2ludGVyT2Zm
c2V0Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
ZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2NzdlNzY2
YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00
OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NvcHlfcmVzdChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5l
cmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2Jq
ZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3Ry
dWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlm
dChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0
U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24o
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJlKGludCBk
c3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWduZWQgZGVw
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDQ5NDg5
NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1ZjBmMmNl
MjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2NvZGVCbG9j
ay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkUGF5
bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5kaWYKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVj
bChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNF
eGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5l
cmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKKyAgICBl
bWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQor
CiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4LDExICsx
MDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVnVDIpOwog
I2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHAp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlv
biwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRvbmUubGlu
ayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9u
KGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0
TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0x
NDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUx
ZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVB
bmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwg
SlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1v
bihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFi
bGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7
CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
RnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
LCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVh
dGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewot
ICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9u
PihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sK
KyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29s
IGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxp
ZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rp
b25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
OwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYxNDVjOWQ1
NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1
OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwCmluZGV4IGE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFi
NzgwYzMuLmY1OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC0xMzQs
OSArMTM0LDkgQEAgdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVMb2NhbHMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscykpKTsKIAotICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZv
ckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5k
TG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1D
YWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcy
YzczYjRlZWQ2M2UzYjIwOGM1Li4zNTFhNGM4ZDQ0MmYyZDZjNjhjNGE5MmMzMmYxNmVjNjAyZGE4
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgpAQCAtMjI0LDkgKzIyNSw5IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjCiAgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5k
KTsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFi
bGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3Rl
cnMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAorICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBv
ZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJz
ID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgICAg
ICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKLSAgICAgICAg
ICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bV9u
dW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxl
ZUxvY2FscywKICAgICAgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkpOwogfQogCkBAIC00NTgs
NyArNDU5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2QKICNpZiBMTElOVF9TTE9XX1BBVEhf
VFJBQ0lORwogICAgIGRhdGFMb2dGKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0g
JXAuXG4iLCBleGVjKTsKICAgICBkYXRhTG9nRigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5j
b2RlQmxvY2soKSk7Ci0gICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIGRhdGFMb2dG
KCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlTG9jYWxzKTsKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bVZhcnMpOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTEwNDEsNiArMTA0
MiwxOCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
YmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBz
Y29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSB8fCBleGVjLT5o
YXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihw
Y1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAg
ICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7
CkBAIC0xMDUyLDYgKzEwNjUsMTcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRf
UkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJd
LnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKwor
ICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJy
b3dfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggZTI0NDgyOWZkZDFlMmYxNTA2YTM1ZDEw
YTRlYjgxZmNiZTMyYzUzMS4uMjcxMzI0YjE4NDUzZDcyZGM4Yjc2MTgwYmEwMzA0YWI0NTY1OTU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAg
LTk5LDYgKzk5LDggQEAKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dp
dGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19m
dW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhw
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Nh
bGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGY4ZTEyOGNjZDlhMDRhMTFhY2Y5OTFjYmMxYjViMjBkOTdjYWYwMzMuLjYxMjY0
ZDk4ODU3NzU1NTM3MTM1ZjljMzQ3YzAwZmJlM2VhZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTY5Nyw3ICs2
OTcsNyBAQCBtYWNybyB2bUVudHJ5UmVjb3JkKGVudHJ5RnJhbWVQb2ludGVyLCByZXN1bHRSZWcp
CiBlbmQKIAogbWFjcm8gZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2soY29kZUJsb2Nr
LCBzaXplKQotICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbY29kZUJs
b2NrXSwgc2l6ZQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVMb2NhbHNbY29kZUJs
b2NrXSwgc2l6ZQogICAgIGxzaGlmdHAgMywgc2l6ZQogICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwsIHNpemUKIGVuZApAQCAtMTIyNyw2ICsxMjI3LDEyIEBAIF9sbGludF9v
cF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9v
cF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwxMSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5j
X2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBAIC0xNTczLDYgKzE1ODQs
MTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9z
YXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9z
YXZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3Bh
dGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
aW5kZXggYWNjMjE2MmU4ZGYxMjQ5ZjU5N2Y4NmY1MjJiNzBlMWU5NjA5YmUwMC4uMmI4NGNiYWYz
N2VmMDQ2MGJkYjkxNmQyYmJkYWMwMmUwZDJiNGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5ICszNDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRl
ciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9j
YXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVs
ZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisgICAgWWllbGRFeHByTm9k
ZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVu
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5v
ZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIFlpZWxkRXhwck5vZGUq
IG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3Vt
ZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0
LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgQ2xhc3NF
eHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJv
bm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2NCwxMiArMzY2LDEyIEBA
IGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAg
ICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENv
bnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJp
Y3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQs
IG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8pCkBAIC04ODYsNiArODg4LDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAg
ICAgICBub2RlLT5zZXRTdGFydE9mZnNldChvZmZzZXQpOwogICAgIH0KKworCisgICAgdm9pZCBw
cm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNBcmd1bWVudHMoKTsgfQogICAgIAogcHJpdmF0
ZToKICAgICBzdHJ1Y3QgU2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5
Mzg1ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNl
dENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAg
ICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4o
ZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xv
c2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYK
ICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAgICAsIG1f
cGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0
Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihp
c0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQobV9zdXBlckJp
bmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAwYWEzMTFk
YzExZDdmOGE4YjAxZmVjN2U0NGJkZTIxZmE1NzhlZWNlLi4wYmYwMGI3YmU5MzdmNzk3OGE0NTYz
NzNmYWRlMzFmNWM3NWY5ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBA
IC0xODE3LDcgKzE4MTcsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAg
Q29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmlu
aXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
TW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsxODQyLDggQEAKIAogICAgICAgICBpbnQgc3Rh
cnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAg
ICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0
Q29udGV4dDsgfQorICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25l
ZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5l
U3RhcnRPZmZzZXQpCkBAIC0xODY5LDggKzE4NjksOCBAQAogICAgICAgICBpbnQgbV9sYXN0TGlu
ZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25l
ZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMy
LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2ODc0YjI3ZTM5MDkw
N2M4ZTQxNDk4MjZjMzc5ZTQyY2Y1OWNlNTJhLi4xNjI1ZjNmYmUwZTFiMzIzZmRmYzQ0YmUwMTg0
ZDBhZWJiY2Y5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1f
c291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEwLDcgQEAKICAgICAsIG1fbGFzdEZ1bmN0aW9u
TmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9wYXJzaW5n
QnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAg
ICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0
b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNU
RFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlv
bkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9k
ZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rp
b25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7
CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0yNzMsOCArMjc3LDEyIEBACiAgICAgICAgICAg
ICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5
U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VN
b2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxl
U291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNr
Rm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBD
aGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZEVu
ZGluZzsKQEAgLTMwMSw3ICszMDksMTQgQEAKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJE
ZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsKICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgICAgIHZhckRlY2xhcmF0aW9ucy5tYXJr
VmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLSAgICAKKworICAgIElkZW50aWZpZXJTZXQgdXNl
ZFZhcmlhYmxlczsKKyAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsK
KyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFibGVzLmNvbnRhaW5zKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAgICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVB
cmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250
ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZl
YXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMzExLDEwICszMjYsOSBAQAogICAgICAg
ICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVk
QXJndW1lbnRzKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7
CisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVz
OwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZpZXJTZXQgdXNl
ZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxl
cyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ugd2Fu
dCB0byBhbGxvdyBidWlsdGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAgICAgICAgICAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIHZhcmlh
YmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzIsNDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQoreworICAg
IGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CisK
KyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBK
U1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4
dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1f
dG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0g
bV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3Rh
cnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBhcmFtZXRl
ckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCisKKyAg
ICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVz
aFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBTeW50YXhDaGVja2Vy
IGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIu
Z2V0KCkpOworICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVyYXRv
ckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBnZW5l
cmF0b3IiKTsKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRl
cjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9CisgICAgaW5mby5ib2R5ID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwg
c3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yTW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRMaW5lID0gdG9rZW5M
aW5lKCk7CisgICAgaW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAg
aW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1dG8gZnVuY3Rpb25F
eHByID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5mbyk7Cisg
ICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2Nh
dGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsK
KyAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsK
KworICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVy
YWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAt
MTU4OSwxNSArMTY0MiwxNCBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkJvZHkoCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlw
ZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9
IGJvZHlUeXBlOwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5
VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRj
aChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5D
b2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VN
b2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE2MDksNyArMTY2MSw3IEBACiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJz
ZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlU
eXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2Yg
dGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlv
biIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0
aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9y
S2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBw
YXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCkBAIC0xNjI1LDYgKzE2NzcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4g
Im1ldGhvZCI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CiAgICAg
ICAgIHJldHVybiAiZ2VuZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1
cm4gImFycm93IGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGU6CkBAIC0xNzAzLDYgKzE3NTcsMzcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0
ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworCisgICAgLy8gQGdlbmVyYXRvcgorICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVO
YW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7
CisKKyAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVy
YXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAg
ICAvLyBAZ2VuZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZh
bHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBA
Z2VuZXJhdG9yUmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0
b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRp
b24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwor
ICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1v
ZGUsIDApOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlv
blJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5h
bWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0xODEzLDEyICsxODk4LDEwIEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNl
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5k
TG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAog
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3Ry
dWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0
aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwor
ICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBleHBl
Y3RlZFN1cGVyQmluZGluZywgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0
aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAg
ICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNo
ZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xODMyLDcgKzE5MTUsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAg
ICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAg
ICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0
OwogCi0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJv
ZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
OwpAQCAtMTg1NCwxNCArMTkzNywzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9u
TmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZl
U3RhdGUoKTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5
KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBm
dW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisg
ICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVy
biBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUs
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgfTsKKworICAgIGlmICht
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7CisgICAgICAg
IEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwor
ICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZv
cm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisKKyAgICAgICAgLy8gV2hlbiBhIGdlbmVyYXRvciBo
YXMgYSAidXNlIHN0cmljdCIgZGlyZWN0aXZlLCBhIGdlbmVyYXRvciBmdW5jdGlvbiB3cmFwcGlu
ZyBpdCBzaG91bGQgYmUgc3RyaWN0IG1vZGUuCisgICAgICAgIGlmICAoZ2VuZXJhdG9yQm9keVNj
b3BlLT5zdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5zZXRTdHJpY3RN
b2RlKCk7CisKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGdlbmVyYXRvckJvZHlTY29wZS0+
aGFzRGlyZWN0U3VwZXIoKSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNz
IGNvbnN0cnVjdG9yIik7CisgICAgICAgIGlmIChnZW5lcmF0b3JCb2R5U2NvcGUtPm5lZWRzU3Vw
ZXJCaW5kaW5nKCkpCisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0ZWRTdXBl
ckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25seSBiZSB1
c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOworCisgICAgICAgIHBvcFNjb3Bl
KGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdG
dW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZh
aWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9m
ZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5j
dGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgfHwgbW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9u
SW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZh
bGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAi
JyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9u
IG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xOTI5LDcgKzIwMzEsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1
bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5u
b3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5u
YW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0yMDgwLDcg
KzIxODIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dlbmVyYXRv
cikgewogICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAg
ICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1v
ZGU7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1l
ZCAncHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRl
bnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBh
IGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBAIC0yNzMx
LDcgKzI4MzMsNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBFeHByZXNzaW9uRXJyb3JDbGFz
c2lmaWVyIGNsYXNzaWZpZXIodGhpcyk7CiAKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCi0g
ICAgaWYgKG1hdGNoKFlJRUxEKSkKKyAgICBpZiAobWF0Y2goWUlFTEQpICYmICFpc1lJRUxETWFz
a2VkQXNJREVOVChjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3IoKSkpCiAgICAgICAgIHJldHVy
biBwYXJzZVlpZWxkRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogCkBAIC0yODM2LDYgKzI5
MzgsNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBmYWlsSWZUcnVlKG1fZnVuY3Rpb25QYXJz
ZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1c2UgeWll
bGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFy
dCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVMRCkpOwogICAg
IFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBuZXh0KCk7CkBA
IC0yODQzLDEzICsyOTQ2LDE0IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVnYXRlID0gY29u
c3VtZShUSU1FUyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9IHRva2VuU3Rh
cnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAgICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUsIGRpdm90
U3RhcnQsIGFyZ3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMzA0MSw3ICszMTQ1LDcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgSlNUb2tl
bkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQg
bWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dl
bmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0
b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhv
ZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8p
OwpAQCAtMzI5NCw3ICszMzk4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5
T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJB
VE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VN
b2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1bmN0aW9u
SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxN2IwZTgxYWVh
MWQ4OWM0ZmVjOTQ0NzU3YzdmNDk1ZWM1MDQ3NzNlLi43MjU5YTVkNDc1NTZmNDA1M2E0MGFhM2Vj
MzQzNTllOTY3OTM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTE3Miw2ICsxNzIsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNMZXhpY2FsU2Nv
cGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkoZmFsc2UpCiAgICAgICAg
ICwgbV9pc1ZhbGlkU3RyaWN0TW9kZSh0cnVlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZh
bHNlKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgw
KQogICAgIHsKQEAgLTE5Miw2ICsxOTMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1f
aXNMZXhpY2FsU2NvcGUocmhzLm1faXNMZXhpY2FsU2NvcGUpCiAgICAgICAgICwgbV9pc0Z1bmN0
aW9uQm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5KQogICAgICAgICAsIG1faXNWYWxp
ZFN0cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUpCisgICAgICAgICwgbV9oYXNBcmd1
bWVudHMocmhzLm1faGFzQXJndW1lbnRzKQogICAgICAgICAsIG1fbG9vcERlcHRoKHJocy5tX2xv
b3BEZXB0aCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKHJocy5tX3N3aXRjaERlcHRoKQogICAg
ICAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21vZHVsZVNjb3BlRGF0YSkKQEAgLTI0Niw2
ICsyNDgsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIHNldElzR2VuZXJhdG9yKCk7
CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigp
OworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5v
cm1hbEZ1bmN0aW9uTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1v
ZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgpAQCAtMjY4LDYg
KzI3NCw4IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiBtX2lzRnVuY3Rpb25Cb3VuZGFyeTsgfQogICAgIGJvb2wgaXNHZW5lcmF0
b3IoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yOyB9CiAKKyAgICBib29sIGhhc0FyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRzOyB9CisKICAgICB2b2lkIHNldElz
TGV4aWNhbFNjb3BlKCkgCiAgICAgeyAKICAgICAgICAgbV9pc0xleGljYWxTY29wZSA9IHRydWU7
CkBAIC00NTAsMTYgKzQ1OCwyMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgbV91c2Vz
RXZhbCA9IHRydWU7CiAKICAgICAgICAgewotICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRl
cmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5lbmQoKTsKLSAgICAgICAg
ICAgIGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0gbmVzdGVkU2NvcGUtPm1fdXNl
ZFZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICAgICAgICAg
IGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSB8fCBu
ZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAg
ICAgZm9yIChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpbXBsIDogbmVzdGVkU2Nv
cGUtPm1fdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+
bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucyhpbXBsKSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhp
Y2FsVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIC8vICJhcmd1bWVudHMiIHJlZmVyZW5jZSBzaG91bGQgYmUg
cmVzb2x2ZWQgYXQgZnVuY3Rpb24gYm91ZGFyeS4KKyAgICAgICAgICAgICAgICBpZiAobmVzdGVk
U2NvcGUtPmlzRnVuY3Rpb25Cb3VuZGFyeSgpICYmIG5lc3RlZFNjb3BlLT5oYXNBcmd1bWVudHMo
KSAmJiBpbXBsID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxl
cy5hZGQoKnB0cik7CisKKyAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKGltcGwp
OwogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgYSBkZWNsYXJlZCB2YXJpYWJsZSB0
aGF0IGlzIHVzZWQgaW4gYW4gaW5uZXIgc2NvcGUgdG8gYmUgdGhvdWdodCBvZiBhcyBjYXB0dXJl
ZCBpZgogICAgICAgICAgICAgICAgIC8vIHRoYXQgaW5uZXIgc2NvcGUgaXMgYm90aCBhIGxleGlj
YWwgc2NvcGUgYW5kIG5vdCBhIGZ1bmN0aW9uLiBPbmx5IGlubmVyIGZ1bmN0aW9ucyBhbmQgImNh
dGNoIiAKICAgICAgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIGNhbiBjYXVzZSB2YXJpYWJsZXMg
dG8gYmUgY2FwdHVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRyYWNrQ2xvc2VkVmFy
aWFibGVzICYmIChuZXN0ZWRTY29wZS0+bV9pc0Z1bmN0aW9uQm91bmRhcnkgfHwgIW5lc3RlZFNj
b3BlLT5tX2lzTGV4aWNhbFNjb3BlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJp
YWJsZUNhbmRpZGF0ZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZh
cmlhYmxlQ2FuZGlkYXRlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgLy8gUHJvcGFnYXRlIGNsb3NlZCB2YXJpYWJsZSBjYW5kaWRhdGVzIGRvd253YXJkcyB3
aXRoaW4gdGhlIHNhbWUgZnVuY3Rpb24uCkBAIC01NTAsMTQgKzU2MiwyMiBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIHsKICAgICAgICAgbV9pc0Z1bmN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9pc0Z1
bmN0aW9uQm91bmRhcnkgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAg
ICAgICAgIHNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSBmYWxz
ZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgc2V0SXNGdW5jdGlvbigpOworICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAg
ICB9CisKICAgICB2b2lkIHNldElzR2VuZXJhdG9yKCkKICAgICB7CiAgICAgICAgIHNldElzRnVu
Y3Rpb24oKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgICAgIG1faGFzQXJn
dW1lbnRzID0gZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBzZXRJc01vZHVsZSgpCkBAIC01Nzks
NiArNTk5LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIG1faXNMZXhpY2FsU2NvcGUgOiAx
OwogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9pc1ZhbGlk
U3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6IDE7CiAgICAgaW50IG1f
bG9vcERlcHRoOwogICAgIGludCBtX3N3aXRjaERlcHRoOwogCkBAIC02MjcsNyArNjQ4LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBT
b3VyY2VQYXJzZU1vZGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBTdXBlckJp
bmRpbmcsCiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lm
TmVlZGVkKTsKICAgICB+UGFyc2VyKCk7CiAKQEAgLTExNTAsNiArMTE3MSw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1l
bnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwg
U291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElk
ZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0
ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25l
ZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlw
ZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE5MCw3ICsxMjEyLDcgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBw
YXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVl
QnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBpc0dl
bmVyYXRvcik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVydHlOb2Rl
OjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3Rvcktp
bmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZyA9IFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJ
TkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVu
Y3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VG
dW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlw
ZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJE
ZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29u
dGV4dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRp
b25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lv
biYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9z
aXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9u
TGlzdENvbnRleHQsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlwZSwgYm9vbCYgZm9yTG9vcENv
bnN0RG9lc05vdEhhdmVJbml0aWFsaXplcik7CkBAIC0xMjE1LDYgKzEyMzcsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJv
b2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywg
U291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3Qg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJz
ZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5m
bzxUcmVlQnVpbGRlcj4mKTsKIApAQCAtMTM0MCw2ICsxMzYzLDcgQEAgY2xhc3MgUGFyc2VyIHsK
ICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNv
dXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwogICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRp
bjsKKyAgICBTdXBlckJpbmRpbmcgbV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0b3JLaW5k
IG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZDsKICAgICBUaGlzVERaTW9kZSBtX3RoaXNURFpNb2Rl
OwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV92YXJEZWNsYXJhdGlvbnM7CkBAIC0xNDYzLDcg
KzE0ODcsNyBAQCBjbGFzcyBQYXJzZXIgewogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBh
cnNlKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsCisg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBK
U1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCiAgICAg
Q29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsCiAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJ
Zk5lZWRlZCkKQEAgLTE0NzIsNyArMTQ5Niw3IEBAIGNsYXNzIFBhcnNlciB7CiAKICAgICBBU1NF
UlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNl
TW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJz
ZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1v
ZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlz
VERaTW9kZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgICAg
IGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpAQCAt
MTQ4NSw3ICsxNTA5LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVs
dENvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFy
c2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAg
ICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
LCB0aGlzVERaTW9kZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBp
ZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2Vm
ZGY3YzQ5ZWEyOWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5MjkyMWEw
YzAyOWNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3Jt
YWxGdW5jdGlvbk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JGdW5jdGlv
bk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUs
CkBAIC02MSw2ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNNb2R1bGVQ
YXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1v
ZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtl
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQ0OWE3ZTE3M2IyNTAwZGFmYjVmODRhYTRjMmU2ZjQxNjY0OWQwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTb3VyY2VDb2RlS2V5X2gKKyNkZWZpbmUgU291cmNlQ29kZUtleV9o
CisKKyNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU291
cmNlQ29kZUtleSB7CitwdWJsaWM6CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9n
cmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CisKKyAgICBTb3VyY2VDb2RlS2V5
KCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
VGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAg
ICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKKyAgICAgICAgLCBtX25hbWUobmFtZSkK
KyAgICAgICAgLCBtX2ZsYWdzKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpIDw8IDMp
IHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikgfCAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRo
aXNURFpNb2RlKSkKKyAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisKKyAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9CisKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQor
CisgICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQu
IEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKKyAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIg
c3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgorICAgIFN0cmluZyBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKKyAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90
aGVyLmxlbmd0aCgpCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAg
ICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKKyAgICAgICAgICAgICYmIHN0cmlu
ZygpID09IG90aGVyLnN0cmluZygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTb3VyY2VDb2Rl
IG1fc291cmNlQ29kZTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHVuc2lnbmVkIG1fZmxhZ3M7
CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2Rl
S2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwor
fTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxs
KCk7IH0KK307CisKK30KKworI2VuZGlmIC8vIFNvdXJjZUNvZGVLZXlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA5NTUzNmMzYzc1NjcyMjcz
NTFiYzY5MDcxODJlZDUzYWI2YzcxOTFiLi4zZTBjMzBmZDFkMjUxODYyMzVlMmRiMDM4NDQxNGM2
MWY4MTU3YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaApAQCAtMTgwLDEwICsxODAsMTAgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVy
biBZaWVsZEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1cm4gWWllbGRFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlpZWxkRXhwcjsg
fQogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9u
VHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVy
biBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9
CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBi
b29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0K
ICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBpbnQgY3Jl
YXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CkBAIC0zODUsNiArMzg1
LDggQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgaW50IGVuZE9mZnNldChpbnQpIHsgcmV0
dXJuIDA7IH0KICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAorICAgIHZv
aWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgaW50IG1fdG9w
QmluYXJ5RXhwcjsKICAgICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1ZTBmNTZl
YzBmNjljZGM3Y2JlZGYwZS4uNDk0NTIwZGJkZjQyOGM4NjQwZGI1ZTIyM2YwMGUyMWYyZmVjZmZl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVmIHR5cGVu
YW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2Rl
PigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsCi0gICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VN
b2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7
CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAg
ICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwK
ICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXBy
b2dyYW0pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTE4
OCw3ICsxODgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRF
bmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rp
b24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5v
IHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVt
cHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291
cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6
Q2FuQ29uc3RydWN0LCBlbXB0eVREWlZhcmlhYmxlcyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0
eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmco
KSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZt
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4Y2ZlZjg0NjQ5ZDhmMDljMmZi
MGI5NDg4MTExZTE2OTM2YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2Y2RjODk1
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VDb2RlS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTYsNzEgKzU3LDYg
QEAKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAotY2xhc3MgU291
cmNlQ29kZUtleSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9n
cmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07Ci0KLSAgICBTb3VyY2VDb2RlS2V5
KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5l
ZWRlZCkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICAgICAgLCBtX25h
bWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKAotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlVHlwZSkgPDwgMykKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWlsdGluTW9kZSkgPDwgMikKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdHJpY3RNb2RlKSA8PCAxKQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2go
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLQotICAg
IHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0K
LQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgp
OyB9Ci0KLSAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRl
bWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQotICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0
aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAotICAgICAgICAgICAgJiYgbGVuZ3RoKCkg
PT0gb3RoZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFn
cwotICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAgICAgJiYg
c3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNvdXJj
ZUNvZGUgbV9zb3VyY2VDb2RlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgdW5zaWduZWQgbV9m
bGFnczsKLSAgICB1bnNpZ25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8U291cmNlQ29kZUtleT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1w
dHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29u
c3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5p
c051bGwoKTsgfQotfTsKLQogc3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgU291cmNlQ29k
ZVZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUzNTVkODdh
M2IzM2IxLi5kZTA3ZjFjNTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikg
XAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rpb24pIFwK
ICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09O
KSBcCkBAIC0zMjksNiArMzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwKICAgICBt
YWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAgICBtYWNy
byhnZW5lcmF0b3IpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFjcm8oZ2Vu
ZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1hY3JvKGdl
bmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1hY3JvKGdl
bmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkwZjY1YzI0
ZDYzMmI2MjEwODlkZTVjMWJiZDQ5NjRkNDQ5NjQzOTEuLmM2N2NjNzAyMTE5ZDczODgzZGRjZTcx
ZGY3MzllMmRhYmM2Yjc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
RnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM4IEBAIHN0YXRpYyBDb21tb25TbG93UGF0aHM6OkFy
aXR5Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3RzVG9BCiAg
ICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQoreworICAgIC8v
IE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSBy
ZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCisgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJl
IG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxh
Y2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2Fs
bC4KKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgp
OworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUpOworICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIGZyYW1l
ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOworICAgIGVsc2UgeworICAgICAgICAv
LyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNl
ZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lk
IGFsbG9jYXRpb25zLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShl
eGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKKyAgICAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6
OlB1dEJ5SWQpOworICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAgfQorICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsK
KyAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIGZyYW1lLT5y
ZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
MjI2MTg1YzRjN2VhN2NjNmZjN2YzY2M0ZjFmMzdlNjBlYjcyZjE3YS4uZjAwZDg3MDVkNGU2N2Zl
NGQ0MDU5YmRlMTY4ZWU4OGY1N2RmNzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxpbmUgdm9p
ZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQq
JiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRo
X3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGE2
MzJjNDhlMDMwYjQxYjMzYjMzZGJhMTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0MmJjMTJlZTAy
MTgzNGE4MmY4MWYwZmM5NzliY2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFtTm9kZT4oCiAg
ICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZXJyb3IpOwogfQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVMRUFTRV9BU1NF
UlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQ
cm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvcik7CiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQyMDYwMDY3MjI5
YWE0MGFiNDdlOWI0MDUyOTYyMWZlODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJsb2NrKiBT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAgKnZtLCBl
eGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVy
cm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsKKyAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAg
ICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAogICAgICAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgZmlyc3RMaW5lKCksIApAQCAtNTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQcm9ncmFt
Tm9kZT4oCiAgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZjMGZlYmMy
Mzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li43NWIzMDkxY2Y4MWM3Mjk2ZmUyZmFmZTlhOTY3NjUzNjI5
OTc4MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBA
IC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51
bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9
CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3ICs1NDIs
NyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsg
cmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKICAgICBT
eW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAsMTMgQEAg
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
ewogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1
bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVk
TmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQog
ICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAvLyBFeGNs
dWRpbmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAppbmRleCBkYmU0MmZhNWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIyMWM0Mjlj
Li41ZDdlZjM3NjZhYzBkNjliMzU1NDZhZjdlNzkxY2U5NDliYjQyZDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApA
QCAtNzksMjggKzc5LDMwIEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhl
IEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZh
bERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0
aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSk7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRD
aGVjaygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9z
aXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1
bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgog
ICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJv
Z3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2Vu
ZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsK
ICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0
cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9
PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlv
bk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKKyAgICAg
ICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkdlbmVyYXRvcikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmco
ZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKIH0KIAogLy8gRUNNQSAxNS4zLjIg
VGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0
JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKLSAgICByZXR1cm4g
Y29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRp
b24oKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDIyZWNiNTdiOTNmNjliZmM5ZjhiMWIzMDZm
YjRjNDJhMGE2N2QyZTMuLmQxMWZiMmEzNzRkNjE5MTUwYzlkNmM0MjYyOWJhOTFjYzEyMDVmNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKQEAgLTU2LDEyICs1NiwxNyBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6
VGV4dFBvc2l0aW9uJik7Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CitlbnVtIGNsYXNzIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSB7CisgICAgRnVuY3Rpb24sCisgICAgR2VuZXJhdG9yLAorfTsKKworSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CitKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdM
aXN0JiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpGdW5jdGlvbik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0g
LTEpOworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92
ZXJyaWRlTGluZU51bWJlciA9IC0xLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5l
cmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJl
ck9mQ2FsbGVlTG9jYWxzKQoreworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQorICAgICAgICBs
b2NhbEF0KGkpLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwg
c2l6ZV90IG51bWJlck9mTG9jYWxzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQor
ICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVt
YmVyT2ZMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxz
KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKK3sKKyAgICAvLyBPbmx5IHNhdmUgY2FsbGVl
IGxvY2Fscy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVz
dW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIEFTU0VSVChsaXZlQ2Fs
bGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBsaXZl
Q2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICBs
b2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCit7CisgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxv
Y2Fscy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1l
ZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIGxpdmVDYWxsZWVMb2NhbHMu
Zm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tl
ZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgp
OworICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQg
YXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxv
Y2Fscyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1NDViMTQ3ZGQ0YWJmYjJi
YmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2VuZXJhdG9y
RnJhbWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0
b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNy
ZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlz
KSArIG9mZnNldE9mTG9jYWxzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRl
eF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2Fs
cyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOworCisgICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHMpOworICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOworCitwcml2YXRlOgorICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKworICAgIHNpemVf
dCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJvdGVjdGVk
OgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGY1ODkzMWZjNTUyMGE1YzIy
MDE1ZTI1ZjcwMmE3ZDZlMDk3OWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCAr
MSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVj
dHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkdlbmVyYXRv
ckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMg
Zm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFy
Z0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3Mo
ZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVj
LCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJn
cywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKK30KKworQ2FsbFR5cGUg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisK
K0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2JhMTBiMzJi
NDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKKwor
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3It
PmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSopOworICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Zl
OGYyZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
YTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAg
ICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2N2IzYmRi
N2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5lcmF0b3JQ
cm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAm
Z2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yUHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJl
Z2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4gICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5k
CisqLworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5m
bygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwgRG9udEVu
dW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
K30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJh
c2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9yUHJvdG90
eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3ODFjY2Ew
MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJvdG90eXBl
X2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0
aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90b3R5cGU+
KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOwor
ICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisK
K3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQo
R2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yVGhpc01vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzAzZTdiMDIyZjFjNjY5ZDM5N2E5
Yjc3YjVlZjI0ZTk1ZjUyMDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc01vZGVfaAorI2RlZmluZSBHZW5lcmF0
b3JUaGlzTW9kZV9oCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBodHRwOi8vZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1mdW5jdGlvbmFsbG9jYXRlCisvLyBodHRwOi8v
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0
aW9uLW9iamVjdHMtY29uc3RydWN0LWFyZ3VtZW50c2xpc3QtbmV3dGFyZ2V0CisvLyBXaGVuIHRo
ZSBmdW5jdGlvbiBpcyBhIEdlbmVyYXRvckZ1bmN0aW9uLCBpdHMgW1tDb25zdHJ1Y3RvcktpbmRd
XSBpcyBhbHdheXMgImRlcml2ZWQiLgorLy8gVGhpcyBtZWFucyB0aGF0IE9yZGluYXJ5Q2FsbEJp
bmRUaGlzIGluIHNlY3Rpb24gOS4yLjIgaXMgbmV2ZXIgZXhlY3V0ZWQgZm9yIEdlbmVyYXRvckZ1
bmN0aW9uLgorLy8gU28sIHdoZW4gd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nLAorLy8KKy8vICAg
ICBmdW5jdGlvbiAqZ2VuKCkKKy8vICAgICB7CisvLyAgICAgICAgeWllbGQgdGhpcworLy8gICAg
IH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IGdlbigpOworLy8gICAgICAgICAv
LyB8dGhpc3wgc2hvdWxkIGJlIGdsb2JhbC4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAg
fQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworLy8gICAgICAg
ICAvLyB8dGhpc3wgaW4gZ2VuIHNob3VsZCBiZSBURFogKGFuZCBpdCB3b24ndCBiZSBmaWxsZWQp
LgorLy8gICAgICAgICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gVGhlIGZvbGxvd2luZyBm
bGFnIG1hbmFnZXMgdGhpcyBzdGF0ZS4gV2hlbiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBjYWxsZWQg
YXMgYSBjb25zdHJ1Y3RvciwgaXQgcmV0dXJucyBhIEdlbmVyYXRvciB0aGF0IGZ1bmN0aW9uIGhh
cyBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkgZmxhZy4KKy8vIEluIHRoaXMgY2FzZSwgd2hlbiBh
Y2Nlc3NpbmcgfHRoaXN8LCBhIFREWiByZWZlcmVuY2UgZXJyb3Igb2NjdXJzLgorZW51bSBjbGFz
cyBHZW5lcmF0b3JUaGlzTW9kZSA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBOb25FbXB0
eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc01vZGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZkNTM3MWJi
MDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFlMTI4MGQz
MmFiZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKQEAgLTM0
OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+
Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHByb3Rv
dHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVj
dXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5cGUoKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVt
KTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogICAg
ICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzRjYmNlMDJkNjYyOTA1ZTBlY2I3OGE3NmZjYzg1YTJlMmQxOTg4ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUg
IlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3JG
dW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07CisKK0pT
R2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgZXhl
Y3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5j
dGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0aW9uPih2
bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAg
IEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsK
KyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBn
ZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5j
dGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBleGVjdXRhYmxl
LT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVuY3Rpb24s
ICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGdlbmVyYXRv
ckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICByZXR1
cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjEwNzJhNTIxNjVkZDE3ZGVlMDk2N2RlZTdiOGFlNDg5
MGYyZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0b3JGdW5j
dGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNz
IExMSW50RGVzaXJlZE9mZnNldHM7CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJs
aWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xh
c3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJh
dG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAg
ICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9OworCisgICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAg
ICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKwor
ICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFj
aXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dlbmVyYXRv
ckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3Rh
dGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dlbmVyYXRvckZ1bmN0
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBlZmVhZTUzMzE1Yjc1MTU5YzI0Y2FlN2NjOWUwNDE4Y2I0MDBjZDNiLi5mN2Iw
Yjk1Y2UyMTBhNWM2NDk2ODJiMmEyNzQwODQ5YWYwYzkxZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw5IEBA
CiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1LDcgQEAKICNpbmNs
dWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKICNp
bmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4NCw2ICszODgsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9C
VUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVE
X0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBl
LnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURf
SVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDE0IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlN5bnRh
eEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVy
ZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlwZUVycm9y
IikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRp
dmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CisK
KyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsK
KyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1bmN0aW9u
Q29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisKKyAgICBtX2dlbmVyYXRvclBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51
bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbV9nZW5lcmF0b3JQcm90
b3R5cGUuZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNTUxLDYgKzU2NCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVu
YWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnZW5lcmF0b3JQ
cm90b3R5cGVHZW5lcmF0b3JSZXN1bWVDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMo
c3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBA
IC04MTgsNiArODMyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
aXRlcmF0b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg1MCw2ICs4NjYsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1
Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3OTQ5NDgz
YWQzY2M3ODE4OTNiODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJjZGQ0M2Vi
NzY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtNjMsNiArNjMsOCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNzIEdlbmVy
YXRvclByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3Mg
R2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRDdXJzb3I7
CkBAIC0yMjksNiArMjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBt
X2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVn
RXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9pdGVy
YXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVy
YXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
UHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dl
bmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
Y29uc29sZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZN
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlv
blN0cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHJl
Z0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpOyB9
CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVyYXRvclBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAg
ICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9Cisg
ICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dl
clNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFw
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0
dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
c3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDgwMGE3ODY5ZTU0Yjc1ZDVjOGQyOGE1MGQ5N2Ex
ZTBiNzdiNTA2M2EuLjM3YjhhZmM3N2UyZDA5ZTk1NTEzYmVmYjU4ZWU3ZGRmYzA2YzU0YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2Jq
ZWN0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIFBhcnNl
ckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9k
dWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwg
c291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0
cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKICAgICAgICAg
dGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNhYmFiYzlm
ZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
QEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJs
ZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVy
cmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
ZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBnZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2OGQyYjgxZTYuLjU1NzdhODlhNDkw
ZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CisgICAgU3Ryb25n
PFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZl
cnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZl
cnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCBlMGJj
M2Q1MWZiNmM3YThmMDg5YmE0ZDg3ZDRlNjRjNmE5NzBiZTUwLi4xMWE0YmY0NjRlNjRjN2ZmMDdj
ZWZlNDcyMTQ5Njk0YzMyZDI4YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CkBAIC03MTksNyArNzE5LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X2lzX3N1YmNsYXNzYWJsZV9j
b3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBl
czYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmF0b3JfaW5zdGFuY2VzLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJpY19pdGVyYWJsZXMuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5
LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03MjcsNyArNzI3LDcg
QEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faXRlcmF0b3Jf
Y2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGlj
X21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9B
cnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21l
dGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25faW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpA
QCAtNzUzLDcgKzc1Myw3IEBACiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX25lc3RlZF9yZXN0
LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0
aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193
aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzYzLDcgKzc2Myw3IEBA
CiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX2l0ZXJhdG9yX2Nsb3NpbmdfdGhyb3cuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmF0
b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmljX2l0ZXJhYmxlcy5qcwog
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2luc3Rh
bmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtODAzLDU1ICs4MDMsNTUgQEAKIC0gcGF0
aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVydHlfdmFyaWFibGVzX2Z1bmN0aW9uLmpzCiAgIGNt
ZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5
cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5yZXR1cm4uanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJh
dG9yUHJvdG90eXBlJS50aHJvdy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Jhc2ljX2Z1bmN0aW9uYWxpdHkuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc19jYW50X3VzZV90aGlzX3dpdGhfbmV3LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRf
c2hvcnRoYW5kX2dlbmVyYXRvcnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2Vu
ZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29ycmVjdF90aGlzX2JpbmRpbmcuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25fZXhwcmVzc2lvbnMuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zZW5k
aW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zdHJp
bmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FzdHJhbF9wbGFuZV9zdHJpbmdz
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhy
b3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX29uX25vbi1pdGVyYWJsZXNfaXNfYV9ydW50aW1l
X2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zcGFyc2VfYXJyYXlzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfb3BlcmF0b3JfcHJlY2Vk
ZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvTWFwX01hcFtTeW1ib2wuc3BlY2llc10uanMKQEAgLTExMDUsNyArMTEwNSw3IEBA
CiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfYXN0cmFsX3BsYW5lX3N0cmlu
Z3NfaW5fZnVuY3Rpb25fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2
L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2FycmF5cy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9jYWxscy5q
cwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93
aXRoX2dlbmVyaWNfaXRlcmFibGVzX2luX2FycmF5cy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVy
YWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWll
bGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwppbmRleCBhOGI5YjUzY2NjZmFlMWE1YjVhNjZj
MTNiZDIzZThjYWU1MjdhYWE0Li45YTgyMTMyYTYwZmMwZTc5MTk3MmMwNDMxOGQwN2I5ZTI2MDA0
YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5q
cwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsK
K3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChh
cnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1i
b2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9
CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07
CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9k
c1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJh
dG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOwor
fQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5l
cmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29m
X2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3NDUzOTMyNmM4OTcyYjc0YTc2MWZmNGQ4ZjI5YjJhNWFl
ODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZjMTU0NDRhM2I2NGViODZlNjNjNzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
bnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAg
LTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIg
Z2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBt
ZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9
PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJy
Lmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9
LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Ro
cm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0g
PSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwog
ZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9y
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKaW5k
ZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2OWFkZTQyZTgzYWViOGIwM2Q0Zi4uMzJkMzE3YzBiODBh
ZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRkZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xv
YmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBf
X2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMg
fHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJh
dG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsK
KyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBk
b25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVy
biddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307
CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9y
OyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9z
ZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3Jf
Y2xvc2luZ192aWFfdGhyb3cuanMKaW5kZXggNDRhMDY1YTk2YTFjOWRlN2UyNmMzNjIwNmMxY2Iz
NjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3ZjVjZGExZjkyNDhlOTU2YWZiYTU0MjkzODI5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192
aWFfdGhyb3cuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRl
ZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFi
bGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0
eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0
dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5n
dGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJv
dyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5
bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBp
dGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
YXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YzNiY2Q5YTdlMTg4MzcwNzBjYWVlOGRmOGJjYjE2OWI3NTU1NjlkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRz
LWZyb20tZnVuY3Rpb24uanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkQmVBcnJheShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoYWN0
dWFsLmxlbmd0aCwgZXhwZWN0ZWQubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4
cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzaG91bGRC
ZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBwcmludChKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsKKyAgICAgICAgICAgIHRocm93IGU7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKworZnVuY3Rpb24gKmdlbihhLCBiLCBjKQoreworICAg
IGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9
CisKKyAgICByZXR1cm4gdGVzdDsKK30KKworbGV0IGcgPSBnZW4oMSwgMiwgMyk7CitsZXQge3Zh
bHVlOiBmdW5jfSA9IGcubmV4dCgpOworc2hvdWxkQmUoZnVuYygpLmxlbmd0aCwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1
bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1h
cmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2NDc4ZmEyM2U0YmUzM2FiYWFmMTQ0NzI5MmE0NTli
N2I4NmQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDEwNyBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9
YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAg
eworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0MiwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0MiwiMiI6NDJ9YCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAg
InVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAg
ICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBh
cmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAg
IGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBn
ID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQy
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAy
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgInVzZSBzdHJp
Y3QiOworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBn
MSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcy
KGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAg
ICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFy
IGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQo
NDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1
ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIw
IjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1z
eW50YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2NWNlYjFmNDM2YzAyZTM2ZDhiMGFjNWJhN2RlMzI1NTU3
NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCkBAIC0wLDAgKzEsNDggQEAKK2Z1
bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3Jp
cHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9m
IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIg
KyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihz
Y3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5n
KGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBDb2NvYSB7CisgICAgKmNv
bnN0cnVjdG9yKCkKKyAgICB7CisgICAgfQorfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVj
bGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InLmApOworCit0ZXN0U3ludGF4KGAK
K2NsYXNzIENvY29hIHsKKyAgICAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
fQorfQorYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgIHN0YXRpYyAqb2so
KQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2Rz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3Mt
bWV0aG9kcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWY1YTU0YTJkYzQxMjcwNzljMzFjZmQzMWY5YjMxY2Y1
MGFkNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpAQCAtMCwwICsxLDYyIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwp
fWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAg
ICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhy
b3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3Ry
aW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitjbGFzcyBBIHsKKyAgICAqZ2VuKCkK
KyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAg
IHJldHVybiA0MjsKKyAgICB9CisKKyAgICBzdGF0aWMgKnN0YXRpY0dlbigpCisgICAgeworICAg
ICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7
CisgICAgfQorfQoreworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBsZXQgZyA9IGEuZ2VuKCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAgIHNob3Vs
ZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIGxldCBhID0gbmV3IEEoKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IGEuZ2VuKCk7CisgICAg
fSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBhLmdlbigpJylgKTsKK30KKworeworICAgIGxldCBnID0gQS5zdGF0aWNHZW4oKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICBsZXQgZyA9IG5ldyBBLnN0YXRpY0dlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgQS5zdGF0aWNHZW4oKScp
YCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1ldmFsLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1ldmFsLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzliZDc4ZGY3NmEwY2I3NThiODFl
ZWFiMmMyNTViOWRhZDFiNDQ3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpAQCAtMCwwICsxLDY1IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Cisg
ICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0
cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRo
cm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRo
cm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0
cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigpIHsKKyAg
ICB5aWVsZCBldmFsKCJ0aGlzIik7Cit9CisKK3ZhciBnID0gbmV3IGdlbigpOworc2hvdWxkVGhy
b3coKCkgPT4geworICAgIGcubmV4dCgpLnZhbHVlOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5u
b3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEIgeyB9CisKKyhm
dW5jdGlvbigpIHsKKyAgICBldmFsKCd0aGlzJyk7CisgICAgZXZhbCgndGhpcycpOworfSgpKTsK
KworY2xhc3MgQSBleHRlbmRzIEIgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgbmV3IEEoKTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworCitjbGFzcyBDIHsKKyAgICAqZ2VuZXJhdG9yKCkKKyAgICB7Cisg
ICAgICAgIHlpZWxkIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93KCgpID0+
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcgPSBuZXcgYy5nZW5lcmF0b3IoKTsK
KyAgICBnLm5leHQoKTsKK30sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgYy5nZW5lcmF0b3IoKScpYCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gYy5nZW5lcmF0b3IoKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgYyk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3Iu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlv
bi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk2YWU1ZmQxOWY5ZDhjOGIwOGRlNmIwZWQ2
YTViYWU3NWFmZGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAsMCArMSw5
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgp
Oworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0b3JGdW5jdGlvbiwgJ3VuZGVmaW5lZCcp
OwordmFyIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSAoZnVuY3Rpb24gKigpIHsgfSku
Y29uc3RydWN0b3I7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLl9fcHJv
dG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5w
cm90b3R5cGUuY29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVu
Y3Rpb24tbmFtZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZ1bmN0aW9uLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY3NzM2YzQyMzRlMTg3OTEwYjhjYTYz
NTNjYmY0NWIwZDYwMDZiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMKQEAgLTAsMCArMSwxMiBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK3ZhciBvayA9IGZ1bmN0aW9uICpnZW5lcmF0b3IoKQoreworICAgIHlpZWxk
IGdlbmVyYXRvcjsKK307CisKK3ZhciBnID0gb2soKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ1NjFkOTMwNzYwZDIwZWU2ZWY0Y2U1NzAzZWY3M2I5ZmY5YWU1NmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAqZ2VuKCkgeworfQordmFyIGcgPSBnZW4oKTsK
Kworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcubmV4dC5jYWxsKHt9KTsKK30sIGBUeXBlRXJy
b3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKKworCitzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgZy50aHJvdy5jYWxsKHt9KTsKK30sIGBUeXBlRXJyb3I6IHx0aGlzfCBzaG91bGQg
YmUgYSBnZW5lcmF0b3JgKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcucmV0dXJuLmNh
bGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cmVsYXRpb25zLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmVsYXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYTRkYzhjZTA3NmM3MzFjNDI0YTg4NWZiMzhl
MzU3ZTQ5M2ZmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKQEAgLTAsMCArMSwzMCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uICpnZW5lcmF0b3JGdW5jdGlvbigpIHsKK30KK2xldCBnZW5lcmF0b3IgPSBn
ZW5lcmF0b3JGdW5jdGlvbigpOworCitzaG91bGRCZShnZW5lcmF0b3IgaW5zdGFuY2VvZiBnZW5l
cmF0b3JGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZSh0eXBlb2YgZ2VuZXJhdG9yLl9fcHJvdG9f
XywgJ29iamVjdCcpOworc2hvdWxkQmUoZ2VuZXJhdG9yLl9fcHJvdG9fXywgZ2VuZXJhdG9yRnVu
Y3Rpb24ucHJvdG90eXBlKTsKKworbGV0IEdlbmVyYXRvclByb3RvdHlwZSA9IGdlbmVyYXRvci5f
X3Byb3RvX18uX19wcm90b19fOworCitsZXQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgPSBn
ZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX187CitsZXQgR2VuZXJhdG9yRnVuY3Rpb24gPSBnZW5l
cmF0b3JGdW5jdGlvbi5fX3Byb3RvX18uY29uc3RydWN0b3I7CitzaG91bGRCZShHZW5lcmF0b3JG
dW5jdGlvbi5wcm90b3R5cGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJl
KGdlbmVyYXRvckZ1bmN0aW9uIGluc3RhbmNlb2YgR2VuZXJhdG9yRnVuY3Rpb24sIHRydWUpOwor
c2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRC
ZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5fX3Byb3RvX18sIEZ1bmN0aW9uLnByb3RvdHlw
ZSk7CisKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSwgR2Vu
ZXJhdG9yUHJvdG90eXBlKTsKK3Nob3VsZEJlKEdlbmVyYXRvclByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworCitsZXQgYXJyYXlJdGVyYXRvciA9IFtd
W1N5bWJvbC5pdGVyYXRvcl0oKTsKK2xldCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gYXJyYXlJ
dGVyYXRvci5fX3Byb3RvX187CitsZXQgSXRlcmF0b3JQcm90b3R5cGUgPSBBcnJheUl0ZXJhdG9y
UHJvdG90eXBlLl9fcHJvdG9fXzsKKworc2hvdWxkQmUoSXRlcmF0b3JQcm90b3R5cGUsIEdlbmVy
YXRvclByb3RvdHlwZS5fX3Byb3RvX18pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxsLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9y
ZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOTZhMjE3ZjcyYzg3YzA4OThlNTkwOWFiYWYz
ODViZjIwODk5MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAgLTAsMCAr
MSwxMiBAQAorZnVuY3Rpb24gdW5yZWFjaGFibGUoKQoreworICAgIHRocm93IG5ldyBFcnJvcigi
TkciKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdW5yZWFjaGFibGUoKTsKK30KKwor
dmFyIGcgPSBnZW4oKTsKK2cucmV0dXJuKCJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgw
YWY2ZTA3ODlkYzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAg
LTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGds
b2JhbCA9IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgZ2xvYmFsKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAg
IH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxl
LmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAg
IGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQg
dGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAg
IGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
ICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRo
aXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAg
ICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1i
ZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJs
ZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkK
K3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0g
bmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3co
ZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9
PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdl
bigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2Ji
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVu
Y3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAg
ICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0
dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9
IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQo
KTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0
aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAg
IGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxk
IHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOwor
ICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1
cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAg
ICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgICAgIG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBh
IGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFz
dEJpdFZlY3Rvci5oCmluZGV4IDlmMTg4YmNjMmY1YjVlY2MzNTMwNTE0YzIwZWQ1NjY4OGE2YTI5
OGMuLjk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG4g
PSBhcnJheUxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytp
KSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKaW5kZXggNDIxOTQxZjNhNDRhYzZkYzVkOWI2N2ZkMmNkZDg2ZjEyMDEzYzY0OC4u
ZjQ2ZTExOTczZTUyNGNhNDI4NTZiMGQ3NjgzNzllMWE5ZjQ1OTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCkBAIC0zNjQsNyArMzY0LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0VTNl9DTEFTU19TWU5UQVgpCi0jZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAwCisj
ZGVmaW5lIEVOQUJMRV9FUzZfR0VORVJBVE9SUyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVO
QUJMRV9FUzZfTU9EVUxFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEy
OWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsK
IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05f
U1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRB
WDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVO
QUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1
N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxF
X0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwot
RU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxF
X0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7
CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4
ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00
Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVS
QVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7
CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lO
VEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UK
aW5kZXggOWNkODQ2NWMwOWM5ZjE3ODYwNGM5YWIyOTI1YTcwYWI0N2M2M2UzYy4uMDJjYzc5OGIy
MGJkNmU0NjI2M2JlMzlkOTAxYThmZTk0Y2I5ZWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAg
LTM0LDcgKzM0LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTiBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiBQVUJMSUMg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQT1JU
IFBVQkxJQyBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZf
R0VORVJBVE9SUyBQVUJMSUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9FUzZfTU9EVUxFUyBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCBQVUJM
SUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMRV9TWVNU
RU0gUFVCTElDIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBkOTYyMjRkNDE3
MWJkYmE3MTcwYzQ1ZDNkZDcyMTc1NDc3MTJmNTBkLi4wMGVkYmMwMTNiZmY2NmY3YTAzZmRkMjli
NjMxZjQ2MjUwYmUyNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC03Nyw3ICs3
Nyw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAiU3VwcG9ydCBFTUUgdjIiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVggIlRvZ2dsZSBFUzYgYXJyb3cgZnVuY3Rpb24gc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggIlRvZ2ds
ZSBFUzYgY2xhc3Mgc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCi0gICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9H
RU5FUkFUT1JTICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X01PRFVMRVMgIlRvZ2dsZSBFUzYgbW9k
dWxlcyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYICJUb2dnbGUgRVM2IHRlbXBsYXRlIGxpdGVy
YWwgc3ludGF4IHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiAiVG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBS
SVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDU3OGFiYjk0MjhmZGUxY2U5OTM1MGVhOGJlYjlmZDNkNzUyNDIzMGMuLjcyY2QyNjUw
MmYzMDUzYzEyNTk2ZmY1YjMyOGM2ZWFmYzYzZDBhYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJ
bXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVu
YWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE1LTEx
LTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBVc2UgdGhlIG5ldHdvcmsgcHJvY2VzcyB1bmNvbmRpdGlvbmFsbHkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjZGViNTI1Y2Y5NGI1YThlMTIxYmEy
NGUzNzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNjNTMyOTliYzI3MWQ5Yjc3Zjc0OGFkMzA3
MDVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xODUsNyAr
MTg1LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgi
LCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0aW9u
ID0+ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDAs
IHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNTdXBw
b3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYg
bW9kdWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVTIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTkxYTE3N2NlM2QzZjBlYTk0ZTZhZDRjNjQwM2Vi
Mzk5ZGNjOWMzNC4uNjVlMmEwMzM0YzRkNDVlNTk1NTJjZGVhODE3NTE4MDU4NmJiN2EyYSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1
LTExLTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9y
cyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMjMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjExLjIgcmVsZWFz
ZS4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJp
ZXMvQ2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJhMWZhMDgzYjkzMjI5N2MyN2M0Mjgw
YjUuLmFhNDcxZWQ2ZjllZWQ3NTA1YTNhMTgyMjI2ZWE4ZWU2MjhjN2ZmNDEgMTAwNjQ0Ci0tLSBh
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTExLTA1ICBOaWtvcyBBbmRyb25pa29z
ICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAg
IEFkZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3MgZm9yIGVuYWJsaW5nIFdlYiBBbmlt
YXRpb25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4ZjdlZTUyMWUwNGY5
ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQxNjZiZjVl
NzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9w
cy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+RU5B
QkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFU
T1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVSQVRPUlM8
L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAg
PEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8
RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDkxZWU4MGZk
ZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2MWI3Y2VjNmFj
NWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3ICszMiw3
IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VW
RU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAv
PgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFU
T1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxF
TkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266161</attachid>
            <date>2015-11-25 07:29:32 -0800</date>
            <delta_ts>2015-11-29 10:22:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151126002914.patch</filename>
            <type>text/plain</type>
            <size>325655</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OGMwMzQxZjNjZTBkM2QzMjg3ZDhjZmU4NzdhMTUwNjllYjk0NTE3Li42ZjZiMTE2Y2ZjZGJkNTMx
Nzc0NDZmNzY1ZmExMjNiNzMxZjdhYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OTUgQEAKKzIwMTUtMTEtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlZ2lzdGVyIGlz
IGxpdmUuCisgICAgICAgIFJlZ2lzdGVycyByZXNpZGUgaW4gQyBzdGFjay4gU28gaWYgd2UgZG9u
J3QgcGVyZm9ybSBpdCwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIHZhbHVl
IGlzICpsaXZlKiBhbmQgKmNvcnJlY3QqIEpTQ2VsbCBvciBub3QKKyAgICAgICAgdG8gZW1pdCB3
cml0ZSBiYXJyaWVycy4KKyAgICAgICAgQnkgcGVyZm9ybWluZyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMsIHdlIGNhbiBkZXRlcm1pbmUgYWN0dWFsbHkgKmRlZippbmVkIHJlZ2lzdGVycyBhdCB0
aGF0IHJlc3VtZSBwb2ludC4KKworICAgICAgICAzLiBHZW5lcmF0b3JGdW5jdGlvbiB3aWxsIGV2
YWx1YXRlIHBhcmFtZXRlcnMgYmVmb3JlIGdlbmVyYXRpbmcgR2VuZXJhdG9yCisKKyAgICAgICAg
R2VuZXJhdG9yJ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGVudGVyaW5n
IEdlbmVyYXRvcidzIGJvZHkuIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBmdW5jdGlvbiBo
ZWxsbygpIHsgLi4uIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeWllbGQgYjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGxldCBnID0gZ2VuKDIwKTsgIC8vIE5vdywgaGVsbG8gc2hvdWxkIGJlIGNh
bGxlZC4KKworICAgICAgICBUbyBlbmFibGUgdGhpcywgd2UgZXZhbHVhdGUgcGFyYW1ldGVycyBp
biBHZW5lcmF0b3JGdW5jdGlvbiwgYW5kIGFmdGVyIHRoYXQsIHdlIGNyZWF0ZSBhIEdlbmVyYXRv
ciBhbmQgcmV0dXJuIGl0LgorICAgICAgICBUaGlzIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIGZv
bGxvd2luZyBwc2V1ZG8gY29kZS4KKworICAgICAgICAgICAgZnVuY3Rpb24gKmdlbihhLCBiID0g
aGVsbG8oKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGdlbmVy
YXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICBAZ2Vu
ZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgNC4gb3Bfc2F2ZSBzZWVtcyBz
aW1pbGFyIHRvIGNvbmRpdGlvbmFsIGp1bXAKKworICAgICAgICBXZSB3b24ndCBqdW1wIHRvIGVs
c2V3aGVyZSBmcm9tIG9wX3NhdmUgYWN0dWFsbHkuIEJ1dCB3ZSBhZGQgYSAqdmlydHVhbCoganVt
cCBlZGdlIChmbG93KSBmcm9tIG9wX3NhdmUgdG8gdGhlIHBvaW50IHNvIGNhbGxlZCAqbWVyZ2Ug
cG9pbnQqLgorICAgICAgICBXZSBjb25zdHJ1Y3QgdGhlIENGRyBhcyBmb2xsb3dzLAorCisgICAg
ICAgICAgICAoZ2xvYmFsIGdlbmVyYXRvciBzd2l0Y2gpIC0+IChpbml0aWFsIHNlcXVlbmNlKSAt
PiAob3Bfc2F2ZSkgLS0tLSstPiAobWVyZ2UgcG9pbnQpIC0+IChuZXh0IHNlcXVlbmNlKSoKKyAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICB8CisgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BfcmV0
KSAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPihvcF9yZXN1bWUpLS0rCisK
KyAgICAgICAgQnkgY29uc3RydWN0aW5nIHN1Y2ggYSBncmFwaCwKKworICAgICAgICAgICAgMS4g
U2luY2Ugd2UgaGF2ZSBhIGZsb3cgZnJvbSAob3Bfc2F2ZSkgdG8gKG1lcmdlIHBvaW50KSwgYXQg
bWVyZ2UgcG9pbnQsIHdlIGNhbiAqdXNlKiBsb2NhbHMgdGhhdCBhcmUgZGVmaW5lZCBiZWZvcmUg
KG9wX3NhdmUpCisgICAgICAgICAgICAyLiBvcF9zYXZlIHNob3VsZCBjbGFpbSB0aGF0IGl0IGRv
ZXMgbm90IGRlZmluZSBhbnl0aGluZy4gQW5kIGNsYWltIHRoYXQgaXQgKnVzZSpzIGxvY2FscyB0
aGF0IGFyZSB1c2VkIGluIChtZXJnZSBwb2ludCkuCisgICAgICAgICAgICAzLiBhdCBvcF9yZXN1
bWUsIHdlIHNlZSAqdXNlKmQgbG9jYWxzIGF0IG1lcmdlIHBvaW50IGFuZCBkZWZpbmUgYWxsIG9m
IHRoZW0uCisKKyAgICAgICAgV2UgY2FuIGRvIHRoZSBhYm92ZSB0aGluZ3MgaW4gdXNlLWRlZiBh
bmFseXNpcyBiZWNhdXNlIHVzZS1kZWYgYW5hbHlzaXMgaXMgYmFja3dhcmQgYW5hbHlzaXMuCisg
ICAgICAgIEFuZCBhZnRlciBhbmFseXppbmcgdXNlLWRlZiBjaGFpbnMsIGluIG9wX3NhdmUgLyBv
cF9yZXN1bWUsIHdlIG9ubHkgc2F2ZSAvIHJlc3VtZSBsaXZlIHJlZ2lzdGVycyBhdCB0aGUgaGVh
ZCBvZiBtZXJnZSBwb2ludC4KKworICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAg
ICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAg
ICAqIGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChnZW5l
cmF0b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAg
ICAodGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgor
ICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2
YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bnVtQ2FsbGVlTG9jYWxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjp0cnlHZXQpOgorICAgICAgICAoSlND
OjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6
aXNDYWNoZWFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpnZW5lcmF0b3JUaGlzTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVJbmZvOjpzdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6
cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQXJyb3dGdW5jdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwYXJzZU1v
ZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Z2VuZXJhdG9yVGhpc01vZGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c3VwZXJCaW5kaW5nKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2Rl
QmxvY2tGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0ZXJzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2lu
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25Db21tb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9y
VGhpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c3VwZXJCaW5kaW5n
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlZ2lzdGVyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cGFyc2VNb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlZ2lzdGVyRm9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAg
IChKU0M6OmVtaXRTdXBlckJhc2VGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OllpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Qnl0ZUNvZGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZn
L0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxl
RXZlbnRTdHJlYW06OnJlY29uc3RydWN0KToKKyAgICAgICAgKiBmdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRp
YWxpemVFbnRyeUJ1ZmZlcik6CisgICAgICAgICogZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5o
OgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJl
cGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNBdG9tKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmlzTGl2ZUNlbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpmcmFtZVJlZ2lzdGVyQ291
bnRGb3IpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1bmNDb21tb24pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21t
b24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUp
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmZyYW1lUmVnaXN0ZXJDb3VudEZvcik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0
aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNs
YXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0
eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpT
Y29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0U291cmNlUGFyc2VNb2RlKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OlNjb3Bl
Ojpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpTY29wZTo6c2V0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwYXJzZSk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzRnVuY3Rp
b25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6CisgICAgICAg
IChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGVL
ZXkuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VDb2RlS2V5OjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwp
OgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNr
UG9wKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtleSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFzaCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omxlbmd0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNvdXJjZUNvZGVLZXk6OnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJj
ZUNvZGVLZXk6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNo
OjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRz
Ojppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNo
ZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVj
a1N5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmxvY2FsQXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0
T2ZMb2NhbHMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVG
b3JMb2NhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
OjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6
R2VuZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclRoaXNNb2Rl
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9y
RnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvckZ1
bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVy
YXRvci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAg
IChfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9y
c195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanM6CisgICAgICAgIChpdGVyYXRv
ci5uZXh0KToKKyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChf
X2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanM6CisgICAgICAgIChpdGVyYXRvci5uZXh0KToK
KyAgICAgICAgKGl0ZXJhYmxlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChfX2NyZWF0ZUl0
ZXJhYmxlT2JqZWN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzOgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6
CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJ
dGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVu
dHMtZnJvbS1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50
YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3Vs
ZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRv
cik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChnZW4p
OgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKHVucmVh
Y2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQik6CisgICAg
ICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQSk6CisKIDIwMTUtMTEtMjMgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBN
YWMgQ01ha2UgYnVpbGQgYWZ0ZXIgcjE5Mjc5My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODBhNTc5NGMwNmY0ZmFiMDlmZjAz
YTY0MTc4MGUzZjI2YWMzYWQ4ZC4uYWQ5NWNhYjU1MDU2NjE5OGIyMmQ5MTQ0NjY4NDMxNTQyNzcz
NDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMS0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zh
c3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9yRWFjaFNldEJp
dCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUtMTEtMTggIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFTU0VSVElPTiBG
QUlMRUQ6IHRlbXBvcmFyeUZpbGVQYXRoLmxhc3QoKSA9PSAnLycgaW4gV2ViQ29yZTo6b3BlblRl
bXBvcmFyeUZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhYTdjMTQ3ZmRiMThkMTlhNGYwZjgzOTg5NTcx
MzA3MTY1NTVjOWUuLjFkNTg0NTVhOTQ5MDAxNjg0NGFmZDlhNjU4NzE5MTEwYzNkMDIwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTA5ODMp
OiBOb24tZWxlbWVudCwgbm9uLXRleHQgbm9kZXMgc2hvdWxkIG5vdCBiZSBkaXN0cmlidXRlZCB0
byBzbG90cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDNiOTlmNDg4MTkxY2EyMzA2MWVkMjBkNzhlODcx
MzMxZDQ1MWU0NjAuLmNlZWI5NDQ5NjM2NzQ1MTFiYjE2OTMxOWMzMDliNjVkYmZlYjc5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEgKzEsMTAgQEAKKzIwMTUtMTEtMjUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50
L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiA9PSBSb2xsZWQgb3ZlciB0
byBDaGFuZ2VMb2ctMjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUyNDg2ZGIxMTAzZWM4NzQ0
NjEzYWU2ZWM1MGQ5ZTQ4ZjFhZTY2ZjQuLmZlYjc0MDAyYzllNzFjZWVkZDBiODA0MzhlMGY5NjMw
ZGIzMjE0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yNSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1l
bnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0
aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEt
MjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHVuY29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJl
OTczYzU3NmMxOWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5Mzdk
MzA5MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAt
NzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6
cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE5MWVmNjZhNWFjNDEwMWQ1MmI3OWUz
YzY2M2M0Y2QxZWMyOWRiNDIuLjk0NjU1ZTU0NTkwY2VkMWVmMzYyM2ViZjM4YjQxOTcwMThlNzBh
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAor
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9H
ZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAg
cnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAt
NjAyLDYgKzYwNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBy
dW50aW1lL0pTRGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNw
cAogICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAg
ICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2
ICsxMjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcworICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQy
MzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2
NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5B
QkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFC
TEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9E
VUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAzNzU4YTM2MzY0ZDk3YzM1ODNjOTE2ZjNmM2Q5ODVhNDg3N2Y5MmM2Li43
NjhlYmFhNjI5NzcyZjZkZWQ3OThhN2U2ZDdmODFkZWUwZWI2ZTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNiArODQsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zL0FycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9i
YWxPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVD
VF9MVVRfSEVBREVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQ
cm90b3R5cGUubHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0
b3JQcm90b3R5cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5s
dXQuaCBcCiAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCAzZTdmOTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi5jYWZlMWYy
NzM0OGNlYmVhMTk0ZTZjNzU4MWYwZjNhM2UzNTU0ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0
aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxP
YmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVD
b25zdHJ1Y3Rvci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRv
clByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsx
NjA4LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvblByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxGdW5jdGlvblJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY09m
ZnNldC5oIiAvPgpAQCAtMTY2MCw2ICsxNjcyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGbG9hdDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGbG9hdDY0QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBhNmQzZmYwMGUyNTAzYWNiYzM2Nzkw
YTM2ZTZlZTQzN2E5MzRiZmE4Li4xYjk3OGVlNDgxYzE4NDg3YTgyNTM1ZGY3Nzk4NTAxNTgyN2Ex
Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC02NjYsNiArNjY2LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGcmFtZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdldHRlclNldHRlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC03NDcsNiArNzU5LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0dsb2JhbE9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC0yNjEyLDYgKzI2MjcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNv
dXJjZUNvZGVLZXkuaCI+CisgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVy
LmgiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAg
LTI4MTMsNiArMjgzMSwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxG
dW5jdGlvblJhcmVEYXRhLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZyYW1lLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
UHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNN
b2RlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgsNiAr
Mjk1MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24u
aCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4K
KyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICszMzE4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xF
cnJvclByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVy
PkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzYzI1ZTZkNjM5MTk3NWQyZWQxYzUy
Njk5YjEwNTcxNjc2NGJmZDcuLjVkZTcxZmZjMTMyYzUyMjAzN2JlMzYxNzQxNzdkNTI1ZWFhMWIw
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkgQEAK
IAkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMz
NUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIw
MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNv
ZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5jcHAgKi87IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9
OworCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclRoaXNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3
OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QzFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi87IH07CisJCTcwQjc5MTlDMUMwMjRB
NDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREMzRTA5MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyog
SXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkg
LyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcw
REU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERFOUEwODFCRTdENjcwMDA1RDg5RDkg
LyogTExJbnRBc3NlbWJseS5oICovOyB9OwpAQCAtMzI3MSw2ICszMjg0LDIwIEBACiAJCTcwOUZC
ODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAx
MzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhp
c01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yVGhpc01v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4
MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUy
IC8qIFNvdXJjZUNvZGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291
cmNlQ29kZUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RjFDMDI0
NEVDMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIy
REYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5
RDkgLyogTExJbnRBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
TEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDg1LDYgKzUx
MTIsNyBAQAogCQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3Iu
bHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBl
Lmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRl
Y29kZXMuYXNtICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5oICovLAogCQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMTMsNiArNTI0MSw3IEBA
CiAJCQkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkw
RjhGMkI5RDE3MzA2QzhCMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2
RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0
NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEw
MDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAw
QTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovLApAQCAtNTM0Miw2ICs1MzcxLDE1IEBA
CiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8s
CiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICov
LAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8s
CisJCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywK
KwkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJ
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCisJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThB
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4
QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAx
MTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEy
MUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBG
RTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDQxLDYg
KzU0NzksOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNw
cCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAog
CQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAor
CQkJCTcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAq
LywKKwkJCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5o
ICovLAogCQkJCTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oICovLAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02
NTUzLDYgKzY1OTMsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGlu
TmFtZXMuaCAqLywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxz
LmggKi8sCiAJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uUHJvdG90eXBl
LmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUuanMgKi8sCiAJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5q
cyAqLywKIAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKQEAgLTY5NjYsNiArNzAwNyw3IEBACiAJCQkJ
QTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcy
RSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMw
MDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzAxNSw2ICs3MDU3
LDcgQEAKIAkJCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJl
clN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyog
REZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZD
Q0ZGMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkExN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTcyMzUsNiArNzI3OCw3IEBACiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZE
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMx
ODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5
LmggaW4gSGVhZGVycyAqLywKQEAgLTcyNjEsNiArNzMwNSw3IEBACiAJCQkJNzAxMTNENEMxQThE
QjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBG
MTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQw
RTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQxNTBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQwNCw2ICs3NDQ5LDcgQEAKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZB
M0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1
N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZE
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTc0NDAsNiArNzQ4Niw3IEBACiAJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8q
IEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDMxNzM4MTQ2QkFD
NjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5
MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVP
YmplY3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEg
LyogTGl2ZU9iamVjdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMiw2ICs3NjU5LDcgQEAK
IAkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3RDEy
ODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OTBE
RDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NjQ0LDYgKzc2OTIsNyBAQAogCQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM4NzhFMUJG
QkM0NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDJFMzEzQjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJl
Q2hhaW4uaCBpbiBIZWFkZXJzICovLApAQCAtODY2Miw2ICs4NzExLDcgQEAKIAkJCQlBMUI5RTIz
RDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTlC
MUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0
QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTg2ODgsNiArODczOCw3IEBACiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgw
MDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQy
Mzg5MDFCRTE4QzNDMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAv
KiBKSVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOEND
OTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTg4MjUsNiArODg3Niw3IEBACiAJCQkJMTQyRDZGMDgxMzUz
OUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJG
M0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1h
dGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYz
IC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTcyLDYgKzkwMjQs
NyBAQAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4t
aW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
NDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk4MCw2ICs5MDMz
LDcgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5
MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5
MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJm
OTM5NGM2OGJkYzBhMy4uYTllNjliZWE2ZWVhZTU3OGI5MmQ5ODllMWU4OTE5MWEzMzQ4OTllZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAg
ICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVs
dENvbnN0cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBl
cnJvciwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKICAgICAg
ICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBp
ZiAoIXByb2dyYW0pIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
cwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1t
eVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5h
bWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzllNzcyMThkMzlkMDUw
OTY3OGZhOTBhZjA3MTkyYjQxYWUyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIEdlbmVyYXRvclN0YXRlLgorICAgIGNvbnN0
IENvbXBsZXRlZCA9IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworCisgICAgLy8gUmVz
dW1lTW9kZS4KKyAgICBjb25zdCBOb3JtYWxNb2RlID0gMDsKKyAgICBjb25zdCBSZXR1cm5Nb2Rl
ID0gMTsKKyAgICBjb25zdCBUaHJvd01vZGUgPSAyOworCisgICAgbGV0IHN0YXRlID0gZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1
ZSA9IHVuZGVmaW5lZDsKKworICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICdudW1iZXInKQorICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIp
OworCisgICAgaWYgKHN0YXRlID09PSBFeGVjdXRpbmcpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IENv
bXBsZXRlZCkgeworICAgICAgICBpZiAocmVzdW1lTW9kZSA9PT0gVGhyb3dNb2RlKQorICAgICAg
ICAgICAgdGhyb3cgc2VudFZhbHVlOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICBp
ZiAocmVzdW1lTW9kZSAhPT0gUmV0dXJuTW9kZSkKKyAgICAgICAgICAgIHZhbHVlID0gc2VudFZh
bHVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0
b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgeworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAgICAgICAg
ICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFs
dWUgfTsKK30KKworZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogTm9ybWFsTW9kZSAq
LyAwKTsKK30KKworZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBSZXR1cm5Nb2Rl
ICovIDEpOworfQorCitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgZXhjZXB0aW9uLCAvKiBU
aHJvd01vZGUgKi8gMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDU0ZGZkMTY4Y2E2MDBlYmVmMTM1ODA0
MzJjNzdlMjVhZDQ0NGFkMGMuLjU5NjA2NGM0MDY4MjQ5NzgwODljNDY0M2YxYzNkZmJkMDUzNGI5
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9w
Y29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9z
d2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIGNhc2Ug
b3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCmluZGV4IDI5OTBmYWUzNTQ4OTc5ZmVjN2NhMTg2NjkwOTFiYjA1ZTJhYzYyZTgu
LmI0OWI0ZjJiYmVhZTkwYzVkNjRmYzI5MTgyYTJjMTk5ZGFhZmUzMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkwLDYgKzkw
LDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmciLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwgImxlbmd0aCIg
OiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3Ro
IiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIs
ICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmV3X2Fycm93X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEyOSw3ICsxMzEsOSBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5n
dGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIg
OiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjog
MyB9CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0KICAgICAgICAg
XQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNzdhYmVhYTI5MjA5
ZTMyOTkxM2NkOTRjZmFkNzUxNTE5YmQ5OWYxLi43MjI4YjAzMzM2NmM3YTY3YjUxMDQ4OGRmZTQ1
ZjNkZDNjZmE0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtOTgsNyArOTgsNyBAQCBz
dGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNv
ZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFu
ZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8
dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitz
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVz
ZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIC8vIFRoaXMgYWJz
dHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMg
bG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVuIGRlZmluZSBvcGVy
YW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0
aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBzdGF0aWMgdm9p
ZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVz
ZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKICAgICBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxv
Y2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2Rl
QmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQog
ICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24g
aGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAogICAgIC8vIGV4
Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRo
aXMgcGFydGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBj
b2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKQEAg
LTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQog
ewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2Nr
cywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4K
ICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0
cnVjdGlvbihjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwpAQCAt
MTgwLDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jCiB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1
bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTI0OCw3ICsy
NDgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVz
cyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBtX2Jh
c2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChv
dXQuZ2V0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKaW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2Njg0
NS4uZDNlYzE2NWY4MzJhZWZlYWUyZWRiYWZjMTVkMmFiZDBkYmVjZjhlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9
IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNzAsOCAr
NzAsOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9q
ZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBj
YXNlIG9wX2luYzogCi0gICAgY2FzZSBvcF9jb3B5X3Jlc3Q6IHsKKyAgICBjYXNlIG9wX2luYzoK
KyAgICBjYXNlIG9wX2NvcHlfcmVzdDoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDYgKzEyNSw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNh
c2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0
cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAtMTUyLDYg
KzE1NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9w
X2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6
CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50
X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKQEAgLTIzMyw2ICsyMzYsMjIgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNp
Z25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50
QmxvY2sgPSBudWxscHRyOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKKyAg
ICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lcmdl
UG9pbnRCbG9jayk7CisgICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBA
IC0yNDAsNyArMjU5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7CkBAIC0yNTUsNiArMjc0LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9w
X3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3Nl
cnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxNSw2ICszMzUs
OCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAg
ICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzkwLDcgKzQxMiwxNSBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2Rl
QmxvY2stPm1fbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgp
KTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAx
KTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsm
XSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZmNhNjMwMTQ5MTgyNmJlZTEwMDEyNGMyZjZhZTQyZjE4ZGVmOTllZS4uNDk3
YjZlZWYzNDk5YmI3ZmQxZGQ4NjRiNjAxNTRhZWQwODE5NDBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICI6ICVs
dSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSBy
ZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwK
LSAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJz
KTsKKyAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJz
KTsKICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpCiAgICAgICAgIG91dC5wcmludGYoIjsgbGV4aWNhbCBlbnZpcm9ubWVudCBpbiByJWQiLCBh
Y3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50ZigiXG4iKTsKQEAg
LTY4MCw2ICs2ODAsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCisgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7CisgICAgICAgIG91
dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkg
PSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKKyAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7CisgICAgICAgICAgICAr
K2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkLnNpemUoKSk7CisgICAgfQorCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAt
MTI5NCw2ICsxMzA2LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19n
ZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1
bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzMxLDE0IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRh
dGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBw
cmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBo
YXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTQ5OSw2ICsxNTI3LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwg
aGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50
IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7
CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQg
Y29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMTY2Myw3ICsxNzEyLDcgQEAgY2xhc3MgUHV0VG9TY29wZUZp
cmVEZXRhaWwgOiBwdWJsaWMgRmlyZURldGFpbCB7CiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAgICAsIG1f
aGVhcChvdGhlci5tX2hlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhlci5tX251
bUNhbGxlZVJlZ2lzdGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1fbnVtQ2Fs
bGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1faXND
b25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCh0cnVlKQpAQCAtMTcyMCw2ICsxNzY5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQog
ICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEt
Pm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7
CiAgICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTE3
MzAsNyArMTc4MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENv
cHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICA6IEpTQ2VsbCgqdm0sIHN0
cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+dm0o
KSwgdGhpcywgc2NvcGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnModW5saW5rZWRDb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHModW5s
aW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKHVubGlu
a2VkQ29kZUJsb2NrLT5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRD
b2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
KHRydWUpCkBAIC0xOTAwLDYgKzE5NTAsOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
IC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMu
CiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9k
dWxlRW52aXJvbm1lbnRzOwogCisgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVj
b2RlIG9mZnNldHMuCisgICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
czsKKwogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9uQ291bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVh
ZGVyLmF0RW5kKCk7ICkgewpAQCAtMjE4OCw2ICsyMjQxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNb
Ml0udS5pbmRleDsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMjE5OSw2ICsyMjYwLDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBt
X2luc3RydWN0aW9ucyA9IFdURjo6bW92ZShpbnN0cnVjdGlvbnMpOwogCisgICAgLy8gUGVyZm9y
bSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFy
ZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisg
ICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7CisgICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3Mo
dGhpcyk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
Lmdyb3coY291bnQpOworICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IDA7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMpIHsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5z
dHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhl
IGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBp
bnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFz
c2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTIyMjIsNyArMjI5Nyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIHRoaXMsIGdsb2JhbE9iamVjdCkKICAgICAs
IG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKDApCisgICAgLCBtX251bUNhbGxlZUxvY2FscygwKQogICAgICwgbV9udW1WYXJzKDAp
CiAgICAgLCBtX2lzQ29uc3RydWN0b3IoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZChmYWxzZSkKQEAgLTMwNDksNiArMzEyNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtU
b0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsK
ICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0
aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRv
IHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQwMjAsNyArNDA5Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2
YWxpZGF0ZSgpCiAgICAgCiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgwKTsKICAgICAKLSAgICBpZiAobGl2ZUF0
SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZVJlZ2lzdGVy
cykpIHsKKyAgICBpZiAobGl2ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX251bUNhbGxlZUxvY2FscykpIHsKICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgp
OwogICAgICAgICBkYXRhTG9nKCIgICAgV3JvbmcgbnVtYmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxu
Iik7CiAgICAgICAgIGRhdGFMb2coIiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOwpA
QCAtNDAyOCw3ICs0MTA0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAg
ZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAgICB9CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9udW1DYWxsZWVSZWdpc3RlcnM7IGktLTspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X251bUNhbGxlZUxvY2FsczsgaS0tOykgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7CiAgICAgICAgIAogICAgICAgICBpZiAobGl2ZUF0
SGVhZC5nZXQoaSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAppbmRleCBjMWRmMTg3YzEyMjBkMmY3ZjAzMjRhMmQyNWY5YjgzYzA1MmQ4MmVjLi4zY2JlNzVj
NDk3ODEwMTkzODgwYzNhNWIxYjk5NTkzMDUwMGFhOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVmly
dHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9C
YWcuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTE0MSw2ICsxNDIsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFy
YW1ldGVyczsgfQogICAgIHZvaWQgc2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwogCisg
ICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxz
OyB9CisKICAgICBpbnQqIGFkZHJlc3NPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiAmbV9udW1Q
YXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bVBhcmFtZXRlcnMo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX251bVBhcmFtZXRlcnMpOyB9
CiAKQEAgLTY1NCw2ICs2NTcsMTggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07IH0KIAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCisg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQg
aW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsK
KyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5k
ZXhdOworICAgIH0KKyAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtp
bmRleF07CisgICAgfQorCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNh
Y2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODU1LDcgKzg3MCw3IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHJl
bWFpbmluZyBtZW1iZXJzIHByaXZhdGUuCiAKICAgICBpbnQgbV9udW1Mb2NhbFJlZ2lzdGVyc0Zv
ckNhbGxlZVNhdmVzOwotICAgIGludCBtX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9u
dW1DYWxsZWVMb2NhbHM7CiAgICAgaW50IG1fbnVtVmFyczsKICAgICBib29sIG1faXNDb25zdHJ1
Y3RvciA6IDE7CiAgICAgCkBAIC05MDAsNiArOTE1LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVt
cFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkOworCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNo
ZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAz
Y2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBmOGJlZGIwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291
cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIEpTU2NvcGUqIHNj
b3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250
ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVN
YXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwg
c2NvcGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAg
ICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJp
bmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KHNvdXJjZUNvZGVLZXkpLmdldCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBF
dmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgY29uc3QgU291cmNl
Q29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Nj
b3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsK
LSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0
LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERa
KTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIGlm
IChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2Nh
Y2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykKLSAgICAgICAgICAgICAgICBtX2NhY2hl
TWFwLnNldChldmFsU291cmNlLmltcGwoKSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihl
eGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGlmIChpc0Nh
Y2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFw
LnNpemUoKSA8IG1heENhY2hlRW50cmllcykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghaW5T
dHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVL
ZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwg
dGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVL
ZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4oZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxF
eGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJl
dHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQpAQCAtODAsMTcgKzg3LDE3IEBACiAgICAg
ICAgICAgICByZXR1cm4gc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgfHwgc2Nv
cGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKSB8fCBzY29wZS0+aXNWYXJTY29wZSgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVhYmxlKGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3Bl
KQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENv
bnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBJZiBldmFsKCkgaXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNj
ZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwgd2UgY2FuJ3Qgc291bmRseSBjYWNoZSBpdC4KICAgICAg
ICAgICAgIC8vIElmIHRoZSBldmFsKCkgb25seSBoYXMgYWNjZXNzIHRvIHRoZSAidmFyIiBzY29w
ZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQuCiAgICAgICAgICAgICByZXR1cm4gIWluU3RyaWN0Q29u
dGV4dCAKLSAgICAgICAgICAgICAgICAmJiBldmFsU291cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6
bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAmJiBz
dGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxTb3VyY2UubGVuZ3RoKCkpIDwgT3B0aW9uczo6bWF4aW11
bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKQogICAgICAgICAgICAgICAgICYmIGlzQ2FjaGVh
YmxlU2NvcGUoc2NvcGUpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPj4gRXZhbENhY2hlTWFwOworICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVj
dXRhYmxlPiwgU291cmNlQ29kZUtleUhhc2gsIFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFs
Q2FjaGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXgg
OTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMyYTA5NjliNTBiMTAyYTE1ZC4uMjYwMmJlN2M0ZmJlY2U5
ZGVhNTAyMThmZTE0YjU2NTFmYjQ3YjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI2LDIxICsyNiwyOCBAQAogI2lmbmRlZiBF
eGVjdXRhYmxlSW5mb19oCiAjZGVmaW5lIEV4ZWN1dGFibGVJbmZvX2gKIAorI2luY2x1ZGUgIkdl
bmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKy8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0
aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJ
bmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93
RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wg
dXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRv
clRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5l
ZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAs
IG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3Io
aXNDb25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1
bmN0aW9uKQorICAgICAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisgICAgICAgICwgbV9wYXJzZU1vZGUocGFy
c2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKKyAgICAgICAgQVNTRVJUKG1fc3Vw
ZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKKyAgICAg
ICAgQVNTRVJUKG1fZ2VuZXJhdG9yVGhpc01vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdl
bmVyYXRvclRoaXNNb2RlKSk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsgfQpAQCAtNDgsOCArNTUsMTAgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRv
clRoaXNNb2RlPihtX2dlbmVyYXRvclRoaXNNb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVy
QmluZGluZyk7IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZh
dGlvbiA6IDE7CkBAIC01Nyw4ICs2NiwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAg
IHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0
b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworICAgIHVuc2ln
bmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWdu
ZWQgbV9zdXBlckJpbmRpbmcgOiAxOworICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBkNjBmZGY3ZDNjZjM2MGUz
ZWMxNjk4Nzc5YWJlNmI5ZWI5MDZkNTE0Li45ODk5MzliMjMzMjE0Y2ZkNDViZTA3YmFlODYwOWZj
ODRjN2ViMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIG91dC5h
cHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGMxMTRiOWI1N2QxNDRk
MTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjg3ZTgyMzNmMWZlM2E4YmVjNDAyMzBkMjk4YjA5
ZTZkZmY5YTM4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNTQsNyArNTQsNyBAQAogVW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVU
eXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKICAgICA6IEJhc2UoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bVZhcnMoMCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKDApCisgICAgLCBtX251bUNhbGxlZUxvY2FscygwKQogICAgICwgbV9udW1QYXJhbWV0ZXJz
KDApCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9nbG9iYWxPYmplY3RSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIoKSkKQEAgLTY1LDEwICs2NSwxMiBAQAogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlh
YmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5j
dGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
Zm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fy
cm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0
TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFY
KQorICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMo
MCkKICAgICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50
KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IGZhNTE0YzE1NmE3Y2I3Y2VmNzRhOWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmJj
YTJjMDRhY2E0MzgyOTIxNzU2OTU4YmFhNjhkYjMwZThmMTM1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5
LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
clRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RC
aXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYsNyArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKICAgICBib29sIG5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hhaW47IH0KIApAQCAtMjAy
LDYgKzIwNCw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9
CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNocmlua1Rv
Rml0KCkKICAgICB7CkBAIC0yMzIsNyArMjM2LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGludCBtX251bVZhcnM7CiAgICAgaW50IG1fbnVtQ2Fw
dHVyZWRWYXJzOwotICAgIGludCBtX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1D
YWxsZWVMb2NhbHM7CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0zODcsMTIgKzM5MSwxNCBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVk
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVu
Y3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlz
TW9kZSA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiAgICAgdW5zaWdu
ZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9lbmRDb2x1bW47CiAKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29k
ZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNmRhMTg1OWIzYWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3
ZTlkNTliNi4uM2Y0OTQ4ODVhZjQ5YzI4ZTI2ZjQ5N2Q2NzVmNjRhMTZjOWI5YWY5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAKIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAg
ICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVi
dWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgYm9v
bCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5k
LCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAg
SlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1
bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4
ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIEFTU0VSVChpc0Z1bmN0aW9u
UGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAm
dm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
ZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGVycm9yLCBudWxscHRyKTsKKyAgICAgICAgJnZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1
dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51
bGxwdHIpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNW
YWxpZCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBleGVjdXRhYmxlLT5y
ZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFy
aWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAg
ICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlv
bi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0
YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbikpOworICAgICAgICBFeGVj
dXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZh
bCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwg
ZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25z
dHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJs
ZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0
LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpW
YXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcykKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlk
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2Vu
ZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVu
dCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3
ICs5OSw4IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2NvbnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1f
ZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgpKQotICAgICwgbV9pc0Fycm93RnVuY3Rp
b24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzTW9kZSkpCisgICAgLCBtX3N1cGVyQmlu
ZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQogewogICAg
IEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLnN3YXAo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQsIAotICAg
IERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBh
cnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVy
cm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6
YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5s
aW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywg
c291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAK
ICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDog
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBpc0Fycm93RnVuY3Rpb24p
OworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXgg
ZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0MmQ5YzFmOC4uYzhiYmEwYWMzMmJlNDM3
ZmZiNWRmM2UzZjllMDViMDQ3OGE1MzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdEFi
aWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTY1LDEwICs2NiwxMCBAQCBjbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0g
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJs
ZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUs
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcyk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0t
PnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6
bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwog
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlOwogICAgIH0KQEAgLTgyLDYgKzgzLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9u
TW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1v
ZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9y
VGhpc01vZGUpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB1
bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5zaWduZWQgdW5saW5rZWRCb2R5U3RhcnRD
b2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05
NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9ja0ZvcigKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBQYXJzZXJF
cnJvciYsIGJvb2wpOworICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAK
ICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYs
IEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSwxMCArMTI4LDkgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgYm9vbCBpc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2Fs
bDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTU4LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQot
ICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dlbmVy
YXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggYjkzNzBjOGQyODRhMzg0ZjIxZTBlNzg5MjY4NTQ1YzkyYjE5ODIzYi4uODc3MDJlYzM5
YTMzYjYyOTAwZjhjY2NlYmM1OGQ5NmIxZjc2OWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMy
LDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKQEAgLTIyNyw5ICsyMjksMzMgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxvY2stPnBhcnNlTW9kZSgpOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3Mg
fHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBib29sIHNob3VsZENh
cHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVz
ZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisKKyAgICAvLyBHZW5lcmF0
b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxs
IGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAg
bmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICAg
ICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdy
YXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgorICAgICAgICAv
LyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFs
dWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3
ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCisgICAg
ICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAg
ICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJldHVybiB7CisgICAgICAgIC8vICAgICAg
ICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3Rh
dGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAg
ICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlz
IGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KKyAg
ICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgICAgfQorICAg
ICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9CisgICAgICAgIHNob3VsZENhcHR1cmVT
b21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChzaG91bGRDYXB0dXJlQWxs
T2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFy
a0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAKQEAgLTI1NCwxNCArMjgwLDMzIEBAIFBh
cnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6
OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsK
KworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJh
dG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0
YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOworICAg
ICAgICBpZiAoZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkp
CisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKKworICAg
ICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdl
IGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50
ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZl
ZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGlu
aW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIo
KSk7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4KKyAgICAgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKKyAgICB9CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0
aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKKyAgICAg
ICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOwog
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5p
ZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNT
Y29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9u
TmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtB
c0NhcHR1cmVkKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRo
ZVRoaW5ncykgewogICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFy
KCk7CiAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJvbm1lbnQgaWYg
d2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpA
QCAtMjcxLDE5ICszMTYsNiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUoKQogICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXgpOwogICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBi
bG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhh
dCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAg
ICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNw
YWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4
dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBh
cmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0
ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0g
ICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9k
ZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluaXRpYWxpemVOZXh0
UGFyYW1ldGVyKCk7Ci0gICAgfQotICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVz
dGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgogICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1
bWVudEJ5TmFtZSA9IGZhbHNlOwogICAgIGlmIChmdW5jdGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFy
aWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1MDgsMzYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRk
VmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CisgICAgc3dp
dGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZt
X3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JS
ZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAgIC8vIEZJWE1FOiBFbWl0IHRvX3RoaXMgb25s
eSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgIGVt
aXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxs
KCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBlbWl0TW92ZShtX2dl
bmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVU
aGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTogeworICAgICAgICAvLyB8dGhpc3wg
aXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgorICAgICAgICBlbWl0TG9h
ZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAg
ICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIp
OwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NTMsOCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVz
ZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICAvLyBBbGwgImFk
ZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKQEAgLTc5OSw2
ICs4NTksMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0
UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRlcjsKIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwg
b2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCisgICAgLy8g
bmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4KKyAgICBtX3BhcmFtZXRlcnMuZ3Jvdyhw
YXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKKyAgICBt
X3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgp
KTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7
CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICBtX3Jlc3RQYXJh
bWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgfQor
fQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25t
ZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBAIC04MjYsMTcgKzkwMiwxNyBAQCBVbmlx
dWVkU3RyaW5nSW1wbCogQnl0ZWNvZGVHZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVy
KERlc3RydWN0dXJpbmdQYXR0ZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3
UmVnaXN0ZXIoKQogewotICAgIG1fY2FsbGVlUmVnaXN0ZXJzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpKTsKLSAgICBpbnQgbnVtQ2FsbGVl
UmVnaXN0ZXJzID0gbWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBt
X2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpOwotICAgIG51bUNhbGxlZVJlZ2lzdGVycyA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVS
ZWdpc3RlcnMpOwotICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IG51bUNh
bGxlZVJlZ2lzdGVyczsKLSAgICByZXR1cm4gJm1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKTsKKyAg
ICBtX2NhbGxlZUxvY2Fscy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVM
b2NhbHMuc2l6ZSgpKSk7CisgICAgaW50IG51bUNhbGxlZUxvY2FscyA9IG1heDxpbnQ+KG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscywgbV9jYWxsZWVMb2NhbHMuc2l6ZSgpKTsKKyAgICBu
dW1DYWxsZWVMb2NhbHMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSwgbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICBtX2NvZGVCbG9jay0+bV9udW1DYWxs
ZWVMb2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7CisgICAgcmV0dXJuICZtX2NhbGxlZUxvY2Fscy5s
YXN0KCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJz
KCkKIHsKLSAgICB3aGlsZSAobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpICYmICFtX2NhbGxlZVJl
Z2lzdGVycy5sYXN0KCkucmVmQ291bnQoKSkKLSAgICAgICAgbV9jYWxsZWVSZWdpc3RlcnMucmVt
b3ZlTGFzdCgpOworICAgIHdoaWxlIChtX2NhbGxlZUxvY2Fscy5zaXplKCkgJiYgIW1fY2FsbGVl
TG9jYWxzLmxhc3QoKS5yZWZDb3VudCgpKQorICAgICAgICBtX2NhbGxlZUxvY2Fscy5yZW1vdmVM
YXN0KCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdCbG9ja1Njb3Bl
VmFyaWFibGUoKQpAQCAtMTkxNSw3ICsxOTkxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
Y3JlYXRlVmFyaWFibGUoCiAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJs
ZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNT
RVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOwotICAgICAgICB2YXJPZmZzZXQgPSBWYXJP
ZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKSk7
CisgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCht
X2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKICAgICB9CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdF
bnRyeSh2YXJPZmZzZXQsIDApOwogICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0
eS5pbXBsKCksIG5ld0VudHJ5KTsKQEAgLTIzMTIsMTIgKzIzODgsMTIgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVnaXN0ZXJJRCogY29uZGl0aW9uLCBpbnQg
bGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdp
c3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0
ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVn
aXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0
dXJuIGRzdDsKQEAgLTI0NzEsMjAgKzI1NDcsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgog
ICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgbV9jb2RlQmxv
Y2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3Rl
cklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJl
Z0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19yZWdleHApOwpAQCAtMjQ5MywxMyArMjU1
NSwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdp
c3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3Qs
IEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlEIG9wY29kZUlEKQordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBk
c3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0KLSAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9wX25ld19hcnJvd19mdW5jX2V4cCk7Ci0g
ICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIobWFr
ZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG9wX25ld19m
dW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2Rl
SUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIG9w
Y29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQogICAgIAogICAgIGVt
aXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMjUxMiwxNyArMjU4NiwxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBlbWl0TmV3RnVuY3Rp
b25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19leHApOworICAgIGVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJU
KGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3RvcikKKyAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yIHx8IGdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5
KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogICAgIAotICAgIGVtaXRO
ZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19hcnJvd19mdW5jX2V4cCk7CisgICAg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBk
c3Q7CiB9CiAKQEAgLTI1NDAsNiArMjYxNSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cgog
ICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rp
b24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNs
KG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRP
cGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNv
ZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxs
QXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsK
QEAgLTM3NjYsNiArMzg1NCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVy
biBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JO
ZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lz
dGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAg
ICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxB
cmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRN
b3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1p
dE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAg
IGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1l
bnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkp
OworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3
TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9y
Q2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODQy
LDQgKzM5NDgsMjE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdFBh
cmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJ
RCogYXJndW1lbnQpCit7CisgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwo
KTsKKyAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMu
c2l6ZSgpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwor
ICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCisg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsK
KyAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
ICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOworICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQo
KSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCkKK3sKKyAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgZW1p
dE9wY29kZShvcF9zYXZlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JS
ZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQo
YmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpCit7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVn
aXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKK30KKworUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAg
ICBlbWl0WWllbGRQb2ludChhcmd1bWVudCk7CisKKyAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xh
YmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25k
aXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOworICAgIC8vIFJldHVybi4KKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVl
UmVnaXN0ZXIoKTsKKyAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkgeworICAgICAgICAg
ICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0
ZXIuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDAp
OworICAgICAgICB9CisgICAgICAgIGVtaXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwor
ICAgIH0KKworICAgIC8vIFRocm93LgorICAgIGVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsK
KyAgICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgIC8vIE5vcm1h
bC4KKyAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgIHJldHVybiBnZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByZXZpb3VzID0gbmV3VGVt
cG9yYXJ5KCk7CisgICAgZW1pdExvYWQocHJldmlvdXMuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwor
ICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQo
bmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wp
OworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxw
dHIpOworICAgICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJndW1lbnQp
OworICAgICAgICAgICAgZW1pdENhbGwoaXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQo
KSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8TGFiZWw+
IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiBuZXh0RWxlbWVudCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVl
LmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1l
bnQuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAg
ICAgIGVtaXRMb29wSGludCgpOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1p
dFlpZWxkUG9pbnQodmFsdWUuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVs
PiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIGVtaXRF
cXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5v
cm1hbExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dM
YWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3Ry
aWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsK
KworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBuZXdMYWJl
bCgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJl
c3VsdCA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gUmV0dXJuLgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9
IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1l
cygpLnJldHVybktleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRy
dWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCBy
ZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBp
dGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5B
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0Lmdl
dCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1l
bnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJ
SUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9y
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5SZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdp
c3Rlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3Blcyhz
Y29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSks
IHJldHVybkZyb21HZW5lcmF0b3IuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29w
U3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJu
RnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZp
bmFsbHlCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMo
c2NvcGVSZWdpc3RlcigpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZW1pdFJldHVy
bihyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaHJvdy4KKyAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kTm90Rm91bmQgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRo
b2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhy
b3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgp
LCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFy
eSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVyblNlcXVlbmNlLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAg
ICAgICAgICAgICBlbWl0TGFiZWwodGhyb3dNZXRob2ROb3RGb3VuZC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdh
dGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbC4KKyAgICAgICAgICAgICAg
ICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRNb3Zl
KHByZXZpb3VzLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUodmFsdWUuZ2V0
KCksIGl0ZXJhdG9yLmdldCgpLCBwcmV2aW91cy5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXMuZ2V0KCk7Cit9CisKKwordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCit7CisgICAg
UmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihzdGF0ZSkpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JS
ZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29t
cGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9y
U3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Cisg
ICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0
TGFiZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdl
bmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dp
dGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0
Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4
dFN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0
ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMo
KTsKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBk
ZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldCArIDMpOworCisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBU
YWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3
aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5t
aW4gPSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJl
c3VtZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxs
KDApOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVs
cy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRo
ZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRo
ZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NF
UlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1
bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRk
cmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1OWEzMzY4NWJiM2M3MjY0N2RjZmFmYjhkNTgyMDQyMmJh
ODYuLmRmZDAxMWI5NDMyZWNjZjFkZDNjZDMwYTdlNWFlNTUzZTg2NjY3N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsyODEsOCBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0
b3JUaGlzTW9kZSgpOyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJz
ZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiArMzAwLDggQEAKIAogICAgICAgICBSZWdp
c3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRv
clJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVt
cG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVt
cG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55
CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQg
ImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAtNDk5LDEwICs1MDQsOCBAQAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVu
c2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdp
c3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwotICAgICAg
ICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9k
ZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5
Niw2ICs1OTksNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJ
dGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3Qg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9k
ZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3Is
IGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2lnbmVkIG51bVBh
cmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0LDEyICs2NDgsMjggQEAKICAgICAgICAgdm9pZCBiZWdp
blN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSk7CiAgICAgICAgIHZv
aWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVz
c2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFu
Z2UpOwogCisgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOworICAgICAg
ICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShp
bnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CisgICAgICAgIHZvaWQg
YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihM
YWJlbCogZGVmYXVsdExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0K
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBi
b29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29r
czsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9
CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjg3LDcgQEAKICAgICAgICAg
dm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3Bl
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgYm9vbCBpc0Nh
cHR1cmVkKTsKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJl
Z2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZv
aWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIGJvb2wgY2FuT3B0
aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0g
bnVsbHB0cik7CkBAIC03MzAsNyArNzUxLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCYgcmVnaXN0
ZXJGb3IoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHJl
Zy5pc0xvY2FsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXJzW3Jl
Zy50b0xvY2FsKCldOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZUxvY2Fsc1tyZWcu
dG9Mb2NhbCgpXTsKIAogICAgICAgICAgICAgaWYgKHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNrOjpD
YWxsZWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXI7CkBAIC03NTIs
MTIgKzc3MywyMiBAQAogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNV
bmRlclREWjsKICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVy
VERaKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBh
bmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBh
cnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKSkKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0
ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAg
ICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVj
dDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlICYmIG1ldGFkYXRhLT5zdXBl
ckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBjb25z
dHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworCisgICAg
ICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRo
aXNNb2RlOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eTsKIAotICAgICAg
ICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9z
Y29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJp
bGl0eSwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRh
ZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUs
IHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFi
bGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1LDYgKzc5Niw3IEBACiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZh
cmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0
ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZp
cnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBw
cm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJz
Jik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBh
cmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1ldGVy
cyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2Fw
dHVyZXMpOwogCkBAIC04MDQsNiArODM2LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BN
b3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVn
aXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwpAQCAtODExLDcgKzg0NCw3IEBACiAKICAgICAgICAgU2VnbWVudGVk
VmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVSZWdp
c3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFu
dFBvb2xSZWdpc3RlcnM7Ci0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4g
bV9jYWxsZWVSZWdpc3RlcnM7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAz
Mj4gbV9jYWxsZWVMb2NhbHM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAz
Mj4gbV9wYXJhbWV0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TGFiZWwsIDMyPiBtX2xh
YmVsczsKICAgICAgICAgTGFiZWxTY29wZVN0b3JlIG1fbGFiZWxTY29wZXM7CkBAIC04MjcsNiAr
ODYwLDcgQEAKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNr
OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5D
b250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFj
azsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxz
OwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1
bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4g
bV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXpl
QXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYwOGJkMzc0N2Rl
ZGE3ODY4ZTViYmQwZjUyLi4xY2RlNjVkMTQ4YThlYzJiNDI5YjExOTcxN2NmODhiMmFhM2JiMmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNP
Tk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBS
ZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAg
ICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9zaG91bGRBbHdh
eXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVj
dG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5l
cmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKQEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90byk7CiB9CiAKLXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVP
YmplY3RGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBSZWdp
c3RlcklEIGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
JmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUp
OworfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0aWMgUmVnaXN0ZXJJRCog
ZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorewor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoZ2VuZXJhdG9yKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1ODksNyBAQCB2b2lkIFJl
dHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRp
b24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkp
OworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAg
ICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Miw5NiBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRF
bnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5l
U3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3Rh
dGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJu
Tm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRl
bWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAg
ICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAg
IEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRl
bWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhw
ciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4
cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShu
ZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRp
bmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21l
T2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0
YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxv
Y2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2so
KSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRp
Y19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKLSAg
ICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5p
c1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1
cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3Ig
cmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1
dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xh
c3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3Rl
YWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQ
dXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBSZWdpc3RlcklEKiBpbml0
aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lz
dGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIAotICAgIC8vIElm
IHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KLSAg
ICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3Iu
aXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVt
aXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBE
byBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mg
bm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
LCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3Qg
ZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGlu
IHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxh
YmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JC
b2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9y
Qm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVs
PiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRH
ZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRl
bWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1
cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0
IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAg
ICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgewor
ICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNf
Y2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAg
ICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2st
PmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2Fz
dDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQg
b25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQq
IHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJl
dHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAg
ICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExp
bmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTMwMTMsMTEgKzMwODksMjQgQEAg
UmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVT
NiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBu
dWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFy
Zy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7Cisg
ICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlz
KTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyNGRiZDdiZTJkODc4Njg1Y2UxNTBlNDcxZTM1YjJh
ODcyNmU2NzIwLi5kYTk0MDM4ZDZiOTJiZDhjNWQ1NGQ5ZDVmNmRjYWIwN2FkNDg1ZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0
YW50TmFOKGdyYXBoLmZyZWV6ZShqc051bWJlcihQTmFOKSkpCiAgICAgICAgICwgbV9jb25zdGFu
dE9uZShncmFwaC5mcmVlemUoanNOdW1iZXIoMSkpKQogICAgICAgICAsIG1fbnVtQXJndW1lbnRz
KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCi0gICAgICAgICwgbV9udW1Mb2NhbHMobV9j
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICAgICAsIG1fbnVtTG9jYWxzKG1f
Y29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3Rz
KDApCiAgICAgICAgICwgbV9udW1QYXNzZWRWYXJBcmdzKDApCiAgICAgICAgICwgbV9pbmxpbmVT
dGFja1RvcCgwKQpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIK
ICAgICAKICAgICBlbnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMpOwogICAgIAogICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1f
YXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCkBAIC0yOTI3LDcgKzI5MjcsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSBy
ZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0
ZXIuCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0g
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOwogICAgIHJlZ2lzdGVyT2Zm
c2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIApAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICAgICAgLy8gU3RhcnQgd2l0
aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSBy
ZWdpc3Rlci4KICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoCi0gICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSkub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7
CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKICAgICAgICAg
cmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAppbmRleCA1MWFjNTVkNGNh
NWY5ZWQ0OThhYjg4OTdjOTZlZDI1OTMzM2Q2Mjg3Li5mNWY0Y2I1MjM4MGVkYmIzYzlmODk3MTAz
MjExMGEwODhjZmQxMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZvckFsbEtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxL
aWxscy5oCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAg
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVCZWZvcmUgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5l
c3MoYmVmb3JlLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQWZ0ZXIgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYWZ0ZXIuYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7
IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAgICAgICAgIGlmIChsaXZlQmVmb3JlLmdldChyZWxh
dGl2ZUxvY2FsKSAmJiAhbGl2ZUFmdGVyLmdldChyZWxhdGl2ZUxvY2FsKSkKICAgICAgICAgICAg
ICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHJlbGF0aXZlTG9jYWwpICsgc3Rh
Y2tPZmZzZXQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5k
ZXggNDI4ODcwYjFjMmEyNTg3MTVjZDcxNTNiOGU3OTliZWFlOTJjNGU1Zi4uMTkxMWNmZWVkNjQx
OTAzOTZjOGFlNjVmM2E3ZWM0OTc4YTc2NmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaApAQCAtNzM4LDcgKzczOCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwg
U2Nhbm5hYmxlIHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVD
b2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiBmdWxsTGl2ZW5lc3MgPSBsaXZlbmVzc0Zvcihjb2RlQmxvY2spOwogICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5l
c3MoY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJbmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxh
dGl2ZUxvY2FsLS07KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwg
PSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOyByZWxhdGl2ZUxvY2FsLS07KSB7CiAgICAg
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IHN0YWNrT2Zmc2V0ICsgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwocmVsYXRpdmVMb2NhbCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgcmVwb3J0IGlmIG91ciBjYWxsZWUgYWxyZWFkeSByZXBvcnRlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENy
ZWF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5jcHAKaW5kZXggZTZjNDIzNWVjNGNhNjgxN2NkMzdlNjk5ODM0Nzg2
MDg5ZjJiNmVmYS4uNWU1YTE1MDRjMjRkMDY0MDRmNzg2YjE3MjJlMmY2MTUwZjhmYWI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5jcHAKQEAgLTkzLDggKzkzLDggQEAgY2xhc3MgT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAvLyBXZSdkIHJlYWxseSBs
aWtlIHRvIHVzZSBhbiB1bnNldCBvcmlnaW4sIGJ1dCBUaHJlYWRlZENQUyB3b24ndCBhbGxvdyB0
aGF0LgogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigw
KSwgQ29kZU9yaWdpbigwKSwgZmFsc2UpOwogICAgICAgICAKLSAgICAgICAgVmVjdG9yPE5vZGUq
PiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKLSAgICAgICAgZm9yIChp
bnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgKyts
b2NhbCkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxs
ZWVMb2NhbHMpOworICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUt
Pm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91
c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAg
ICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBjbGFzcyBPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUt
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7CisgICAgICAgIGZvciAoaW50IGxvY2Fs
ID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAg
ICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxv
Y2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUV2ZW50U3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVFdmVudFN0cmVhbS5jcHAKaW5kZXggYmU4ZTJhNzkxNDlmNWEyZTMxNDRhZDQ2NGEzNWM2
NTRmYzU5OWUwYy4uNjM5MmYxNGE5ODA0Y2ZiNjkyZTg0YmMzOTAxMjBkMGJhYjdkYmRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFt
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJl
YW0uY3BwCkBAIC0xMjMsOSArMTIzLDkgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNv
bnN0cnVjdCgKICAgICAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXM7CiAgICAgaWYgKGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNv
ZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzICsgVmlydHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpICsgMTsKKyAgICAgICAgbnVtVmFyaWFibGVz
ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUpLT5tX251bUNhbGxlZUxvY2FscyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSArIDE7CiAgICAgZWxzZQot
ICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnM7CisgICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5tX251bUNh
bGxlZUxvY2FsczsKICAgICAKICAgICAvLyBDcmF6eSBzcGVjaWFsIGNhc2U6IGlmIHdlJ3JlIGF0
IGluZGV4ID09IDAgdGhlbiB0aGlzIG11c3QgYmUgYW4gYXJndW1lbnQgY2hlY2sKICAgICAvLyBm
YWlsdXJlLCBpbiB3aGljaCBjYXNlIGFsbCB2YXJpYWJsZXMgYXJlIGFscmVhZHkgc2V0IHVwLiBU
aGUgcmVjb3ZlcmllcyBzaG91bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcAppbmRleCAyOWYwNWU1MWQ0NjFmZGY2ZTAxNDM4MzE5
OWM5MThmNjQxNWU4Y2VhLi4zMDgwZGMzNDUwOWM3MzMzMjRiODE0M2QyYTk1NGYwOGVkYWYxM2Zi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklU
Q29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJ
VENvZGUuY3BwCkBAIC00NSw5ICs0NSw5IEBAIEZvck9TUkVudHJ5SklUQ29kZSogRm9yT1NSRW50
cnlKSVRDb2RlOjpmdGxGb3JPU1JFbnRyeSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQg
Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25l
ZCBudW1DYWxsZWVSZWdpc3RlcnMpCit2b2lkIEZvck9TUkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6
ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKQogewotICAgIG1f
ZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVSZWdpc3RlcnMg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKKyAgICBtX2VudHJ5QnVmZmVyID0gdm0uc2NyYXRj
aEJ1ZmZlckZvclNpemUobnVtQ2FsbGVlTG9jYWxzICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCmluZGV4IDQ0YWY4Zjk1NzkxYWFhNzhl
NmU4MWRmYTY0OWM4NmExNWVhMzQ0ODEuLjlhZTk3M2Y0MGQxMmMxNmI4MDljMGM4Y2ExZTM2ZWJh
YThlZTM2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JF
bnRyeUpJVENvZGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBGb3JPU1JFbnRyeUpJVENvZGUg
OiBwdWJsaWMgRlRMOjpKSVRDb2RlIHsKICAgICBGb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICB+
Rm9yT1NSRW50cnlKSVRDb2RlKCk7CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZm
ZXIoVk0mLCB1bnNpZ25lZCBudW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHZvaWQgaW5pdGlhbGl6
ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWduZWQgbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBTY3JhdGNo
QnVmZmVyKiBlbnRyeUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlCdWZmZXI7IH0KICAg
ICAKICAgICB2b2lkIHNldEJ5dGVjb2RlSW5kZXgodW5zaWduZWQgdmFsdWUpIHsgbV9ieXRlY29k
ZUluZGV4ID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRW50cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5j
cHAKaW5kZXggYWM3MTcxNGY5M2Y1NWFmMjYxOGM3ZTQyMGE3MWI2NmRlMjExNzY2Ni4uNjAxYjQ2
MDk0MDY0YWM2MTNhOThmYTljMjI5Mzg2ZmE2ZWFkZjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogcHJlcGFyZU9T
UkVudHJ5KAogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZM
b2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBFbmNv
ZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAg
ICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZmZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVh
YTJlNWZmY2Y4YzBlYi4uNTVkODI5YTJhNjZiNjI2MDkxNTg0YTczZTExZGJhMDNjMjU2ZWEyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAK
ICAgICB9CiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICAgICAgICAgUmVmUHRyPEZv
ck9TUkVudHJ5SklUQ29kZT4gY29kZSA9IGFkb3B0UmVmKG5ldyBGb3JPU1JFbnRyeUpJVENvZGUo
KSk7Ci0gICAgICAgIGNvZGUtPmluaXRpYWxpemVFbnRyeUJ1ZmZlcihncmFwaC5tX3ZtLCBncmFw
aC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgY29kZS0+
aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdyYXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+
bV9udW1DYWxsZWVMb2NhbHMpOwogICAgICAgICBjb2RlLT5zZXRCeXRlY29kZUluZGV4KGdyYXBo
Lm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBqaXRDb2RlID0gY29kZTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApp
bmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2NTUxOWM1NzJlYjYxZWViMzllMzBlLi41NDY5NzFjZThm
NTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2MTU0ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw2ICsxNTUsNyBAQAogICAgICAgICBib29sIHRlc3RB
bmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0Nl
bGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9v
bCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCop
OwogICAgICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKQEAgLTM4OCw3ICszODks
NyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiAgICAgewogICAgICAgICBBU1NFUlQoTWFy
a2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9
IHRoaXMtPmF0b21OdW1iZXIocCk7CkBAIC0zOTksNyArNDAwLDEzIEBACiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdG9tTnVtYmVyID49IG1fZW5kQXRvbSkgLy8gRmls
dGVycyBwb2ludGVycyBpbnRvIGludmFsaWQgY2VsbHMgb3V0IG9mIHRoZSByYW5nZS4KICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCisgICAg
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICB7
CisgICAgICAgIGlmICghaXNBdG9tKHApKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEpTQ2VsbCo+KHApKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IGM1NDc1MWNkNzIwZmZmYzExZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMuLjY0ZTc0
Y2Y2NTBiMDBkNDg1YTgzMWNkNTIzNzFlYzQyZGQ0ZGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTUzLDcgKzE1Mywx
NiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQ2FsbEZyYW1lKiBj
YWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBDb2RlQmxvY2sqIGNh
bGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBj
YWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJhbWUtPnVuY2hlY2tlZFIoY2FsbGVyQ29kZUJsb2Nr
LT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEV2YWxF
eGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0
KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNj
b3BlQ2hhaW4pOworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENvZGVCbG9j
ayA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKworICAgIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAgaWYgKGNh
bGxlclVubGlua2VkQ29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0No
ZWNrOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5n
ZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAgICAgICAg
dGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisKKyAgICBTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVy
Q29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNlQ29kZSwgdGhpc1REWk1vZGUsIGNhbGxl
clNjb3BlQ2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7CiAgICAgICAgIGlmICghY2FsbGVyQ29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcxLDggKzE4MCw3IEBAIEpTVmFsdWUgZXZh
bChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2Vy
IGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBB
U1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgVGhpc1REWk1v
ZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFRoaXNURFpNb2Rl
OjpBbHdheXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOwotICAgICAgICBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNh
bGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1v
ZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFsID0gY2Fs
bGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNv
ZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHNv
dXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC00MTAsNyArNDE4LDcgQEAgdm9p
ZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9
CiAgICAgZGF0YUxvZ0YoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAotICAgIGVuZCA9IGl0
IC0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIGNvZGVCbG9jay0+bV9udW1WYXJz
OworICAgIGVuZCA9IGl0IC0gY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIGNvZGVCbG9j
ay0+bV9udW1WYXJzOwogICAgIGlmIChpdCAhPSBlbmQpIHsKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgSlNWYWx1ZSB2ID0gKCppdCkuanNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGE2MWI1N2Q0NjE1ZjlhOTJlOWIzNDM5NmVkMzg4Zjc5NmQ4NDUwZDAuLjg3OWVm
YjJiYWI0ZTI0MGM3YzE5NzViYjQ2ZjlkNDNkNjc2NDJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jb3B5X3Jlc3QpCiAgICAgICAgIERFRklORV9P
UChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERF
RklORV9PUChvcF9zYXZlKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0yNjAsNiArMjYyLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZl
cikKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQor
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVG
SU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
b2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKQEAgLTc2Myw5ICs3Njcs
OSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAKIHVuc2ln
bmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewot
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKSkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzKSkpOwogCi0gICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQ
b2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJl
Z2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxv
Y2FscyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiBp
bnQgSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCBkMjI1ODIzOWQyZWI3MzAzNTFkZGUxMTVlNjhhNzViY2E0
NzlkNDJkLi5mY2M4ZjMwNjY3N2U3NjZjMGQxZmNhNTM3ODc0MjI1ZGEyNTYzOGRhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Myw2ICs0OTMsOCBAQAogICAgICAgICB2b2lkIGVtaXRf
b3BfY29weV9yZXN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190
ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU0
MSw2ICs1NDMsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2MCw2ICs2NjQsNyBAQAogICAg
ICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsK
ICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAg
dm9pZCBlbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRO
ZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmpl
Y3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBl
bWl0UmVzb2x2ZUNsb3N1cmUoaW50IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAppbmRleCBkNDk0ODk2NTBlNjg1NDY1OWU1YTYwZGU3OGU2MzNlMWE1MTgzODVh
Li42ZWMxNWJiNDRiMzM0MDVmMGYyY2UyMzcwN2U0MTU0NjgzYWIxYWMxIDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIG1fY29kZUJsb2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3OCwxNCArOTc4LDI2
IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQsIHJlZ1QwKTsKICNlbmRpZgogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMgPSBt
X2NvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmNFeGVjKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9uZXdfZnVuYykKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5j
dGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
b3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwor
ICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1
cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24o
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUu
b3Bjb2RlKTsKQEAgLTEwMTgsMTEgKzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhw
ckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vsc2UgCiAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y3Rpb24sIHJlZ1QzLCByZWdUMik7CiAjZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0
aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAg
IH0KKyAgICB9CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rp
b24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKQEAgLTE0MDUsNiArMTQzMywxOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jb3B5X3Jlc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKKyAgICBzbG93UGF0aENh
bGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
ZDg3M2ExZGRkNjU3YTI4OTY4YTBlNTFmOTA2MzZkMWRlMmZjZjgxNi4uY2FkOTM0NjljMWJjYmQy
YjU3ZGNiNTIwMjNhYmU5ZjcyM2Y3NDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKQEAgLTk4NywyMyArOTg4LDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJv
ZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBib29sIGlzSW52YWxpZGF0ZWQpCiB7CiAgICAg
QVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjpp
bmZvKCkpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rp
b25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICBpZiAoaXNJbnZhbGlkYXRlZCkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKK30KKworZXh0ZXJuICJDIiB7CisK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7
CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMs
IHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBm
dW5jdGlvbkV4ZWN1dGFibGUpCiB7Ci0gICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5o
ZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRydWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dl
bmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCog
ZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNv
bW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxl
KQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKK0VuY29kZWRKU1ZhbHVlIHN0
YXRpYyBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNT
Y29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVj
dXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSk7CkBAIC0xMDE5LDEyICsxMDM5LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlCiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRh
YmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1
ZSwgdHJ1ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKIH0KICAgICAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUs
IGZhbHNlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCA5NjM4ZjE0NWM5ZDU1NzVmMWM5NTJlMjc1ZjU5NGE3NmIzMmE0Yjg4Li4yNTQy
NTUwMjI5ZGE0MWUxYWRkNDZiMGIwMjU4ZThlNDk5NWI5YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzAxLDYgKzMwMSw4IEBACiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4
ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwg
SlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2Jq
ZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggYTZjM2QyN2UyODBh
MDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMy4uZjU5MThiNzIxNzBhYzVkZTQ3YzJiZWQzNjM3
OTY1MzBlMDE5NTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5jcHAKQEAgLTEzNCw5ICsxMzQsOSBAQCB2b2lkIHNldEVudHJ5cG9pbnQoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIAogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50
Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykgPT0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkpOworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykgPT0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSkpOwogCi0gICAgcmV0dXJuIHJv
dW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0
ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJP
ZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDc2NWYxOTc5NTBlMzIzZjA1NjZlNzJjNzNiNGVlZDYzZTNiMjA4YzUuLjM1MWE0YzhkNDQyZjJk
NmM2OGM0YTkyYzMyZjE2ZWM2MDJkYTgyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0yMjQsOSArMjI1LDkgQEAgc3RhdGljIHZvaWQg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVu
dCwgQ29kZVNwZWMKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBj
YWxsZWUtPmpzRXhlY3V0YWJsZSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0
YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpOwotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBv
ZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJz
ID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCisgICAgZGF0
YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1W
YXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlTG9jYWxzID0gJXUsIGNhbGxl
ciA9ICVwLlxuIiwKICAgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVl
LCBleGVjdXRhYmxlLAotICAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLAorICAg
ICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLAogICAgICAgICAgICAgZXhlYy0+Y2FsbGVy
RnJhbWUoKSk7CiB9CiAKQEAgLTQ1OCw3ICs0NTksNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5U
eXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNv
ZAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZ0YoIkNoZWNraW5nIHN0
YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOwogICAgIGRhdGFMb2dGKCJDb2Rl
QmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKLSAgICBkYXRhTG9nRigiTnVtIGNh
bGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBl
eGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0g
dmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKICNpZiBFTkFC
TEUoSklUKQpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAg
IExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChj
b2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjb2RlQmxvY2stPm5lZWRz
QWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0FjdGl2YXRpb24oKSk7CisgICAgSlNTY29wZSogc2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7
CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVu
Y3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNj
b3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwNTIsNiArMTA2NSwxNyBAQCBpbmxpbmUgSlNW
YWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVl
IHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9
IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihwY1szXS51Lm9wZXJhbmQpOworCisgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBl
MjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGViODFmY2JlMzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJk
YzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTksNiArOTksOCBAQAogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZjhlMTI4Y2NkOWEwNGExMWFjZjk5MWNi
YzFiNWIyMGQ5N2NhZjAzMy4uNjEyNjRkOTg4NTc3NTU1MzcxMzVmOWMzNDdjMDBmYmUzZWFmOWU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG1hY3JvIHZtRW50cnlSZWNvcmQoZW50cnlG
cmFtZVBvaW50ZXIsIHJlc3VsdFJlZykKIGVuZAogCiBtYWNybyBnZXRGcmFtZVJlZ2lzdGVyU2l6
ZUZvckNvZGVCbG9jayhjb2RlQmxvY2ssIHNpemUpCi0gICAgbG9hZGkgQ29kZUJsb2NrOjptX251
bUNhbGxlZVJlZ2lzdGVyc1tjb2RlQmxvY2tdLCBzaXplCisgICAgbG9hZGkgQ29kZUJsb2NrOjpt
X251bUNhbGxlZUxvY2Fsc1tjb2RlQmxvY2tdLCBzaXplCiAgICAgbHNoaWZ0cCAzLCBzaXplCiAg
ICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCwgc2l6ZQogZW5kCkBAIC0xMjI3
LDYgKzEyMjcsMTIgQEAgX2xsaW50X29wX25ld19mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAor
X2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgIGRp
c3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTQ1OCw2
ICsxNDY0LDExIEBAIF9sbGludF9vcF9uZXdfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9v
cF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgIGRp
c3BhdGNoKDQpCisKIF9sbGludF9vcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJvd19mdW5j
X2V4cCkKQEAgLTE1NzMsNiArMTU4NCwxOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3Bh
dGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhY2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUyMmI3
MGUxZTk2MDliZTAwLi4yYjg0Y2JhZjM3ZWYwNDYwYmRiOTE2ZDJiYmRhYzAyZTBkMmI0ZDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzQxLDkgKzM0
MSwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgbnVsbHB0ciwgLyogZGVsZWdhdGUgKi8gZmFs
c2UpOwogICAgIH0KIAotICAgIFlpZWxkRXhwck5vZGUqIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxl
Z2F0ZSkKKyAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsK
KyAgICAgICAgWWllbGRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRF
eHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOworICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgVmFyaWFibGVF
bnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9y
LApAQCAtMzY0LDEyICszNjYsMTIgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQsIAotICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5j
dGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRp
b24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAK
LSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJC
aW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbklu
Zm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKQEAgLTg4Niw2ICs4ODgsOSBAQCBjbGFzcyBB
U1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIG5vZGUtPnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7
CiAgICAgfQorCisKKyAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgdXNlc0FyZ3Vt
ZW50cygpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVhMzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlm
NmQzZDkzOTMzOGNlNTAuLjViNmRjNDkzODVkYTc4MzU4YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAg
ICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBw
YXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNl
TW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6
IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikK
ICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNjIsMTAgKzE2MiwxMSBAQCB2
b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1l
dGVyQ291bnQpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5T
dHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fc3VwZXJCaW5kaW5n
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAg
ICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKICAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQog
eworICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Vw
ZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRjMTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFmYTU3OGVlY2Uu
LjBiZjAwYjdiZTkzN2Y3OTc4YTQ1NjM3M2ZhZGUzMWY1Yzc1ZjlkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTcsNyArMTgxNyw3IEBACiAgICAgICAgICAgICBQ
YXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFy
c2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODQyLDggKzE4NDIs
OCBAQAogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgICAgIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
LSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAgICAg
ICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIGlu
dCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKQEAgLTE4NjksOCArMTg2OSw4IEBA
CiAgICAgICAgIGludCBtX2xhc3RMaW5lOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJz
ZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOworICAgICAg
ICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwog
ICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKICAg
ICB9OwogCkBAIC0xOTMyLDcgKzE5MzIsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJv
d0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9Owog
Ci0gICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CisgICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFlp
ZWxkRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3Vt
ZW50LCBib29sIGRlbGVnYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IDY4NzRiMjdlMzkwOTA3YzhlNDE0OTgyNmMzNzllNDJjZjU5Y2U1MmEuLjE2MjVm
M2ZiZTBlMWIzMjNmZGZjNDRiZTAxODRkMGFlYmJjZjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUs
IAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlLCAKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCiAg
ICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKQEAgLTIxMCw2ICsyMTAsNyBA
QAogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1l
bnRzKDApCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVp
bHRpbk1vZGU6OkJ1aWx0aW4pCisgICAgLCBtX3N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcpCiAg
ICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQoZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKICAg
ICAsIG1fdGhpc1REWk1vZGUodGhpc1REWk1vZGUpCiB7CkBAIC0yNDksNyArMjUwLDEwIEBACiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKQEAgLTI3Myw4
ICsyNzcsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0
aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICAgICAgICAg
ZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIHNvdXJj
ZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNl
RWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0
b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAtMzAxLDcgKzMwOSwxNCBAQAogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlh
YmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJlZFZhcmlhYmxlcykKICAgICAg
ICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQoZW50cnkpOwotICAgIAor
CisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgIHNjb3BlLT5nZXRVc2VkVmFy
aWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgaWYgKHVzZWRWYXJpYWJsZXMu
Y29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkpCisgICAgICAg
ICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpOworICAgIH0KKwogICAgIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0
cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0z
MTEsMTAgKzMyNiw5IEBACiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVh
dHVyZTsKICAgICBpZiAobW9kaWZpZWRBcmd1bWVudHMpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1v
ZGlmaWVkQXJndW1lbnRzRmVhdHVyZTsKKwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKLSAg
ICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOwotICAgICAgICBzY29wZS0+Z2V0VXNl
ZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMg
dG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRvIGFsbG93IGJ1aWx0aW5zIHRvIHVzZSBsZXhpY2Fs
IGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRW
YXJpYWJsZXMpIHsKICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZp
ZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkpOwpAQCAtNDU4LDYgKzQ3Miw0NSBAQAog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJh
dG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxl
bWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3Jl
YXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgaW50
IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAg
IGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisK
KyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5uYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOworICAgIGluZm8ucGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5zdGFy
dE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKKyAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGlu
ZSgpOworICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2
YWx1ZSwgcmVzdW1lIG1vZGUKKworICAgIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVy
YXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlT
Y29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7
CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nh
c3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBw
YXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOworICAgICAgICBwb3BTY29wZShnZW5lcmF0
b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIH0K
KyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlLCBmYWxzZSk7CisKKyAg
ICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9r
ZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1u
OworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihz
dGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RU
b2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJj
ZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJ
dGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1
bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1hciBp
cyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNTg5LDE1ICsxNjQyLDE0IEBACiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rp
b25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVp
bGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQg
c3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJv
ZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCks
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwg
cGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwOSw3ICsxNjYxLDcgQEAKICAgICBlbHNlCiAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hl
Y2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9k
eSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MjUsNiArMTY3Nyw4IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiAi
Z2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3MDMsNiArMTc1NywzNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisK
KyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQorICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUp
OworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgU291cmNl
UGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+
JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9u
VHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsK
QEAgLTE4MTMsMTIgKzE4OTgsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOwotICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAg
ICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENv
bHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJ
bmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNv
dW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2Rl
LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJh
bWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21T
b3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTE4MzIsNyAr
MTkxNSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNl
UGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5t
X2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVk
SW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbikK
KyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkK
ICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4
cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJv
ZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODU0LDE0ICsxOTM3LDMzIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAg
ICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJz
ZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwotICAgIAotICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5
ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmlu
ZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2Rl
KTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JG
dW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291
cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1
bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkoKTsKKworICAgICAg
ICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAg
ICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBlcigpLCAiQ2Fubm90IGNhbGwgc3Vw
ZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgaWYgKGdlbmVy
YXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNz
Iik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnVuY3Rpb25JbmZv
LmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogICAgIAogICAgIHJlc3RvcmVT
dGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5u
b3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkp
OwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5j
dXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYg
ZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rp
b25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUt
PmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIp
OwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9
PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KQEAg
LTE5MjksNyArMjAzMSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZfR0VO
RVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9k
ZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFp
bElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2
ZSBhIG5hbWUiKTsKQEAgLTIwODAsNyArMjE4Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAg
ICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3Rv
ciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBk
ZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvciciKTsK
ICAgICAgICAgICAgIH0KQEAgLTI3MzEsNyArMjgzMyw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewog
ICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xhc3NpZmllcih0aGlzKTsKIAogI2lmIEVO
QUJMRShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0Y2goWUlFTEQpKQorICAgIGlmIChtYXRj
aChZSUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVy
YXRvcigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOwog
I2VuZGlmCiAKQEAgLTI4MzYsNiArMjkzOCw3IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIGZh
aWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJh
bWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7
CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBK
U1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNT
RVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NDMsMTMgKzI5NDYsMTQgQEAgc3RydWN0IExhYmVs
SW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAog
ICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVTKTsKKyAgICBKU1RleHRQb3NpdGlvbiBh
cmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24g
YXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGlmICgh
YXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50
LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFy
Z3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5k
UG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0zMDQx
LDcgKzMxNDUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2Vu
VHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJz
ZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0
aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUg
PSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRo
b2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMjk0LDcgKzMzOTgsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7
CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKLSAg
ICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAg
ICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICNl
bmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlv
bk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2Ug
ZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
RXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcy
NTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25C
b3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAg
ICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAg
ICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29w
ZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRh
cnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9k
ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAg
ICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgo
cmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9k
dWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAg
ICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CisgICAgICAgICAgICBz
ZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29s
IGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5
OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7
IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVu
dHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2NvcGUoKSAKICAgICB7IAogICAgICAgICBt
X2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwxNiArNDU4LDIwIEBAIHN0cnVjdCBTY29w
ZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAg
ICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFy
aWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBw
dHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsr
cHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFi
bGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29u
dGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGltcGwp
IHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gImFyZ3VtZW50
cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBhdCBmdW5jdGlvbiBib3VkYXJ5LgorICAg
ICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVz
dGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKKworICAgICAgICAgICAgICAgIG1f
dXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNlZCBpbiBhbiBpbm5lciBzY29wZSB0byBi
ZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpbm5l
ciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBhbmQgbm90IGEgZnVuY3Rpb24uIE9ubHkg
aW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVu
dHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0dXJlZC4KICAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYgKG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rp
b25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNMZXhpY2FsU2NvcGUpKQotICAgICAgICAg
ICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoKnB0cik7CisgICAgICAg
ICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzLmFkZChpbXBsKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQcm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxl
IGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwx
NCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewogICAgICAgICBtX2lzRnVuY3Rpb24g
PSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA9IHRydWU7CisgICAgICAgIG1f
aGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICAg
ICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNHZW5lcmF0
b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7CisgICAgICAgIG1f
aXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNHZW5lcmF0b3IoKQog
ICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0g
dHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lk
IHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJv
b2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6
IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faGFzQXJn
dW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7
CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFy
c2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
LCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKKyAgICAgICAgVk0qLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBT
b3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2Rl
ID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1
MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNl
RWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVt
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZp
ZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAg
ICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0x
MTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0
cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBw
YXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVy
KiBtZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJv
b2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3Rh
cnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25C
b2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFy
c2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUg
VHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZv
cm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5z
aWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29u
dGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVC
dWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFz
dFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9u
JiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYg
aW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBv
cnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEy
MTUsNiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5F
VkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3Vy
Y2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEz
NjMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBt
X2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CiAg
ICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1cGVyQmluZGluZyBtX3N1cGVyQmluZGlu
ZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgIFRo
aXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRl
Y2xhcmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9k
ZSBidWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAg
ICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpAQCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xh
c3MgUGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlz
TnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7
Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlz
VERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFt
ZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1MDksNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4
LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwg
c291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcs
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBu
YW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
aW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5YmQ3MTU1MjhiZTg4NS4uYzA4OGM5Njdl
M2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiArNDcsNyBAQAogZW51bSBjbGFzcyBTb3Vy
Y2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKICAgICBHZW5lcmF0b3JNb2Rl
LAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAgICBHZXR0ZXJNb2RlLAogICAgIFNldHRl
ck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYgKzYyLDcgQEAgaW5saW5lIGJvb2wgaXNG
dW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgIHN3aXRjaCAo
cGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODUsNiArODcsNyBA
QCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTA0LDYgKzEwNyw3IEBAIGlubGlu
ZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMy
ZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAor
I2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5j
bHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENv
ZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUg
fTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2Rl
S2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29k
ZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQor
ICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5N
b2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQorICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0
ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8v
IHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisg
ICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygp
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAorICAgICAg
ICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxh
Z3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFt
ZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7
CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFp
dHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1
cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gU291cmNl
Q29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjNlMGMzMGZk
MWQyNTE4NjIzNWUyZGIwMzg0NDE0YzYxZjgxNTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBT
eW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Np
b24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNz
aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29s
KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0
LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBib29sKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
Ym9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50
LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNS
ZXN1bHQ7IH0KQEAgLTM4NSw2ICszODUsOCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBp
bnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQo
aW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwog
cHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9r
ZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBm
MTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlLi40OTQ1MjBkYmRmNDI4Yzg2
NDBkYjVlMjIzZjAwZTIxZjJmZWNmZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUq
IGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJv
b3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVs
bHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290
Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVG
cm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFy
c2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8g
Z2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2Vu
ZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBlbXB0eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNT
dHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUo
a2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2Rl
LmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4
IDQ4YzhjZmVmODQ2NDlkOGYwOWMyZmIwYjk0ODgxMTFlMTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1
MzNiMWZkYTNkYWE4OTVkMDZjZGM4OTU3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiU291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIK
ICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC01Niw3MSArNTcsNiBAQAogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJj
ZVByb3ZpZGVyOwogCi1jbGFzcyBTb3VyY2VDb2RlS2V5IHsKLXB1YmxpYzoKLSAgICBlbnVtIENv
ZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUg
fTsKLQotICAgIFNvdXJjZUNvZGVLZXkoKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2Rl
S2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29k
ZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQotICAgICAgICA6IG1fc291cmNlQ29kZShzb3Vy
Y2VDb2RlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fZmxhZ3MoCi0gICAg
ICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKQotICAgICAgICAg
ICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKQotICAgICAgICAg
ICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpCi0gICAgICAgICAg
ICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNo
KHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2Rl
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUNv
ZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaDsgfQotCi0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZS5sZW5ndGgoKTsgfQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KLQotICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBj
b21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCi0g
ICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVu
dC4KLSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3Ry
aW5nKCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCi0g
ICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5sZW5ndGgoKQotICAgICAgICAgICAgJiYg
bV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCi0gICAgICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIu
bV9uYW1lCi0gICAgICAgICAgICAmJiBzdHJpbmcoKSA9PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1f
bmFtZTsKLSAgICB1bnNpZ25lZCBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1faGFzaDsKLX07Ci0K
LXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYg
YikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFz
aFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTb3VyY2VDb2RlS2V5PiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRp
YyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7
IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9Ci19OwotCiBzdHJ1Y3QgU291cmNlQ29k
ZVZhbHVlIHsKICAgICBTb3VyY2VDb2RlVmFsdWUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDRjZjY1OTBhOWIw
MTYwODg1NjJiZWU4ZDc1NTM1NWQ4N2EzYjMzYjEuLmRlMDdmMWM1MWI1NTEyZGNjYWI5YjAyNDhm
M2ZkODFiZjFiNGFiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBc
CiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNy
byhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8o
SW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMyOSw2ICszMzAsMTMgQEAKICAgICBtYWNy
byhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZs
b2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVyYXRvcikgXAorICAgIG1hY3JvKGdlbmVyYXRv
ck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRv
ckZyYW1lKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgXAogCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggOTBmNjVjMjRkNjMyYjYyMTA4OWRlNWMxYmJkNDk2NGQ0NDk2NDM5MS4u
YzY3Y2M3MDIxMTlkNzM4ODNkZGNlNzFkZjczOWUyZGFiYzZiNzc0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY0NCw2ICs2NDUsMzggQEAgc3Rh
dGljIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGEqIHNldHVwQXJpdHlDaGVja0RhdGEo
Vk0mIHZtLCBpbnQgc2xvdHNUb0EKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NhdmUpCit7CisgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5
IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisgICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CisgICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZy
YW1lLCBzbG90KTsKKyAgICB9CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsK
KyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAg
ICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOworICAg
IEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUpKTsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CisgICAgRU5EKCk7
Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAppbmRleCAyMjYxODVjNGM3ZWE3Y2M2ZmM3ZjNjYzRmMWYzN2U2MGVi
NzJmMTdhLi5mMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkw
LDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3By
b2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9h
c3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAKaW5kZXggYTYzMmM0OGUwMzBiNDFiMzNiMzNkYmExNmEzMWNmNjEzNWI0
ZjUwZi4uMDJmMzk1YzQyYmMxMmVlMDIxODM0YTgyZjgxZjBmYzk3OWJjZGE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAh
IXBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiB9CiAKIGJvb2wgY2hl
Y2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcnNlckVycm9yJiBlcnJvcikKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5
bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGUKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5v
ZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1O
b2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBk
MzIwZWM3Y2E2MC4uNDIwNjAwNjcyMjlhYTQwYWI0N2U5YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3
ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IAogICAg
ICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tG
b3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1fc291cmNlLCBraW5kLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwog
ICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJs
ZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxl
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCkBAIC01NTYsNyArNTU2LDcg
QEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIG1fc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
ZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAg
ICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5p
c1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmlu
ZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBmZDdiMGMzNDBhMDQuLjc1YjMwOTFjZjgx
YzcyOTZmZTJmYWZlOWE5Njc2NTM2Mjk5NzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7
IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2Rl
OjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1i
ZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBm
YWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRo
aXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFi
bGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVN
b2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9
CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgp
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQogICAgIHNpemVfdCBw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCisgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogCiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGRiZTQyZmE1ZmUyNjMwNGU4
NmVlMjAxM2IxMDBjYWJiMjIxYzQyOWMuLjVkN2VmMzc2NmFjMGQ2OWIzNTU0NmFmN2U3OTFjZTk0
OWJiNDJkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03OSwyOCArNzksMzAgQEAgQ2FsbFR5cGUgRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQog
fQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24p
CitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlKQogewogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3Io
ZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHJl
dHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbik7CisgICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGds
b2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKTsKIH0KIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgCiAgICAgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlcikKKyAg
ICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewogICAg
IC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9y
IHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3Mu
aXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1
bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1h
a2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0
cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0g
ICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0
cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyks
ICJcbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJh
dG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgie2Z1bmN0aW9uICIpOworICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyonKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmlu
ZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKSk7CkBAIC0xMjYsOSArMTI4
LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KAogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBB
cmdMaXN0JiBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0
UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnlt
b3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMjJl
Y2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3ZDJlMy4uZDExZmIyYTM3NGQ2MTkxNTBj
OWQ2YzQyNjI5YmE5MWNjMTIwNWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYsMTIgKzU2LDE3IEBAIGNsYXNz
IEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiB9OwogCi1KU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKLUpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsK
K2VudW0gY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIHsKKyAgICBGdW5jdGlvbiwKKyAg
ICBHZW5lcmF0b3IsCit9OworCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRp
b24mLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkZ1bmN0aW9uKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAg
IEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50
aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGlu
dCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSk7CisgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RG
OjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyID0gLTEsIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQz
YmRhYTg1MWVjOGY3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
KworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0
b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworCitHZW5lcmF0b3JGcmFtZTo6
R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCisgICAg
OiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7Cit9CisKK3ZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzOyArK2kpCisgICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKK30KKworU3RydWN0dXJl
KiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCit7CisgICAgR2Vu
ZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxs
LAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxv
Y2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JG
cmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQorewor
ICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5l
cmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFj
ZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOworICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7CisgICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlz
LCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1
ZSgpKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKK3sKKyAgICAv
LyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgorICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0
b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQu
CisgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
KyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkp
ID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7CisgICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgLy8gU2luY2Ugb25seSB0cnVlIGNl
bGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVt
LgorICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2Jq
ZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnJh
bWVfaAorI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOwor
I2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5k
IGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0
YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCisgICAgewor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihi
aXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7CisgICAgfQorCisg
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCisgICAg
eworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAg
ICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTG9jYWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFt
ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
dW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZM
b2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7
CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0
YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisgICAgdm9pZCBy
ZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7
CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOworCisgICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4ZjU4OTMxZmM1NTIwYTVjMjIwMTVlMjVmNzAyYTdkNmUwOTc5ZTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgi
CisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAg
Ly8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVy
YXRvcikpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
SG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZjNGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlvbjsKK30KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUp
CisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4ZjJlMzFiZDMxMWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhk
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRl
ICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKworY29uc3QgQ2xh
c3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
OjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTljMzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQy
NTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIzOTcxNzRjYWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
KworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVy
YXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01F
VEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4
dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJldHVybiAgICBKU0J1
aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0aHJvdyAgICAgSlNCdWlsdGluICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3ZvaWQgR2VuZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2
bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVN
YXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29sIEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUs
IGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0
MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JQcm90b3R5cGVfaAor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVy
YXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEdlbmVyYXRvclByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
ICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9
CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRjMDNlN2IwMjJmMWM2NjlkMzk3YTliNzdiNWVmMjRlOTVmNTIwNmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JUaGlz
TW9kZV9oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNNb2RlX2gKKworbmFtZXNwYWNlIEpTQyB7CisK
Ky8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0
aW9uYWxsb2NhdGUKKy8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlz
dC1uZXd0YXJnZXQKKy8vIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24s
IGl0cyBbW0NvbnN0cnVjdG9yS2luZF1dIGlzIGFsd2F5cyAiZGVyaXZlZCIuCisvLyBUaGlzIG1l
YW5zIHRoYXQgT3JkaW5hcnlDYWxsQmluZFRoaXMgaW4gc2VjdGlvbiA5LjIuMiBpcyBuZXZlciBl
eGVjdXRlZCBmb3IgR2VuZXJhdG9yRnVuY3Rpb24uCisvLyBTbywgd2hlbiB3ZSBleGVjdXRlIHRo
ZSBmb2xsb3dpbmcsCisvLworLy8gICAgIGZ1bmN0aW9uICpnZW4oKQorLy8gICAgIHsKKy8vICAg
ICAgICB5aWVsZCB0aGlzCisvLyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBn
ID0gZ2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlzfCBzaG91bGQgYmUgZ2xvYmFsLgorLy8gICAg
ICAgICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcg
PSBuZXcgZ2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlzfCBpbiBnZW4gc2hvdWxkIGJlIFREWiAo
YW5kIGl0IHdvbid0IGJlIGZpbGxlZCkuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0K
Ky8vCisvLyBUaGUgZm9sbG93aW5nIGZsYWcgbWFuYWdlcyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVy
YXRvckZ1bmN0aW9uIGlzIGNhbGxlZCBhcyBhIGNvbnN0cnVjdG9yLCBpdCByZXR1cm5zIGEgR2Vu
ZXJhdG9yIHRoYXQgZnVuY3Rpb24gaGFzIEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSBmbGFnLgor
Ly8gSW4gdGhpcyBjYXNlLCB3aGVuIGFjY2Vzc2luZyB8dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBl
cnJvciBvY2N1cnMuCitlbnVtIGNsYXNzIEdlbmVyYXRvclRoaXNNb2RlIDogdW5zaWduZWQgewor
ICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9OworCit9CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JU
aGlzTW9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNlNjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBh
NWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwxMiBAQCBib29sIEpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAg
ICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkt
PmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAg
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXRE
aXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVh
MmUyZDE5ODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJv
cGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5l
cmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5j
dGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2Nv
cGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVj
dCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1
bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBl
eGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1
cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRv
ckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9y
RnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRl
KHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24i
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rp
b24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2
NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAor
I2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNH
ZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3Mg
SklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0
aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAg
ZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
CisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAg
IE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dN
b2RlID0gMgorICAgIH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisK
KyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVh
dGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShz
aXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGlu
ZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2Vu
ZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1w
bChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGVmZWFlNTMzMTViNzUxNTljMjRjYWU3
Y2M5ZTA0MThjYjQwMGNkM2IuLmY3YjBiOTVjZTIxMGE1YzY0OTY4MmIyYTI3NDA4NDlhZjBjOTFl
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpA
QCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0Rv
bGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFU
RV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFt
ZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Cisg
ICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRF
X1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTQg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
QVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxp
dGVyYWwoIlVSSUVycm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iq
IGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKKworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAg
IG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAg
ICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51
bSk7CkBAIC01NTEsNiArNTY0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZl
VGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCks
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5h
bWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0
b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07
CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0
YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTgxOCw2ICs4MzIsOCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAt
ODUwLDYgKzg2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEw
MzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3NjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxv
Y2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTIyOSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJh
cnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVy
PFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0
ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsK
KyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yUHJvdG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlw
ZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAg
LTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNl
dDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0
b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAK
ICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29w
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9
CkBAIC01MDYsNiArNTEzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggODAwYTc4
NjllNTRiNzVkNWM4ZDI4YTUwZDk3YTFlMGI3N2I1MDYzYS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNi
ZWZiNThlZTdkZGZjMDZjNTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dy
YW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5
emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9y
LmlzVmFsaWQoKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9i
amVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNh
OWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBib29sIGVu
YWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQog
ICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhp
cywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
dGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4
ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5ZjI5OGUwYjhlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRU
eXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0
YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi55YW1sCmluZGV4IGUwYmMzZDUxZmI2YzdhOGYwODliYTRkODdkNGU2NGM2YTk3MGJl
NTAuLjExYTRiZjQ2NGU2NGM3ZmYwN2NlZmU0NzIxNDk2OTRjMzJkMjhiNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcxOSw3ICs3MTksNyBAQAogLSBwYXRoOiBlczYv
QXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9t
X2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9n
ZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJy
YXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJs
ZXMuanMKQEAgLTcyNyw3ICs3MjcsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhv
ZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9n
ZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFw
X2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9pbnN0
YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NTMsNyArNzUzLDcgQEAKIC0gcGF0aDogZXM2L2Rl
c3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1
cmluZ193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBh
dGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVz
LmpzCkBAIC03NjMsNyArNzYzLDcgQEAKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfaXRlcmF0
b3JfY2xvc2luZ190aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9y
Li5vZl9sb29wc193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRo
X2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9m
b3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC04
MDMsNTUgKzgwMyw1NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJp
YWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuY29uc3RydWN0b3IuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2Vu
ZXJhdG9yUHJvdG90eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnJldHVy
bi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnRocm93LmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
YmFzaWNfZnVuY3Rpb25hbGl0eS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NhbnRfdXNlX3RoaXNfd2l0aF9uZXcu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYg
OmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb3Jy
ZWN0X3RoaXNfYmluZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVyYXRvcl9mdW5jdGlvbl9leHByZXNz
aW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJh
dG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHNfY2xh
c3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX3N0cmluZy1rZXllZF9zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhv
ZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFp
bAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyYXRv
cl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
dGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfb25fbm9u
LWl0ZXJhYmxlc19pc19hX3J1bnRpbWVfZXJyb3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3Nw
YXJzZV9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3N0cmluZ3MuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01hcF9pdGVyYXRvcl9jbG9zaW5nLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBfTWFwW1N5bWJvbC5zcGVjaWVzXS5q
cwpAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jf
d2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5jdGlvbl9jYWxscy5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRv
cl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0
b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXNfaW5fYXJyYXlzLmpz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCmluZGV4
IGE4YjliNTNjY2NmYWUxYTViNWE2NmMxM2JkMjNlOGNhZTUyN2FhYTQuLjlhODIxMzJhNjBmYzBl
NzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xv
YmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBf
X2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMg
fHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJh
dG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsK
KyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBk
b25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVy
biddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307
CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9y
OyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVy
YXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9p
dGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCmluZGV4IGI0Yzc0NTM5MzI2Yzg5
NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUyZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0
ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9
PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVh
dGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9
OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikg
eworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5l
eHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTog
YXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwK
KyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRl
cmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQor
cmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3Ig
PSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZy5qcwppbmRleCA2ZjY4MmY1YTE2Y2FiOWU4YjVkMjY5YWRlNDJlODNh
ZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlhYzg4ZmY4ZWE4NGRmYWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKQEAgLTEsMyAr
MSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFs
ID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2Rz
KSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVu
Y3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0
aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
eyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAn
cmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10K
K307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5j
dGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rp
b24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9ICcnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2lu
Z192aWFfdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwppbmRleCA0NGEwNjVh
OTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4xZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0
OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAo
dHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQor
ZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMg
PSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5
bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRl
cmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIu
c2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRo
b2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVy
YWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVy
biBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewog
CiB2YXIgY2xvc2VkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1
bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjM2JjZDlhN2UxODgzNzA3MGNhZWU4ZGY4YmNiMTY5Yjc1
NTU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDMxIEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmlu
ZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFycmF5KGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBzaG91bGRCZShhY3R1YWwubGVuZ3RoLCBleHBlY3RlZC5sZW5ndGgpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHByaW50KEpTT04uc3RyaW5naWZ5KGFjdHVhbCkp
OworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KK30KKworCitmdW5jdGlv
biAqZ2VuKGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiB0ZXN0OworfQorCitsZXQgZyA9
IGdlbigxLCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0KCk7CitzaG91bGRCZShm
dW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY0NzhmYTIz
ZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCkBAIC0w
LDAgKzEsMTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAg
IHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIg
PSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBj
OworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwg
Mik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7
IjAiOjQyLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIs
IjEiOjQyLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQy
LCIyIjo0Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEs
IGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEo
MCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4
dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihh
LCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIy
IjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisg
ICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsK
KyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAg
eWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3Mt
bWV0aG9kcy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDY1Y2ViMWY0MzZj
MDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anMKQEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0
cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAg
ICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAg
ICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVzdFN5bnRheEVycm9yKGAK
K2NsYXNzIENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQorICAgIHsKKyAgICB9Cit9CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3Rv
cicuYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgICpvaygpCisgICAgewor
ICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBD
b2NvYSB7CisgICAgc3RhdGljICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9
Cit9CitgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjVhNTRhMmRj
NDEyNzA3OWMzMWNmZDMxZjliMzFjZjUwYWQ2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCkBA
IC0wLDAgKzEsNjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2NsYXNzIEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAg
ICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KKworICAgIHN0YXRpYyAq
c3RhdGljR2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRo
aXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgp
OworICAgIGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7Cisg
ICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0
IGcgPSBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOworfQorCit7CisgICAgbGV0
IGcgPSBBLnN0YXRpY0dlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IEEuc3RhdGljR2VuKCk7Cisg
ICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBBLnN0YXRpY0dlbigpJylgKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOWJkNzhkZjc2YTBjYjc1OGI4MWVlYWIyYzI1NWI5ZGFkMWI0NDc1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10
aGlzLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2
YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25v
dCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQor
CitmdW5jdGlvbiAqZ2VuKCkgeworICAgIHlpZWxkIGV2YWwoInRoaXMiKTsKK30KKwordmFyIGcg
PSBuZXcgZ2VuKCk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0KCkudmFsdWU7Cit9
LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5g
KTsKKworY2xhc3MgQiB7IH0KKworKGZ1bmN0aW9uKCkgeworICAgIGV2YWwoJ3RoaXMnKTsKKyAg
ICBldmFsKCd0aGlzJyk7Cit9KCkpOworCitjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgY29uc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgQSgpOworfSwgYFJlZmVyZW5jZUVycm9yOiBD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEMgeworICAg
ICpnZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgeWllbGQgZXZhbCgndGhpcycpOworICAgIH0K
K30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQg
ZyA9IG5ldyBjLmdlbmVyYXRvcigpOworICAgIGcubmV4dCgpOworfSwgYFR5cGVFcnJvcjogZnVu
Y3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBjLmdlbmVyYXRvcigp
JylgKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcg
PSBjLmdlbmVyYXRvcigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBjKTsKK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTZh
ZTVmZDE5ZjlkOGM4YjA4ZGU2YjBlZDZhNWJhZTc1YWZkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25z
dHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcgRnVu
Y3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVyYXRv
ckZ1bmN0aW9uLCAndW5kZWZpbmVkJyk7Cit2YXIgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IChmdW5jdGlvbiAqKCkgeyB9KS5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShnZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Zjc3MzZjNDIzNGUxODc5MTBiOGNhNjM1M2NiZjQ1YjBkNjAwNmI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24t
bmFtZS5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9rID0gZnVuY3Rpb24gKmdl
bmVyYXRvcigpCit7CisgICAgeWllbGQgZ2VuZXJhdG9yOworfTsKKwordmFyIGcgPSBvaygpOwor
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9y
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9k
cy13aXRoLW5vbi1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2MWQ5MzA3NjBkMjBlZTZlZjRj
ZTU3MDNlZjczYjlmZjlhZTU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpz
CkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4o
KSB7Cit9Cit2YXIgZyA9IGdlbigpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0
LmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmAp
OworCisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnRocm93LmNhbGwoe30pOworfSwgYFR5
cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgZy5yZXR1cm4uY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hv
dWxkIGJlIGEgZ2VuZXJhdG9yYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhNGRj
OGNlMDc2YzczMWM0MjRhODg1ZmIzOGUzNTdlNDkzZmZmNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpA
QCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbmVyYXRvckZ1bmN0aW9uKCkg
eworfQorbGV0IGdlbmVyYXRvciA9IGdlbmVyYXRvckZ1bmN0aW9uKCk7CisKK3Nob3VsZEJlKGdl
bmVyYXRvciBpbnN0YW5jZW9mIGdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKHR5
cGVvZiBnZW5lcmF0b3IuX19wcm90b19fLCAnb2JqZWN0Jyk7CitzaG91bGRCZShnZW5lcmF0b3Iu
X19wcm90b19fLCBnZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUpOworCitsZXQgR2VuZXJhdG9y
UHJvdG90eXBlID0gZ2VuZXJhdG9yLl9fcHJvdG9fXy5fX3Byb3RvX187CisKK2xldCBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXzsKK2xldCBH
ZW5lcmF0b3JGdW5jdGlvbiA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXy5jb25zdHJ1Y3Rv
cjsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSwgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VvZiBHZW5l
cmF0b3JGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3Rv
X18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLl9fcHJv
dG9fXywgRnVuY3Rpb24ucHJvdG90eXBlKTsKKworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUucHJvdG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUpOworc2hvdWxkQmUoR2VuZXJh
dG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisK
K2xldCBhcnJheUl0ZXJhdG9yID0gW11bU3ltYm9sLml0ZXJhdG9yXSgpOworbGV0IEFycmF5SXRl
cmF0b3JQcm90b3R5cGUgPSBhcnJheUl0ZXJhdG9yLl9fcHJvdG9fXzsKK2xldCBJdGVyYXRvclBy
b3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuX19wcm90b19fOworCitzaG91bGRCZShJ
dGVyYXRvclByb3RvdHlwZSwgR2VuZXJhdG9yUHJvdG90eXBlLl9fcHJvdG9fXyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4t
YmVmb3JlLWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5NmEy
MTdmNzJjODdjMDg5OGU1OTA5YWJhZjM4NWJmMjA4OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7
CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAg
ICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOworZy5yZXR1cm4oIkhlbGxvIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
dGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ODBhZjZlMDc4OWRjMThiYmFkM2EwYWZiYmY1YWQ5YTg1ZWMx
MzVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItdGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KKworCit2YXIgZ2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycp
KCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgeWll
bGQgdGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBnbG9iYWwpOworICAgIH0KKyAgICB7CisgICAgICAg
IGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
ICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRo
aXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAg
ICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgInVzZSBz
dHJpY3QiOworICAgICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0
IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7
CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAgICB9LCBgUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICB9
CisgICAgeworICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAgICBsZXQgZyA9IGdl
bi5jYWxsKHRoaXNPYmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdGhp
c09iamVjdCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3ctYmVmb3JlLWZp
cnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUxOGVhYzBkOWEzZTQx
ODc5ZWRkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMjAg
QEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7
Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBn
ID0gZ2VuKCk7Cit2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7Cit2YXIgdGhyb3duID0gbnVs
bDsKK3RyeSB7CisgICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNoIChlKSB7CisgICAgdGhyb3du
ID0gZTsKK30KK2lmICh0aHJvd24gIT09IGVycm9yKQorICAgIHVucmVhY2hhYmxlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRo
LW5ldy10YXJnZXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci13aXRoLW5ldy10YXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzYjJkZjk5YTg0ODBjYjM1YTdk
ZDZiMzRlNjYyNTM2ZWFiOGRiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcwpAQCAtMCwwICsx
LDE1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgeWllbGQgbmV3LnRhcmdl
dDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmlu
ZWQpOworCit2YXIgZzIgPSBuZXcgZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5k
ZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTNjNzkxNzM4ZWNmOGI5
ZDM0OTgzNWVhODNiZjhkNmM4OTc3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC0wLDAgKzEs
ODIgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHJldHVybiBldmFsKCdzdXBlcicpOworICAg
IH0KKworICAgIHNob3VsZFRocm93KCgpID0+IHRlc3QoKSwgYFN5bnRheEVycm9yOiBzdXBlciBp
cyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpn
ZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIuZ2VuKCknKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgICAgIGEuZ2VuKCkubmV4dCgpOworICAgIH0sIGBTeW50YXhFcnJvcjogc3VwZXIgaXMg
b25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOwor
ICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAgICAqZ2Vu
KCkgeworICAgICAgICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUs
IDQyKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdl
bigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNs
YXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1
cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbmV3IGEuZ2VuKCk7CisgICAgfSwgYFR5cGVF
cnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhLmdl
bigpJylgKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVj
YzM1MzA1MTRjMjBlZDU2Njg4YTZhMjk4Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2Nj
ZTRlNGIxNTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNs
YXNzIEZhc3RCaXRWZWN0b3IgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgotICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAg
IHsKICAgICAgICAgdW5zaWduZWQgbiA9IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBuOyArK2kpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0
Qml0VmVjdG9yIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5
YjY3ZmQyY2RkODZmMTIwMTNjNjQ4Li5mNDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlm
NDU5MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2Vu
ZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIDAKKyNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNl
bmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBl
MTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0
M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBF
TkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVO
QUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9
IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5B
QkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9N
T0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9F
UzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0
NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdh
NWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJM
RV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxF
X0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5B
QkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVf
RVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVM
RVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJM
RV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1
NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0
OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9
IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsK
IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9
IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9F
UzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVh
NzBhYjQ3YzYzZTNjLi4wMmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJM
SUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJ
QyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCmluZGV4IGQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAw
ZWRiYzAxM2JmZjY2ZjdhMDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVh
dHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBw
b3J0IEVNRSB2MiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50
YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xlIEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFU
RSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRv
Z2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBz
dXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZf
TU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRv
Z2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJhbCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmls
dGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTc4YWJiOTQyOGZkZTFjZTk5MzUwZWE4YmVi
OWZkM2Q3NTI0MjMwYy4uNzJjZDI2NTAyZjMwNTNjMTI1OTZmZjViMzI4YzZlYWZjNjNkMGFiOCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE1LTExLTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZv
ciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG06CisKIDIwMTUtMTEtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHVu
Y29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4
IGNkZWI1MjVjZjk0YjVhOGUxMjFiYTI0ZTM3OWQyMzNkNjkxYzZiODkuLjQ2MjE4ODE1YjE1M2M1
MzI5OWJjMjcxZDliNzdmNzQ4YWQzMDcwNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KQEAgLTE4NSw3ICsxODUsNyBAQCBCRUdJTgogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWCIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjbGFzc1N5
bnRheCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlbmVyYXRvcnMiLCBkZXNjID0+ICJUb2dnbGUg
RVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VO
RVJBVE9SUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZh
bHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJtb2R1bGVz
IiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfRVM2X01PRFVMRVMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbW9kdWxlc1N1
cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OTFhMTc3
Y2UzZDNmMGVhOTRlNmFkNGM2NDAzZWIzOTlkY2M5YzM0Li42NWUyYTAzMzRjNGQ0NWU1OTU1MmNk
ZWE4MTc1MTgwNTg2YmI3YTJhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1
cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZToKKwogMjAxNS0xMS0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlvbnNHVEsuY21ha2UgYW5k
IE5FV1MgZm9yIDIuMTEuMiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggMGM4YWYyYWJiMTEyNDhl
YmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4uYWE0NzFlZDZmOWVlZDc1MDVhM2ExODIyMjZlYThl
ZTYyOGM3ZmY0MSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9X
ZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1w
bGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFi
bGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAg
ICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUt
MTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5j
YW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFn
cyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlvbnMgQVBJIGFuZCBtb2RlbC4KZGlmZiAtLWdpdCBh
L1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBi
L1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpp
bmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJlNGRmYTc5MjlkN2UzM2NjZGNmLi5iMDdkYzUwYWJl
MjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4OGVkIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJp
ZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGli
cmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC0zMiw3ICsz
Miw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
Mj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPC9FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPgot
ICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JT
PkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFC
TEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4KZGlmZiAtLWdpdCBh
L1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnBy
b3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fp
cm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFmMTU4ZWM1ZWU0ODNkMDY5NmM3MWNlNDg2NDEyZC4u
ZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2OWExYTk4MzUzODBhOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMK
KysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fp
cm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAKICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQg
Lz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0gICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgor
ICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVf
RVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJMRV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVf
RVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9T
WU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9G
SUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266224</attachid>
            <date>2015-11-29 10:22:09 -0800</date>
            <delta_ts>2015-12-01 01:20:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151130032147.patch</filename>
            <type>text/plain</type>
            <size>332981</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDRkNzZiNzBkZjdhNGIyN2Q0YmI4OTVhYTg1ZTM5NWE5MWE3MDNlLi4wMzY2ZGE1ODAzMzFkODY4
YWIxNjdlY2Q4OTI1MTlkMjJmZDVhYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MDQgQEAKKzIwMTUtMTEtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIGFjdHVhbGx5ICpkZWYqaW5l
ZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAgICAgICAgMy4gR2VuZXJhdG9y
RnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5lcmF0aW5nIEdlbmVy
YXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQgYmUgZXZhbHVhdGVk
IGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBsZSwKKworICAgICAg
ICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHlpZWxkIGI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7ICAvLyBOb3csIGhl
bGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHdlIGV2YWx1
YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRlciB0aGF0LCB3ZSBj
cmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhpcyBjYW4gYmUgZXhw
bGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIDQu
IG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBqdW1wCisKKyAgICAgICAgV2Ug
d29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFjdHVhbGx5LiBCdXQgd2UgYWRk
IGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9zYXZlIHRvIHRoZSBwb2ludCBz
byBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29uc3RydWN0IHRoZSBDRkcgYXMg
Zm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0b3Igc3dpdGNoKSAtPiAoaW5p
dGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1lcmdlIHBvaW50KSAtPiAobmV4
dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
fAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4o
b3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGluZyBzdWNoIGEgZ3JhcGgsCisK
KyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZyb20gKG9wX3NhdmUpIHRvICht
ZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVzZSogbG9jYWxzIHRoYXQgYXJl
IGRlZmluZWQgYmVmb3JlIChvcF9zYXZlKQorICAgICAgICAgICAgMi4gb3Bfc2F2ZSBzaG91bGQg
Y2xhaW0gdGhhdCBpdCBkb2VzIG5vdCBkZWZpbmUgYW55dGhpbmcuIEFuZCBjbGFpbSB0aGF0IGl0
ICp1c2UqcyBsb2NhbHMgdGhhdCBhcmUgdXNlZCBpbiAobWVyZ2UgcG9pbnQpLgorICAgICAgICAg
ICAgMy4gYXQgb3BfcmVzdW1lLCB3ZSBzZWUgKnVzZSpkIGxvY2FscyBhdCBtZXJnZSBwb2ludCBh
bmQgZGVmaW5lIGFsbCBvZiB0aGVtLgorCisgICAgICAgIFdlIGNhbiBkbyB0aGUgYWJvdmUgdGhp
bmdzIGluIHVzZS1kZWYgYW5hbHlzaXMgYmVjYXVzZSB1c2UtZGVmIGFuYWx5c2lzIGlzIGJhY2t3
YXJkIGFuYWx5c2lzLgorICAgICAgICBBbmQgYWZ0ZXIgYW5hbHl6aW5nIHVzZS1kZWYgY2hhaW5z
LCBpbiBvcF9zYXZlIC8gb3BfcmVzdW1lLCB3ZSBvbmx5IHNhdmUgLyByZXN1bWUgbGl2ZSByZWdp
c3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgKiBBUEkvSlNTY3Jp
cHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUlu
dGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6IEFkZGVk
LgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAo
cmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6
OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8p
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZv
Ojppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omdl
bmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVy
QmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1l
dGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3Rl
ckZvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpU
aGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JD
YWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJ
bkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRs
L0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50
cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAqIGZ0bC9GVExGb3JP
U1JFbnRyeUpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5j
X2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpw
cm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlND
OjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNv
dXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAg
ICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5n
dGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JUaGlzTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzOgor
ICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0
b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzOgorICAgICAgICAo
aXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAg
ICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qczoKKyAgICAgICAg
KGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAg
ICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKGcxKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNz
LW1ldGhvZHMtc3ludGF4LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50YXgpOgorICAgICAg
ICAodGVzdFN5bnRheEVycm9yKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5Db2NvYSk6Cisg
ICAgICAgICh0ZXN0U3ludGF4LkNvY29hLnByb3RvdHlwZS5vayk6CisgICAgICAgICh0ZXN0U3lu
dGF4LkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2Eub2spOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChwcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKHN0YXRpY0dlbik6
CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZXZhbC10aGlzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKEIpOgorICAgICAgICAoQSk6CisgICAgICAgIChDLnBy
b3RvdHlwZS5nZW5lcmF0b3IpOgorICAgICAgICAoQyk6CisgICAgICAgIChUeXBlRXJyb3IpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1u
YW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG9rKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXJlbGF0aW9ucy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChnZW5lcmF0b3JGdW5jdGlvbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodW5yZWFjaGFibGUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJl
LmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
d2l0aC1uZXctdGFyZ2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KGdlbik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
Qi5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoQS5wcm90b3R5cGUuZ2Vu
KToKKyAgICAgICAgKEEpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQt
c3Rhci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJv
dyk6CisgICAgICAgIChwcm90b3R5cGUuY2FsbCk6CisgICAgICAgIChBcnJheXMpOgorICAgICAg
ICAoQXJyYXlzLnByb3RvdHlwZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoSXRlcmF0b3Iu
cHJvdG90eXBlLm5leHQpOgorICAgICAgICAoSXRlcmF0b3IucHJvdG90eXBlLnN0cmluZ19hcHBl
YXJlZF9oZXJlKToKKyAgICAgICAgKEl0ZXJhdG9yLnByb3RvdHlwZS5TeW1ib2wuaXRlcmF0b3Ip
OgorICAgICAgICAoSXRlcmF0b3IpOgorICAgICAgICAoZ2VuKToKKwogMjAxNS0xMS0yNCAgQ2Fp
dGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIHN1cHBvcnQg
Q29tcHV0ZWQgUHJvcGVydHkgTmFtZXMgaW4gZGVzdHJ1Y3R1cmluZyBQYXR0ZXJucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4
MGE1Nzk0YzA2ZjRmYWIwOWZmMDNhNjQxNzgwZTNmMjZhYzNhZDhkLi5kZDQ4ZmZiOWRhOTNiM2My
MDRhODI5ZWExYmNjY2NiZjViZjQ4MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTExLTI5
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZd
IEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQg
ZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0
VmVjdG9yOjpmb3JFYWNoU2V0Qml0KToKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoK
KwogMjAxNS0xMS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogdGVtcG9yYXJ5RmlsZVBhdGgubGFzdCgpID09ICcv
JyBpbiBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDcwM2I2Zjg2
MmIzNjEwMjJmMDk0Y2M5MTcwYjIwNzZjMzhkOGFkMC4uMzNjN2Y4MGU2OGQzYjQyYWE1NTliN2U1
OGQ1ZWY2Y2Y0NTY3ODcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTI5
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZd
IEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQg
ZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwog
MjAxNS0xMS0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVh
Y2ggTWluaUJyb3dzZXIgaG93IHRvIGVuYWJsZSB0aGUgbW9jayBjb250ZW50IGZpbHRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDNiOTlmNDg4MTkxY2EyMzA2MWVkMjBkNzhlODcxMzMxZDQ1MWU0NjAu
Ljk1OWJlOWU4M2RlZmY1NTliOGM5YmFiYmQ5OGI4MDY0NzhlZGJmMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEgKzEsMTAgQEAKKzIwMTUtMTEtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1
cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ct
MjAxNS0xMS0yMSA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUyNDg2ZGIxMTAzZWM4NzQ0NjEzYWU2ZWM1MGQ5
ZTQ4ZjFhZTY2ZjQuLjk0NzUzOWI1YTUxMTU0YWI1ZTRhNjFjYTc4NTBjNGM5YmUyM2IxMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMS0yOSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFz
ZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTEtMjMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSB0
aGUgbmV0d29yayBwcm9jZXNzIHVuY29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJlOTczYzU3NmMxOWY2
OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5MzdkMzA5MzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFyc2U8SlNDOjpQ
cm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAgICBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGE5MWVmNjZhNWFjNDEwMWQ1MmI3OWUzYzY2M2M0Y2QxZWMy
OWRiNDIuLjk0NjU1ZTU0NTkwY2VkMWVmMzYyM2ViZjM4YjQxOTcwMThlNzBhODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2Myw2ICs1NjMsMTAgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisg
ICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9JZGVu
dGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjAyLDYgKzYwNiw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTRGF0
ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiAg
ICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cApAQCAtNzM3LDYgKzc0Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJD
RVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTE5NSw2ICsxMjAxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3
NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19Q
Uk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NM
QVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJB
VE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJ
VEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAzNzU4YTM2MzY0ZDk3YzM1ODNjOTE2ZjNmM2Q5ODVhNDg3N2Y5MmM2Li43NjhlYmFhNjI5Nzcy
ZjZkZWQ3OThhN2U2ZDdmODFkZWUwZWI2ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNiArODQsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5UHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblByb3Rv
dHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVDVF9MVVRfSEVBREVS
UyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQcm90b3R5cGUubHV0
LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0b3JQcm90b3R5cGUu
bHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBcCiAgICAg
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xsYXRvclByb3RvdHlw
ZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAzZTdm
OTk0ZTMwN2M0NmQwM2I3NGI5NzlmNTFiZTY1NmU1OWFjMDQzLi5jYWZlMWYyNzM0OGNlYmVhMTk0
ZTZjNzU4MWYwZjNhM2UzNTU0ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKQEAgLTc1Niw2ICs3NTYsMTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5NSw2ICs3OTksNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0NSw2ICs5NTAsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVDb25zdHJ1Y3Rvci5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oIiAvPgpAQCAtMTUxNSw2ICsxNTIxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
YXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxT
b3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNv
dXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwMSw2ICsxNjA4LDExIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3Rv
dHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJh
cmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY09mZnNldC5oIiAvPgpA
QCAtMTY2MCw2ICsxNjcyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNGbG9hdDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNGbG9hdDY0QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNGdW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwppbmRleCBhNmQzZmYwMGUyNTAzYWNiYzM2NzkwYTM2ZTZlZTQzN2E5
MzRiZmE4Li4xYjk3OGVlNDgxYzE4NDg3YTgyNTM1ZGY3Nzk4NTAxNTgyN2ExY2ZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02NjYs
NiArNjY2LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9u
UmFyZURhdGEuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFt
ZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
clByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNldHRl
ci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC03NDcsNiArNzU5LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9y
RnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVj
dC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC0yNjEyLDYgKzI2MjcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XFNvdXJjZUNvZGUuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVLZXku
aCI+CisgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiPgogICAgICAg
PEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI4MTMsNiArMjgz
MSwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVE
YXRhLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmgiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MTgsNiArMjk1MSw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI4Miw2ICszMzE4LDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJvclByb3RvdHlw
ZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291
cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4KICAgICAgIDxGaWx0
ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGIzYzI1ZTZkNjM5MTk3NWQyZWQxYzUyNjk5YjEwNTcxNjc2
NGJmZDcuLjVkZTcxZmZjMTMyYzUyMjAzN2JlMzYxNzQxNzdkNTI1ZWFhMWIwOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsMTkgQEAKIAkJNzA5RkI4NkIx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIw
QTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0
QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07
CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg5MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQk3MEI3OTE5
OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclRo
aXNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5QjFDMDI0QTQ2
MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi87IH07CisJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAv
KiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE5MDFDMDI0
NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREMzRTA5MUIyREYyQzcwMDA1NDI5
OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90
b3R5cGUuY3BwICovOyB9OwogCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREU5QTA5MUJFN0Q2
OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3Nl
bWJseS5oICovOyB9OwpAQCAtMzI3MSw2ICszMjg0LDIwIEBACiAJCTcwOUZCODY1MUFFMzM1QzYw
MDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50
aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
Qjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JQcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yVGhpc01vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
Qjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNv
ZGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQ29kZUtleS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUubHV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5
OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRB
c3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2VtYmx5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDg1LDYgKzUxMTIsNyBAQAogCQkJ
CTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8sCiAJ
CQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAor
CQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmgg
Ki8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICov
LAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5o
ICovLAogCQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMTMsNiArNTI0MSw3IEBACiAJCQkJODY5RUJD
QjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3MzA2
QzhCMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFGQTAw
QTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIg
LyogU291cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBT
b3VyY2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNv
dXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGUuY3BwICovLApAQCAtNTM0Miw2ICs1MzcxLDE1IEBACiAJCQkJRjY5MkE4
NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQz
OEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJE
MzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBCNzkx
ODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3OTE4
NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4NTFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAxMTFBQTkwOTExMDBE
MzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEyMUFBOTA5MTEwMEQz
M0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBGRTA1MDEzMUFBOTA5
MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDQxLDYgKzU0NzksOCBAQAog
CQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlG
NjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCTcwQjc5MThD
MUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk3MEI3
OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAogCQkJCTBG
MkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAog
CQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02NTUzLDYgKzY1OTMs
NyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLywK
IAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi8sCiAJCQkJ
QTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmpzICovLAorCQkJ
CTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5qcyAqLywKIAkJCQlF
MzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5qcyAqLywKQEAgLTY5NjYsNiArNzAwNyw3IEBACiAJCQkJQTczNzgxMEUxNzk5
RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
Q0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyog
REZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzAxNSw2ICs3MDU3LDcgQEAKIAkJCQkw
RjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZGMThBNjAwNzAw
MDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5OTFD
MDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkExN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTcy
MzUsNiArNzI3OCw3IEBACiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZD
RTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQx
RDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5
MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0E4QUYzQTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVhZGVy
cyAqLywKQEAgLTcyNjEsNiArNzMwNSw3IEBACiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0
IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBEQzNFMEExQjJE
RjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0
NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNTBFMTZG
NUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCBpbiBIZWFkZXJzICovLApAQCAt
NzQwNCw2ICs3NDQ5LDcgQEAKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJp
bmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJy
YXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZEMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc0NDAs
NiArNzQ4Niw3IEBACiAJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2NUU3IC8qIExp
bmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk1MUMwMjRBMjgw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVPYmplY3REYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEgLyogTGl2ZU9iamVj
dExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMiw2ICs3NjU5LDcgQEAKIAkJCQlBNTVEOTNB
NjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3RDEyODU4MDA1RjVGRjkg
LyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OTBERDZFMTgyRjQ5OTcw
MDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcy
OTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NjQ0LDYgKzc2OTIsNyBAQAogCQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJp
bmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM4NzhFMUJGQkM0NEQwMEUzQUIx
RSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzQjEzNEZG
MEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QTFDMDI0
QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBI
ZWFkZXJzICovLApAQCAtODY2Miw2ICs4NzExLDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
NTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTlCMUMwMjRBNDYwMDI0
ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3
RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg2ODgs
NiArODczOCw3IEBACiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBK
SVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFCRTE4QzND
MDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5
MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRv
REZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTg4MjUsNiArODg3Niw3IEBACiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2
IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJGM0RBMTM5RjRCRTIw
MDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYxMTEz
NTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5
MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0
YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTcyLDYgKzkwMjQsNyBAQAogCQkJCTBG
RjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMg
aW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIxNThFQkQ1
ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODk4MCw2ICs5MDMzLDcgQEAKIAkJCQk3
OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZp
cmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMz
IC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0QTIzMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkx
QTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBh
My4uYTllNjliZWE2ZWVhZTU3OGI5MmQ5ODllMWU4OTE5MWEzMzQ4OTllZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8U291
cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKICAgICAgICAgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0p
IHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAg
ICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
ZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBz
b3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxl
cywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5l
cmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291
cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5hbWVWYWx1ZSh2bSwg
anNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0
YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYzllNzcyMThkMzlkMDUwOTY3OGZhOTBhZjA3
MTkyYjQxYWUyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZ2VuZXJh
dG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIEdlbmVyYXRvclN0YXRlLgorICAgIGNvbnN0IENvbXBsZXRlZCA9
IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworCisgICAgLy8gUmVzdW1lTW9kZS4KKyAg
ICBjb25zdCBOb3JtYWxNb2RlID0gMDsKKyAgICBjb25zdCBSZXR1cm5Nb2RlID0gMTsKKyAgICBj
b25zdCBUaHJvd01vZGUgPSAyOworCisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5l
ZDsKKworICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICdudW1iZXInKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOworCisgICAgaWYg
KHN0YXRlID09PSBFeGVjdXRpbmcpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5l
cmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IENvbXBsZXRlZCkgewor
ICAgICAgICBpZiAocmVzdW1lTW9kZSA9PT0gVGhyb3dNb2RlKQorICAgICAgICAgICAgdGhyb3cg
c2VudFZhbHVlOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICBpZiAocmVzdW1lTW9k
ZSAhPT0gUmV0dXJuTW9kZSkKKyAgICAgICAgICAgIHZhbHVlID0gc2VudFZhbHVlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0
YXRlID0gRXhlY3V0aW5nOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRv
ck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPT09IEV4ZWN1dGluZykgeworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBnZW5l
cmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAgICAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30KKwor
ZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
QGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogTm9ybWFsTW9kZSAqLyAwKTsKK30KKwor
ZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBSZXR1cm5Nb2RlICovIDEpOworfQor
CitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgZXhjZXB0aW9uLCAvKiBUaHJvd01vZGUgKi8g
Mik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDU0ZGZkMTY4Y2E2MDBlYmVmMTM1ODA0MzJjNzdlMjVhZDQ0
NGFkMGMuLjU5NjA2NGM0MDY4MjQ5NzgwODljNDY0M2YxYzNkZmJkMDUzNGI5OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29k
ZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OgogICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmlu
ZGV4IDI5OTBmYWUzNTQ4OTc5ZmVjN2NhMTg2NjkwOTFiYjA1ZTJhYzYyZTguLmI0OWI0ZjJiYmVh
ZTkwYzVkNjRmYzI5MTgyYTJjMTk5ZGFhZmUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkwLDYgKzkwLDggQEAKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmciLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDog
NCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIs
ICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1
bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxs
IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwi
LCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEyOSw3ICsxMzEsOSBAQAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfdG9faW5kZXhfc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCi0gICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9CisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBjNzdhYmVhYTI5MjA5ZTMyOTkxM2NkOTRj
ZmFkNzUxNTE5YmQ5OWYxLi43MjI4YjAzMzM2NmM3YTY3YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwg
d2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwog
Ly8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNl
RnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBz
dGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVz
ZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVj
dXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZp
cnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBs
b2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQg
ZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVu
IHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBj
b2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAg
ICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQp
KQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgp
KTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAg
ICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2Nr
LCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1Zh
bGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ug
d2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlvbiBoYW5k
bGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxh
ciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKQEAgLTEzOCwxMCArMTM4
LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBz
dGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAg
IG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2Rl
QmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwpAQCAtMTgwLDcgKzE4MCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5z
aWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnM7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNv
ZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAg
ICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9j
b2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAg
ICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ld
OwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAg
bV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAg
ICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggYTYxMzJjMzJhYWNlOTlhNzI5OGYzODQ5MWNiZjg4NmU1ZDY2Njg0NS4uZDNlYzE2NWY4
MzJhZWZlYWUyZWRiYWZjMTVkMmFiZDBkYmVjZjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNzAsOCArNzAsOSBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzog
Ci0gICAgY2FzZSBvcF9jb3B5X3Jlc3Q6IHsKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9w
X2NvcHlfcmVzdDoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDYgKzEyNSw3IEBAIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
OgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1
bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNlIG9w
X25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBj
YXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAtMTUyLDYgKzE1NCw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoK
ICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CisgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAg
IGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6IHsKQEAgLTIzMyw2ICsyMzYsMjIgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxs
cHRyOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2st
PnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7
CisgICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNDAsNyArMjU5
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC0y
NTUsNiArMjc0LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX3Byb2Zp
bGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRp
Y19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxNSw2ICszMzUsOCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9wX25l
d19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYXNl
IG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBj
YXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzkwLDcgKzQxMiwxNSBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm1fbnVt
VmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAg
cmV0dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICBS
RUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAg
YmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
ZmNhNjMwMTQ5MTgyNmJlZTEwMDEyNGMyZjZhZTQyZjE4ZGVmOTllZS4uM2Q4ODYxN2Q1ODEwZjAy
MTJhMzQ5Y2I0OTI5NmU4MGNmY2FhZGM4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICI6ICVsdSBtX2luc3RydWN0
aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsg
JWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihp
bnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgbV9u
dW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKKyAgICAgICAg
bV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJzKTsKICAgICBpZiAo
bmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAg
IG91dC5wcmludGYoIjsgbGV4aWNhbCBlbnZpcm9ubWVudCBpbiByJWQiLCBhY3RpdmF0aW9uUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50ZigiXG4iKTsKQEAgLTY4MCw2ICs2ODAs
MTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNp
emUoKSk7CiAgICAgfQogCisgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmludGYoIlxu
TGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAg
ICBkbyB7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7CisgICAgICAgICAgICArK2k7CisgICAgICAg
IH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUo
KSk7CisgICAgfQorCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTI5NCw2ICsxMzA2
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVu
YyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMxMSw2ICsxMzMxLDE0IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAgICAgICBwcmludENhbGxPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJv
ZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ5OSw2ICsx
NTI3LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2lu
dEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3Ip
LmRhdGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAg
ICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUp
IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTY2Myw3ICsxNzEyLDcgQEAgY2xhc3MgUHV0VG9TY29wZUZpcmVEZXRhaWwgOiBw
dWJsaWMgRmlyZURldGFpbCB7CiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X2dsb2JhbE9iamVjdChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcChvdGhlci5t
X2hlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhlci5tX251bUNhbGxlZVJlZ2lz
dGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1fbnVtQ2FsbGVlTG9jYWxzKQog
ICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3Rvcihv
dGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCh0cnVl
KQpAQCAtMTcyMCw2ICsxNzY5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3Jh
cmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRC
dWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5t
X3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9
IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAg
IAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTE3MzAsNyArMTc4MCw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9j
a1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgdGhpcywgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5saW5rZWRDb2RlQmxvY2stPmlz
Q29uc3RydWN0b3IoKSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0x
OTAwLDYgKzE5NTAsOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVw
IHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNl
dDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1l
bnRzOwogCisgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMu
CisgICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKwogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7
ICkgewpAQCAtMjE4OCw2ICsyMjQxLDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsK
KyAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
ZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6
ZSgpKQorICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMTk5LDYgKzIyNjEsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGOjptb3ZlKGluc3RydWN0aW9ucyk7CiAKKyAg
ICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGlj
aCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9w
X3Jlc3VtZS4KKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0g
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDog
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVu
ZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAg
ICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkg
YWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8g
cmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRl
ZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUg
YWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMjIyMiw3ICsyMjk4LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgZ2xvYmFsT2Jq
ZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwgbV9u
dW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBt
X251bVZhcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1fc2hvdWxk
QWx3YXlzQmVJbmxpbmVkKGZhbHNlKQpAQCAtMzA0OSw2ICszMTI1LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFy
ZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJp
bmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9u
J3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBv
aW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDAyMCw3ICs0MDk3LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhlYWQg
PSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KDApOwogICAgIAotICAg
IGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlTG9jYWxzKSkgewogICAgICAgICBiZWdpblZhbGlkYXRp
b25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9uZyBudW1iZXIgb2YgYml0cyBp
biByZXN1bHQhXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIFJlc3VsdDogIiwgbGl2ZUF0SGVh
ZCwgIlxuIik7CkBAIC00MDI4LDcgKzQxMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUo
KQogICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgIH0KICAgICAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZVJlZ2lzdGVyczsgaS0tOykgeworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fbnVtQ2FsbGVlTG9jYWxzOyBpLS07KSB7CiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChsaXZlQXRIZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgy
ZWMuLjNjYmU3NWM0OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAwYWE5OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5j
bHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdW
YWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1D
YWxsZWVMb2NhbHM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0
dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVt
UGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFy
YW1ldGVycyk7IH0KIApAQCAtNjU0LDYgKzY1NywxOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJs
ZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURh
dGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFi
bGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VS
VChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
c1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxk
IHBvaW50cy4KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
cmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZFtpbmRleF07CisgICAgfQorICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkW2luZGV4XTsKKyAgICB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNh
Y2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04NTUsNyArODcw
LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gRklYTUU6IE1h
a2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAogICAgIGludCBtX251bUxvY2Fs
UmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwor
ICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGJvb2wg
bV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICAKQEAgLTkwMCw2ICs5MTUsOCBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4g
bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisKICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxD
b2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
dmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdkNGVhZjQzODU4YzA2Y2VlN2M3
YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4YmVkYjA3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNs
dWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAogCiAgICAgY2xhc3MgRXZhbENv
ZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNj
b3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwg
SlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShp
blN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdldCgpOwotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBl
dmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29u
dGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxT
b3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpN
b2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoc291cmNlQ29kZUtl
eSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1v
ZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxs
KiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBj
b25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewog
ICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAg
ICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSwgdmFyaWFibGVz
VW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0g
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0
cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFi
bGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2Nv
cGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKQotICAgICAgICAgICAg
ICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOworICAgICAgICAg
ICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYm
IG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkg
c291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5
cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQo
c291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBv
d25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAgICB9CkBAIC04MCwxNyArODcs
MTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIHx8IHNjb3BlLT5pc1Zh
clNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNo
ZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNT
Y29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShib29s
IGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSog
c2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2YWwoKSBpcyBjYWxsZWQgYW5k
IGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBjYW4ndCBzb3VuZGx5IGNhY2hl
IGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5IGhhcyBhY2Nlc3MgdG8gdGhl
ICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAgICAgICAgICAgIHJldHVybiAh
aW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2YWxTb3VyY2UubGVuZ3RoKCkg
PCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpIAorICAgICAgICAg
ICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJjZS5sZW5ndGgoKSkgPCBPcHRp
b25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpCiAgICAgICAgICAgICAgICAg
JiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+PiBFdmFsQ2Fj
aGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJp
ZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwgU291cmNlQ29kZUtleUhhc2hU
cmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi4yNjAy
YmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMjYsMjEgKzI2LDI4IEBA
CiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAogCisj
aW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBh
bmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9u
LCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBi
b29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZh
dGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0Fj
dGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwp
CiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXND
b25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
aXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAs
IG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3N1cGVyQmlu
ZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKKyAgICAgICAgLCBtX3Bh
cnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rvcktp
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworICAgICAgICBB
U1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGlu
ZykpOworICAgICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9kZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzQWN0
aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC00OCw4ICs1
NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIEdlbmVy
YXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENv
bnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRp
bmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
bmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7
CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
KyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGQ2MGZk
ZjdkM2NmMzYwZTNlYzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQuLjk4OTkzOWIyMzMyMTRjZmQ0NWJl
MDdiYWU4NjA5ZmM4NGM3ZWIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRp
YyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2pu
Z3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYzEx
NGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4uODdlODIzM2YxZmUzYThiZWM0
MDIzMGQyOThiMDllNmRmZjlhMzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01NCw3ICs1NCw3IEBACiBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQogICAg
IDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtVmFycygwKQotICAgICwgbV9udW1D
YWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBtX251
bVBhcmFtZXRlcnMoMCkKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lz
dGVyKFZpcnR1YWxSZWdpc3RlcigpKQpAQCAtNjUsMTAgKzY1LDEyIEBACiAgICAgLCBtX2hhc0Nh
cHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlz
QnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlv
bihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9kZSgpKSkKKyAgICAsIG1fc3Vw
ZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkKICAg
ICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1
bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwg
bV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKICAgICAsIG1fYXJyYXlQ
cm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAxNjViODYx
ZjBmODNjZi4uYmNhMmMwNGFjYTQzODI5MjE3NTY5NThiYWE2OGRiMzBlOGYxMzVjMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbnN0
cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKQEAgLTQxLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlZhcmlh
YmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsxMTgsNyBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIGJvb2wgbmVl
ZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsg
fQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4obV9nZW5lcmF0b3JU
aGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KIAogICAgIHZv
aWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIzMiw3ICsyMzYsNyBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgaW50IG1fbnVtVmFyczsKICAgICBp
bnQgbV9udW1DYXB0dXJlZFZhcnM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAg
IGludCBtX251bUNhbGxlZUxvY2FsczsKIAogICAgIC8vIEp1bXAgVGFibGVzCiAKQEAgLTM4Nywx
MiArMzkxLDE0IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2dl
bmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAK
ICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAg
ICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9k
ZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBDb2RlVHlwZSBtX2NvZGVUeXBl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGExODU5YjNhZDJkMWM2NWQ4YTUz
ZmYxMTM3ZTFlNDdlOWQ1OWI2Li4zZjQ5NDg4NWFmNDljMjhlMjZmNDk3ZDY3NWY2NGExNmM5Yjlh
Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQAogc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJN
b2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3Im
IGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBm
dW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+
aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNTRVJU
KGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4o
Ci0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJyb3IsIG51bGxwdHIpOworICAg
ICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygp
LCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VS
VChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIGV4
ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rp
b25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9u
KCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uKSk7Cisg
ICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rp
b24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1
dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9kZSgp
LCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlKSk7CiAgICAgYXV0byBnZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdl
dCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJl
bnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRl
KCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNl
T3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JU
aGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1l
KG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUo
KSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJpbGl0
eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2NvbnN0
cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkp
KQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBtX2lz
QXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9y
VGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKKyAgICAs
IG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmco
KSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBAIC0xODAsNyArMTgxLDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpm
cm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBE
ZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dpdGNo
IChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTk2LDcg
KzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgICAg
IHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIGlzQXJy
b3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwogICAgIAogICAgIGlmIChl
cnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNmNDFiYTQyZDljMWY4Li5jOGJi
YTBhYzMyYmU0MzdmZmI1ZGYzZTNmOWUwNWIwNDc4YTUzNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAi
Q29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjUsMTAgKzY2
LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShW
TSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5v
ZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBu
dWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01v
ZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAgICAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJy
aWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMsOCBAQCBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNJ
blN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAg
ICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9y
VGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4o
bV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7
IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxpbmtl
ZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1
bW47IH0KQEAgLTk1LDcgKzk4LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgCi0gICAg
ICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNlckVycm9yJiwgU291cmNlUGFy
c2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUds
b2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAtMTI1LDEwICsxMjgsOSBAQCBj
bGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0KICAgICBi
b29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0
b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9w
YXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3Zl
cnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0
cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAg
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTgsNyArMTYwLDggQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVu
Y3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2ln
bmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5n
IDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCBiOTM3MGM4ZDI4NGEzODRmMjFlMGU3ODkyNjg1NDVjOTJiMTk4MjNi
Li44OGNiNzlhMzdiZGU4M2MwYmNjYzBiYjZiZDczNGExY2ZmM2ZmMGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgog
CiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtMjI3LDkgKzIyOSwzMyBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICB9CiAgICAg
fQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNvZGVCbG9jay0+cGFyc2VNb2Rl
KCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0
RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IGZ1bmN0
aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKworICAg
IC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVm
ZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNj
b3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
KQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOworCisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3VtZW50
cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRzIi4g
SW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50cyIu
CisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Igc2hv
dWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCisgICAgICAgIC8vIFRvIHdvcmth
cm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBhcyBhcmd1bWVudHMgb2YgYSB3
cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVuY2UgaXQgZnJvbSBhIGdlbmVy
YXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVs
bG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAg
ICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50
czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJn
dW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgLy8gICAgICAg
ICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAgIC8vICAgIH0KKyAgICAgICAgc2hv
dWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHNob3Vs
ZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVuY3Rpb25Ob2RlLT52YXJEZWNsYXJh
dGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogICAgIApAQCAtMjU0LDE0ICsy
ODAsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBh
bGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5k
ZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVt
aXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2Vu
ZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRl
cnNbMV07CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRoaXNN
b2RlOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0
ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5lcmF0
b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3IgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291bGQg
bGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFzZWQg
b24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAgICAgIC8vIEl0J3Mgc3VpdGFs
ZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVuY3Rp
b24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5lcmF0b3IoZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgorICAgICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0lu
U2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgp
KSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29w
ZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5j
dGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9
IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQ
dXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdp
c3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzaG91bGRDYXB0
dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAidmFyIiBlbnZp
cm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb25zLiBJ
ZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25t
ZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8gTWFrZSBzdXJl
IHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1h
a2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJl
IG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8v
IHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGlu
aXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBw
YXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBhdHRlcm4tPmlz
UmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFy
YW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQ
YXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5p
dGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmlndXJlIG91dCBz
b21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAgYm9vbCBjYXB0
dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwzNiBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3VGFyZ2V0UmVn
aXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkp
IHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygp
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5j
dGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBt
X2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVtaXQg
dG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
KyAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgICAgIGVt
aXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAg
ZW1pdENyZWF0ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAg
IC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCisgICAg
ICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChpc0NvbnN0cnVj
dG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsICZtX3Ro
aXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkKQpAQCAtNDkyLDkgKzU1Myw4IEBAIFBhcnNlckVycm9yIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRMb2FkQXJyb3dGdW5jdGlvblRo
aXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAg
IC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVm
YXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxl
ZApAQCAtNzk5LDYgKzg1OSwyMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6aW5p
dGlhbGl6ZU5leHRQYXJhbWV0ZXIoKQogICAgIHJldHVybiAmcGFyYW1ldGVyOwogfQogCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dz
IGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRl
cnMKKyAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgorICAgIG1fcGFyYW1l
dGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0
aGlzIgorICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVy
KCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFt
ZXRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5h
dChpKS5maXJzdDsKKyAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1ldGVyKTsKKyAgICAgICAgICAg
IG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVy
bik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIo
KTsKKyAgICB9Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVWYXJMZXhp
Y2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKQEAgLTgyNiwxNyArOTAy
LDE3IEBAIFVuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVyYXRvcjo6dmlzaWJsZU5hbWVG
b3JQYXJhbWV0ZXIoRGVzdHJ1Y3R1cmluZ1BhdHRlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpuZXdSZWdpc3RlcigpCiB7Ci0gICAgbV9jYWxsZWVSZWdpc3RlcnMuYXBwZW5kKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkpOwotICAgIGlu
dCBudW1DYWxsZWVSZWdpc3RlcnMgPSBtYXg8aW50PihtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMsIG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSk7Ci0gICAgbnVtQ2FsbGVlUmVnaXN0
ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
IG51bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzID0gbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3RlcnMu
bGFzdCgpOworICAgIG1fY2FsbGVlTG9jYWxzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzID0gbWF4
PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBtX2NhbGxlZUxvY2Fscy5zaXpl
KCkpOworICAgIG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVMb2NhbHMpOworICAgIG1fY29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsKKyAgICByZXR1cm4gJm1fY2Fs
bGVlTG9jYWxzLmxhc3QoKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVjbGFpbUZy
ZWVSZWdpc3RlcnMoKQogewotICAgIHdoaWxlIChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkgJiYg
IW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKS5yZWZDb3VudCgpKQotICAgICAgICBtX2NhbGxlZVJl
Z2lzdGVycy5yZW1vdmVMYXN0KCk7CisgICAgd2hpbGUgKG1fY2FsbGVlTG9jYWxzLnNpemUoKSAm
JiAhbV9jYWxsZWVMb2NhbHMubGFzdCgpLnJlZkNvdW50KCkpCisgICAgICAgIG1fY2FsbGVlTG9j
YWxzLnJlbW92ZUxhc3QoKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6Om5l
d0Jsb2NrU2NvcGVWYXJpYWJsZSgpCkBAIC0xOTE1LDcgKzE5OTEsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0
KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOwogICAgIGVsc2Ugewog
ICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJLaW5kOjpTdGFjayk7Ci0gICAgICAgIHZhck9m
ZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lzdGVy
cy5zaXplKCkpKTsKKyAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOwogICAgIH0KICAgICBTeW1ib2xUYWJs
ZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgMCk7CiAgICAgc3ltYm9sVGFibGUtPmFkZChsb2Nr
ZXIsIHByb3BlcnR5LmltcGwoKSwgbmV3RW50cnkpOwpAQCAtMjMxMiwxMiArMjM4OCwxMiBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2VydChSZWdpc3RlcklEKiBjb25k
aXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVh
dGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMobV90
aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsgMyk7CiAKICAgICBtX2NvZGVC
bG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ3MSwyMCArMjU0Nyw2IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9k
ZSogZWxlbWVuCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoZHN0
LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpKTsK
LX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVy
bmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgZW1pdE9wY29kZShv
cF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3Qs
IFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X3JlZ2V4cCk7CkBAIC0y
NDkzLDEzICsyNTU1LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiAgICAgcmV0dXJuIGRzdDsK
IH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lz
dGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bjb2RlSUQgb3Bjb2RlSUQpCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJl
Z2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykKIHsKLQotICAgIEFTU0VSVChv
cGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQgPT0gb3BfbmV3X2Fycm93X2Z1
bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gPSBmdW5j
LT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0
aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpKSB7
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAg
ICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsK
KyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19leHA7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CiAg
ICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CkBAIC0yNTEyLDE3ICsyNTg2LDE4IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhw
ck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIGVt
aXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19mdW5jX2V4cCk7CisgICAgZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7
CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlv
bkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsK
KyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBt
X2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yKQorICAgIGlmIChp
c0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlz
TW9kZTo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlzUmVnaXN0ZXIoKSk7CiAgICAg
Ci0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywgb3BfbmV3X2Fycm93X2Z1bmNf
ZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYyk7CiAg
ICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjU0MCw2ICsyNjE1LDE5IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRz
dCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRG
dW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgaWYgKGZ1bmN0aW9uLT5w
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAg
ICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UKKyAgICAg
ICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKKyAgICByZXR1cm4g
ZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVu
Y3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBm
dW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwpAQCAtMzc2Niw2ICszODU0LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRl
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVy
YXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBu
b2RlKQoreworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKKyAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAg
ICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IpOwor
ICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVl
KTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+
ZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0eXBlSXNP
YmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3Qo
bmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQoKSk7CisgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkp
OworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFiZWwo
KTsKQEAgLTM4NDIsNCArMzk0OCwyMjggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2lu
dChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IG1lcmdlUG9pbnQg
PSBuZXdMYWJlbCgpOworICAgIHNpemVfdCB5aWVsZFBvaW50SW5kZXggPSBtX2dlbmVyYXRvclJl
c3VtZUxhYmVscy5zaXplKCk7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9p
bnRJbmRleCk7CisgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBz
ZXF1ZW5jZS4KKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50
SW5kZXggLSAxOworICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgZW1pdFJldHVybihhcmd1bWVudCk7CisgICAgZW1pdFJlc3VtZShtZXJn
ZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworfQorCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KQoreworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUo
KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQ
b2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwor
ICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9n
ZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOworfQorCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50KQoreworICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50KTsKKworICAgIFJlZlB0cjxMYWJl
bD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25k
aXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwg
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRy
dWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICBSZWZQdHI8TGFi
ZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmlj
dGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRKdW1w
SWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CisgICAgLy8gUmV0dXJu
LgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKSB7
CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3ZlKG5ld1RlbXBvcmFyeSgpLCBy
ZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0UG9wU2NvcGVzKHNjb3BlUmVn
aXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJldHVybihyZXR1cm5SZWdpc3Rl
ci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAgZW1pdExhYmVsKHRocm93TGFi
ZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisg
ICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgcmV0
dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBuZXdUZW1wb3JhcnkoKTsKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpdGVy
YXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudCwgcHJvcGVydHlOYW1l
cygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1Jl
Z2lzdGVyKCksIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgp
LCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgp
LCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgUmVmUHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbmV4dEVsZW1lbnQgPSBuZXdMYWJlbCgpOworICAgICAg
ICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgICAg
ICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgIGVtaXRMYWJlbChsb29wU3Rh
cnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBlbWl0WWllbGRQb2ludCh2YWx1ZS5nZXQoKSk7CisKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRp
b24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3Ao
b3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExh
YmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJp
Y3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVy
blNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJl
dHVybldpdGhJdGVyYXRvclJlc3VsdCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVybkl0ZXJhdG9yUmVzdWx0ID0gbmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgICAgICAgICAgLy8gVGhyb3cuCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kRm91bmQgPSBuZXdMYWJlbCgpOworICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dNZXRob2QgPSBlbWl0R2V0
QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS50aHJv
d0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElzVW5k
ZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQoKSksIHRocm93TWV0aG9kRm91
bmQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJh
dG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9y
KEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93
JyBtZXRob2QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhv
ZEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0Fy
Z3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3Zl
KHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCks
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxs
KHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhvZC5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFy
dCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAocmV0
dXJuV2l0aEl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkxh
YmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuTWV0aG9kRm91bmQgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkucmV0dXJuS2V5d29yZCk7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNVbmRlZmluZWQobmV3
VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIHJldHVybk1ldGhvZEZvdW5kLmdldCgp
KTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZSh2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXAocmV0dXJuU2Vx
dWVuY2UuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5NZXRo
b2RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJu
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1v
dmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVy
KDApLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0
Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2
b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBG
YWxsdGhyb3VnaCB0byByZXR1cm5XaXRoSXRlcmF0b3JSZXN1bHQuCisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybldpdGhJdGVyYXRvclJlc3VsdC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IHJldHVybkl0ZXJhdG9yUmVzdWx0SXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICAg
ICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHJl
dHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHRJc09iamVjdC5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkl0ZXJhdG9yUmVzdWx0SXNPYmplY3Qu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkZyb21HZW5l
cmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShl
bWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVz
dWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAgICAgICBl
bWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJl
bChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEdl
dEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5h
bWVzKCkudmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIHJl
dHVyblNlcXVlbmNlLgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICAgICAgICAgICAg
ICBlbWl0UmV0dXJuKHZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBOb3JtYWwuCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKG5vcm1hbExhYmVs
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0TW92ZSh2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW1pdExhYmVs
KG5leHRFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0
SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdmFsdWUu
Z2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlk
KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBsb29w
RG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZh
bHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAgICAgICAgICAgIGVtaXRK
dW1wKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKKyAgICB9CisKKyAgICBlbWl0R2V0QnlJZCh2YWx1
ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlLmdldCgpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRl
ZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGUpKTsKKyAgICBlbWl0UHV0
QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9
IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdl
dCgpKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKK3sKKyAgICBiZWdpblN3
aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKK30KKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCit7CisgICAg
U3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOworICAg
IG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKworICAgIGluc3RydWN0aW9ucygp
W3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3
aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOworCisgICAgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsK
KyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0Owor
ICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6
ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKKyAgICBqdW1wVGFibGUuYnJh
bmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVy
YXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgeworICAgICAgICAvLyBXZSdyZSBlbWl0dGlu
ZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNv
CisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNl
cworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQo
KSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0t
PmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4YjY1OWEzMzY4NWJiM2M3MjY0N2Rj
ZmFmYjhkNTgyMDQyMmJhODYuLmRmZDAxMWI5NDMyZWNjZjFkZDNjZDMwYTdlNWFlNTUzZTg2NjY3
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVHZW5l
cmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhp
c01vZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsyODEsOCBAQAogCiAgICAgICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQorICAgICAgICBH
ZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgpOyB9CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0K
IAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBAIC0yOTcsNiArMzAwLDggQEAK
IAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkgeyByZXR1cm4gbV9zY29wZVJl
Z2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVnaXN0ZXIoKSB7IHJl
dHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmV4
dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0dXJuZWQgYnkKICAg
ICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmllZCBmb3JtIG9mIHJlZmVyZW5j
ZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdpdGggYSByZWZjb3VudCBvZiAw
IGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhhdApAQCAtNDk5LDEwICs1MDQs
OCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBF
bGVtZW50Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rp
b25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNF
eHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3Ry
dWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUpOwotICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklEKiwg
QmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSop
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVn
RXhwKik7CiAKQEAgLTU5Niw2ICs1OTksNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNV
bmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJdGVyYXRvck5leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBp
dGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSk7CiAgICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQs
IHVuc2lnbmVkIG51bVBhcmFtZXRlcnNUb1NraXApOwpAQCAtNjQ0LDEyICs2NDgsMjggQEAKICAg
ICAgICAgdm9pZCBiZWdpblN3aXRjaChSZWdpc3RlcklEKiwgU3dpdGNoSW5mbzo6U3dpdGNoVHlw
ZSk7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8
TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBt
aW4sIGludDMyX3QgcmFuZ2UpOwogCisgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0
ZXJJRCopOworICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwq
IG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAgICAg
dm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVn
YXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7
CisgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lk
IGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
Z2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbM107IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorCiAgICAgICAgIENvZGVUeXBl
IGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgICAgIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29r
czsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91
bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKworICAgICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC02NjcsNiArNjg3
LDcgQEAKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzY29wZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UHVzaEZ1
bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25FeHBy
ZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2RlKik7CiAKICAgICBwdWJs
aWM6CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9k
ZSosIGJvb2wgY2FuT3B0aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJv
bFRhYmxlUmVzdWx0ID0gbnVsbHB0cik7CkBAIC03MzAsNyArNzUxLDcgQEAKICAgICAgICAgUmVn
aXN0ZXJJRCYgcmVnaXN0ZXJGb3IoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2Fs
bGVlUmVnaXN0ZXJzW3JlZy50b0xvY2FsKCldOworICAgICAgICAgICAgICAgIHJldHVybiBtX2Nh
bGxlZUxvY2Fsc1tyZWcudG9Mb2NhbCgpXTsKIAogICAgICAgICAgICAgaWYgKHJlZy5vZmZzZXQo
KSA9PSBKU1N0YWNrOjpDYWxsZWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVn
aXN0ZXI7CkBAIC03NTIsMTIgKzc3MywyMiBAQAogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERa
KHZhcmlhYmxlc1VuZGVyVERaKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdz
LCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUg
cmVvcmdhbml6ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
ID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpOb25lKSkKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNl
dHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKKyAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5
ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworICAgICAgICAgICAgZWxzZSBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlICYm
IG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKKyAgICAg
ICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworCisgICAgICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9k
ZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eTsKKyAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpF
bXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVu
Y3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlv
biwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0
dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2Vu
ZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAg
IHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY1
LDYgKzc5Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVy
LCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVy
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMs
IFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0
LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVu
Y3Rpb25QYXJhbWV0ZXJzJik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZp
cm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0
aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1
bmN0aW9uUGFyYW1ldGVycyYsIEZ1bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3Ry
aW5nSW1wbCopPiYgY2FwdHVyZXMpOwogCkBAIC04MDQsNiArODM2LDcgQEAKICAgICAgICAgUmVn
aXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVy
SUQqIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBt
X25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtODExLDcgKzg0NCw3IEBACiAKICAg
ICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0Zv
ckNhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklE
LCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7Ci0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxS
ZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CisgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVMb2NhbHM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxSZWdpc3RlcklELCAzMj4gbV9wYXJhbWV0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
TGFiZWwsIDMyPiBtX2xhYmVsczsKICAgICAgICAgTGFiZWxTY29wZVN0b3JlIG1fbGFiZWxTY29w
ZXM7CkBAIC04MjcsNiArODYwLDcgQEAKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dp
dGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZvckluQ29u
dGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBt
X3RyeUNvbnRleHRTdGFjazsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzOwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWlu
dDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsK
ICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9u
VmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9u
ZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0YTdlMmU3ODJh
Zjg0NTc0Njc0N2MwNDY4ZGMzMzI4NDA1ZDRhNTNmLi5kODA0OTczNWIwOWIwMDZkMGUzYWM0NGUy
MDhhZDdmNTBhNGNmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVi
dWdnZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0
NSw3ICsxNDYsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlz
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJh
dG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBp
ZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhp
c01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVy
SUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKLXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJC
YXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0
ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
cikKIHsKICAgICBSZWdpc3RlcklEIGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFj
azo6Q2FsbGVlKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2Jq
ZWN0UHJpdmF0ZU5hbWUpOworfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3Qg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVl
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0
aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhv
bWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1
ODksNyBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXRO
b2RlSW5UYWlsUG9zaXRpb24oZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3Qs
IGpzVW5kZWZpbmVkKCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5S
ZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFs
bHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2
NiwyNiArMjk3Miw5NSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZz
ZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29k
ZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0
dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2Rl
KCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOiB7
CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0
YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJU
KGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHBy
ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVy
YXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkgeworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBu
ZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gQ2hlY2sg
Zm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gY29tcG9zZWQg
b2YgYSBzaW5nbGUgYmxvY2suCi0gICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVTdGF0
ZW1lbnQtPmlzQmxvY2soKSkgewotICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50
SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPmxhc3RT
dGF0ZW1lbnQoKTsKLSAgICAgICAgaWYgKGxhc3RTdGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0
ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybk5vZGUgPSBz
dGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxvY2spOwotICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBz
dG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2Uu
CisgICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2Ug
SlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBD
KysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSwg
bmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSwgZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBS
ZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoMCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9y
LmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQ
cml2YXRlTmFtZSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2Ug
bXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCi0gICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwgUHJvZmlsZVR5cGVCeXRl
Y29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBp
bmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJj
ZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQo
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTog
eworICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOworICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29u
ZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5n
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsK
KworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEs
IGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCks
IHRocm93TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihn
ZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0VGhyb3coZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgIH0K
KworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7
CisKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
anNVbmRlZmluZWQoKSkpOworICAgICAgICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KTsKKworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5n
bGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisKKyAg
ICAgICAgLy8gQ2hlY2sgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIGEgZnVu
Y3Rpb24gY29tcG9zZWQgb2YgYSBzaW5nbGUgYmxvY2suCisgICAgICAgIGlmIChzaW5nbGVTdGF0
ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIFN0YXRl
bWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4o
c2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOworICAgICAgICAgICAgaWYgKGxhc3RT
dGF0ZW1lbnRJbkJsb2NrICYmIGxhc3RTdGF0ZW1lbnRJbkJsb2NrLT5pc1JldHVybk5vZGUoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0dXJuTm9kZSo+KGxh
c3RTdGF0ZW1lbnRJbkJsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KKyAgICAgICAgaWYg
KCFyZXR1cm5Ob2RlKSB7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5p
c0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1p
dExvYWQoMCwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAv
LyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0
J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCisgICAgICAgICAgICBBU1NFUlQoc3Rh
cnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KHIwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgfQogfQogCkBAIC0zMDEzLDExICszMDg4LDI0IEBAIFJlZ2lzdGVySUQqIEFycm93
RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0CiAKIFJlZ2lzdGVySUQqIFlpZWxkRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgaXMganVzdCBhIHN0dWIuIFdoZW4gY29tcGxldGluZyBFUzYgR2VuZXJhdG9ycywgd2Ug
bmVlZCB0byBpbXBsZW1lbnQgaXQuCi0gICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcihB
U0NJSUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCB5ZXQuIikpOworICAgIGlmICghZGVsZWdhdGUo
KSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKGFyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFyZ3VtZW50
KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFyZyA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRZaWVsZChhcmcuZ2V0KCkpOworICAgICAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CisgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBh
cmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFy
Zy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXREZWxlZ2F0ZVlpZWxkKGFyZy5nZXQoKSwgdGhpcyk7CiAgICAgaWYgKGRzdCA9
PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggMjRkYmQ3YmUyZDg3ODY4NWNlMTUwZTQ3MWUzNWIyYTg3MjZlNjcyMC4uZGE5NDAz
OGQ2YjkyYmQ4YzVkNTRkOWQ1ZjZkY2FiMDdhZDQ4NWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBj
bGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICwgbV9jb25zdGFudE5hTihncmFwaC5mcmVl
emUoanNOdW1iZXIoUE5hTikpKQogICAgICAgICAsIG1fY29uc3RhbnRPbmUoZ3JhcGguZnJlZXpl
KGpzTnVtYmVyKDEpKSkKICAgICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKQotICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycykKKyAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1D
YWxsZWVMb2NhbHMpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJTbG90cygwKQogICAgICAgICAsIG1f
bnVtUGFzc2VkVmFyQXJncygwKQogICAgICAgICAsIG1faW5saW5lU3RhY2tUb3AoMCkKQEAgLTE0
MTMsNyArMTQxMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgCiAgICAgZW5zdXJl
TG9jYWxzKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lU3RhcnQpLnRv
TG9jYWwoKSArIDEgKwotICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBz
aXplX3QgYXJndW1lbnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25z
LnNpemUoKTsKIApAQCAtMjkyNyw3ICsyOTI3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKICAgICAKICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRo
YXQgY29ycmVzcG9uZHMgdG8gdGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgIGludCByZWdp
c3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKAotICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSkub2Zmc2V0
KCk7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxs
ZWVMb2NhbHMgLSAxKS5vZmZzZXQoKTsKICAgICByZWdpc3Rlck9mZnNldCAtPSBudW1iZXJPZlBh
cmFtZXRlcnM7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZTsKICAgICAKQEAgLTMwOTYsNyArMzA5Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZz
ZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgICAg
IGludCByZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKAotICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyAtIDEpLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOwogICAgICAgICByZWdpc3Rl
ck9mZnNldCAtPSBudW1iZXJPZlBhcmFtZXRlcnM7CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKaW5kZXggNTFhYzU1ZDRjYTVmOWVkNDk4YWI4ODk3Yzk2
ZWQyNTkzMzNkNjI4Ny4uZjVmNGNiNTIzODBlZGJiM2M5Zjg5NzEwMzIxMTBhMDg4Y2ZkMTI5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaApAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdAogICAgICAgICBjb25zdCBGYXN0Qml0VmVj
dG9yJiBsaXZlQmVmb3JlID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGJlZm9yZS5ieXRlY29k
ZUluZGV4KTsKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUFmdGVyID0gZnVsbExp
dmVuZXNzLmdldExpdmVuZXNzKGFmdGVyLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVyczsgcmVsYXRpdmVMb2NhbC0tOykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0
aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOyByZWxhdGl2ZUxvY2FsLS07
KSB7CiAgICAgICAgICAgICBpZiAobGl2ZUJlZm9yZS5nZXQocmVsYXRpdmVMb2NhbCkgJiYgIWxp
dmVBZnRlci5nZXQocmVsYXRpdmVMb2NhbCkpCiAgICAgICAgICAgICAgICAgZnVuY3Rvcih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKSArIHN0YWNrT2Zmc2V0KTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDQyODg3MGIxYzJhMjU4
NzE1Y2Q3MTUzYjhlNzk5YmVhZTkyYzRlNWYuLjE5MTFjZmVlZDY0MTkwMzk2YzhhZTY1ZjNhN2Vj
NDk3OGE3NjZmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTczOCw3
ICs3MzgsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGlu
ZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgZnVsbExpdmVu
ZXNzID0gbGl2ZW5lc3NGb3IoY29kZUJsb2NrKTsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVuZXNzID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGNvZGVPcmlnaW5QdHIt
PmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2Fs
ID0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgcmVsYXRpdmVMb2NhbC0tOykgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0gY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FsczsgcmVsYXRpdmVMb2NhbC0tOykgewogICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciByZWcgPSBzdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHJl
bGF0aXZlTG9jYWwpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIERvbid0
IHJlcG9ydCBpZiBvdXIgY2FsbGVlIGFscmVhZHkgcmVwb3J0ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwCmluZGV4IGU2YzQyMzVlYzRjYTY4MTdjZDM3ZTY5OTgzNDc4NjA4OWYyYjZlZmEuLjVlNWEx
NTA0YzI0ZDA2NDA0Zjc4NmIxNzIyZTJmNjE1MGY4ZmFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwCkBAIC05Myw4ICs5Myw4IEBAIGNsYXNzIE9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgLy8gV2UnZCByZWFsbHkgbGlrZSB0byB1c2UgYW4gdW5z
ZXQgb3JpZ2luLCBidXQgVGhyZWFkZWRDUFMgd29uJ3QgYWxsb3cgdGhhdC4KICAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCks
IGZhbHNlKTsKICAgICAgICAgCi0gICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5l
LT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKKyAgICAgICAg
VmVjdG9yPE5vZGUqPiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAg
ICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fs
czsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFkID0gdGFyZ2V0LT52
YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFwcmV2aW91c0hl
YWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3Mg
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKLSAgICAg
ICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lz
dGVyczsgKytsb2NhbCkgeworICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFz
ZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBw
cmV2aW91c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CiAgICAg
ICAgICAgICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCmluZGV4IGJlOGUyYTc5MTQ5ZjVhMmUzMTQ0YWQ0NjRhMzVjNjU0ZmM1OTllMGMuLjYzOTJm
MTRhOTgwNGNmYjY5MmU4NGJjMzkwMTIwZDBiYWI3ZGJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcApAQCAtMTIzLDkg
KzEyMyw5IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzOwogICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKLSAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVD
YWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQpLnRvTG9jYWwoKSArIDE7CisgICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJs
b2NrRm9ySW5saW5lQ2FsbEZyYW1lKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+bV9udW1D
YWxsZWVMb2NhbHMgKyBWaXJ0dWFsUmVnaXN0ZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyAxOwogICAgIGVsc2UKLSAgICAgICAgbnVtVmFyaWFi
bGVzID0gYmFzZWxpbmVDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgICAgICBu
dW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAgICAg
CiAgICAgLy8gQ3Jhenkgc3BlY2lhbCBjYXNlOiBpZiB3ZSdyZSBhdCBpbmRleCA9PSAwIHRoZW4g
dGhpcyBtdXN0IGJlIGFuIGFyZ3VtZW50IGNoZWNrCiAgICAgLy8gZmFpbHVyZSwgaW4gd2hpY2gg
Y2FzZSBhbGwgdmFyaWFibGVzIGFyZSBhbHJlYWR5IHNldCB1cC4gVGhlIHJlY292ZXJpZXMgc2hv
dWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5
SklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklU
Q29kZS5jcHAKaW5kZXggMjlmMDVlNTFkNDYxZmRmNmUwMTQzODMxOTljOTE4ZjY0MTVlOGNlYS4u
MzA4MGRjMzQ1MDljNzMzMzI0YjgxNDNkMmE5NTRmMDhlZGFmMTNmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcApAQCAtNDUs
OSArNDUsOSBAQCBGb3JPU1JFbnRyeUpJVENvZGUqIEZvck9TUkVudHJ5SklUQ29kZTo6ZnRsRm9y
T1NSRW50cnkoKQogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIEZvck9TUkVudHJ5SklUQ29k
ZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5zaWduZWQgbnVtQ2FsbGVlUmVnaXN0
ZXJzKQordm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYg
dm0sIHVuc2lnbmVkIG51bUNhbGxlZUxvY2FscykKIHsKLSAgICBtX2VudHJ5QnVmZmVyID0gdm0u
c2NyYXRjaEJ1ZmZlckZvclNpemUobnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSk7CisgICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKG51
bUNhbGxlZUxvY2FscyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEZvck9TUkVudHJ5SklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JP
U1JFbnRyeUpJVENvZGUuaAppbmRleCA0NGFmOGY5NTc5MWFhYTc4ZTZlODFkZmE2NDljODZhMTVl
YTM0NDgxLi45YWU5NzNmNDBkMTJjMTZiODA5YzBjOGNhMWUzNmViYWE4ZWUzNjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRm9yT1NSRW50cnlKSVRDb2RlIDogcHVibGljIEZUTDo6SklU
Q29kZSB7CiAgICAgRm9yT1NSRW50cnlKSVRDb2RlKCk7CiAgICAgfkZvck9TUkVudHJ5SklUQ29k
ZSgpOwogICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWduZWQg
bnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICB2b2lkIGluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYs
IHVuc2lnbmVkIG51bUNhbGxlZUxvY2Fscyk7CiAgICAgU2NyYXRjaEJ1ZmZlciogZW50cnlCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5QnVmZmVyOyB9CiAgICAgCiAgICAgdm9pZCBzZXRC
eXRlY29kZUluZGV4KHVuc2lnbmVkIHZhbHVlKSB7IG1fYnl0ZWNvZGVJbmRleCA9IHZhbHVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCmluZGV4IGFjNzE3MTRm
OTNmNTVhZjI2MThjN2U0MjBhNzFiNjZkZTIxMTc2NjYuLjYwMWI0NjA5NDA2NGFjNjEzYTk4ZmE5
YzIyOTM4NmZhNmVhZGYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50
cnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICB9CiAg
ICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoCi0gICAgICAgIHN0YXRpY19jYXN0PGludD4odmFsdWVz
Lm51bWJlck9mTG9jYWxzKCkpID09IGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PGludD4odmFsdWVzLm51bWJlck9mTG9jYWxzKCkpID09IGJhc2Vs
aW5lLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0
Y2ggPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KAogICAgICAgICBlbnRyeUNvZGUtPmVu
dHJ5QnVmZmVyKCktPmRhdGFCdWZmZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3Rh
dGUuY3BwCmluZGV4IDAzMDdlMGVkMDVjNWEyNTYxY2M0ZWY4MmI1YWEyZTVmZmNmOGMwZWIuLjU1
ZDgyOWEyYTY2YjYyNjA5MTU4NGE3M2UxMWRiYTAzYzI1NmVhMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAgICAgfQogICAgIGNhc2Ug
RlRMRm9yT1NSRW50cnlNb2RlOiB7CiAgICAgICAgIFJlZlB0cjxGb3JPU1JFbnRyeUpJVENvZGU+
IGNvZGUgPSBhZG9wdFJlZihuZXcgRm9yT1NSRW50cnlKSVRDb2RlKCkpOwotICAgICAgICBjb2Rl
LT5pbml0aWFsaXplRW50cnlCdWZmZXIoZ3JhcGgubV92bSwgZ3JhcGgubV9wcm9maWxlZEJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIGNvZGUtPmluaXRpYWxpemVFbnRyeUJ1
ZmZlcihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
KTsKICAgICAgICAgY29kZS0+c2V0Qnl0ZWNvZGVJbmRleChncmFwaC5tX3BsYW4ub3NyRW50cnlC
eXRlY29kZUluZGV4KTsKICAgICAgICAgaml0Q29kZSA9IGNvZGU7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZDViMTQ5MmFlN2Y1
M2RlNmNhNjU1MTljNTcyZWI2MWVlYjM5ZTMwZS4uNTQ2OTcxY2U4ZjUzOGI5ZTMzNWNmZmZiMjg0
NzMzYmQ5NjE1NGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CkBAIC0xNTUsNiArMTU1LDcgQEAKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0
IHZvaWQqKTsKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJv
b2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CisgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZv
aWQqKTsKICAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxs
Kik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBj
bGVhck1hcmtlZChjb25zdCB2b2lkKik7CkBAIC0zODgsNyArMzg5LDcgQEAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0xpdmVD
ZWxsKGNvbnN0IHZvaWQqIHApCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShj
b25zdCB2b2lkKiBwKQogICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21B
bGlnbmVkKHApKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIgPSB0aGlzLT5hdG9tTnVtYmVy
KHApOwpAQCAtMzk5LDcgKzQwMCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoYXRvbU51bWJlciA+PSBtX2VuZEF0b20pIC8vIEZpbHRlcnMgcG9pbnRlcnMgaW50
byBpbnZhbGlkIGNlbGxzIG91dCBvZiB0aGUgcmFuZ2UuCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAorICAgIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCisgICAgeworICAgICAgICBpZiAoIWlz
QXRvbShwKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGlzTGl2
ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihwKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjNTQ3NTFj
ZDcyMGZmZmMxMWUxNWQzNTI1NmIwNjM3NWMwYjZlOGFjLi42NGU3NGNmNjUwYjAwZDQ4NWE4MzFj
ZDUyMzcxZWM0MmRkNGRkZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE1Myw3ICsxNTMsMTYgQEAgSlNWYWx1ZSBldmFs
KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBj
YWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgSlNTY29wZSogY2FsbGVyU2NvcGVDaGFpbiA9
IGNhbGxlckZyYW1lLT51bmNoZWNrZWRSKGNhbGxlckNvZGVCbG9jay0+c2NvcGVSZWdpc3Rlcigp
Lm9mZnNldCgpKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9
IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogY2FsbGVyVW5saW5rZWRDb2RlQmxvY2sgPSBjYWxsZXJDb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVC
bG9jay0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAg
ICAgICB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsKKyAgICBpZiAoY2Fs
bGVyVW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSAmJiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUo
KSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhp
c1REWk1vZGU6OkFsd2F5c0NoZWNrOworCisgICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKG1ha2VT
b3VyY2UocHJvZ3JhbVNvdXJjZSkpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVy
Q29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIHNvdXJjZUNvZGUsIHRoaXNURFpNb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAog
ICAgIGlmICghZXZhbCkgewogICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpIHsKQEAgLTE3MSw4ICsxODAsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3Vs
ZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUt
PnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0g
Y2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBU
aGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9j
ay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNh
bGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBwcm9ncmFtU291cmNl
LCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZh
bENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBzb3VyY2VDb2RlLCBjYWxsZXJT
Y29wZUNoYWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtNDEwLDcgKzQxOCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1
bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogICAgIGRhdGFMb2dGKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKLSAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKKyAgICBlbmQgPSBpdCAt
IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAg
ICBpZiAoaXQgIT0gZW5kKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9
ICgqaXQpLmpzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhNjFiNTdk
NDYxNWY5YTkyZTliMzQzOTZlZDM4OGY3OTZkODQ1MGQwLi44NzllZmIyYmFiNGUyNDBjN2MxOTc1
YmI0NmY5ZDQzZDY3NjQyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTQs
NiArMjE0LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfY29weV9yZXN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQog
ICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVn
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGl2KQpAQCAtMjYwLDYgKzI2Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklO
RV9PUChvcF9uZXdfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKKyAg
ICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICAgICAgREVGSU5FX09Q
KG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJy
b3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAg
REVGSU5FX09QKG9wX25ld19yZWdleHApCkBAIC03NjMsOSArNzY3LDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQogCiB1bnNpZ25lZCBKSVQ6OmZyYW1lUmVn
aXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpID09IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpKTsKKyAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpID09
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykpKTsKIAotICAg
IHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJh
bWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKIH0KIAogaW50IEpJVDo6c3RhY2tQb2lu
dGVyT2Zmc2V0Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggZDIyNTgyMzlkMmViNzMwMzUxZGRlMTE1ZTY4YTc1YmNhNDc5ZDQyZC4uZmNjOGYzMDY2
NzdlNzY2YzBkMWZjYTUzNzg3NDIyNWRhMjU2MzhkYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00OTMsNiArNDkzLDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NvcHlfcmVzdChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3Vt
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDEsNiArNTQzLDggQEAKICAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhw
KEluc3RydWN0aW9uKik7CkBAIC02NjAsNiArNjY0LDcgQEAKICAgICAgICAgdm9pZCBlbWl0Umln
aHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1p
dFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmND
b21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJDb21tb24o
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9zdXJl
KGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgdW5zaWdu
ZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
ZDQ5NDg5NjUwZTY4NTQ2NTllNWE2MGRlNzhlNjMzZTFhNTE4Mzg1YS4uNmVjMTViYjQ0YjMzNDA1
ZjBmMmNlMjM3MDdlNDE1NDY4M2FiMWFjMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3Jl
Z2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtX2Nv
ZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRM
b2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAjZW5k
aWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisKKyAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50
SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMp
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25l
d19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2Vu
ZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
KyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAgIAorCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24p
OworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBAIC0xMDE4
LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdUMywgcmVn
VDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVu
Y19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQogICAgIGRv
bmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmNfZXhw
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHBy
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7
CkBAIC0xNDA1LDYgKzE0MzMsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29weV9yZXN0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2
OGEwZTUxZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3
MjNmNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4
OCw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0
aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4
ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNj
b3BlKSk7CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1
dGFibGUpLCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBl
OjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhl
Y3V0YWJsZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29w
ZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxl
KQogewotICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBzY29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JG
dW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpT
U2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4g
b3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRp
YyBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNj
b3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBib29sIGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlz
SW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMo
RnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1
dGFibGUpOwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3Bl
cmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQog
ICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihl
eGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJl
dHVybiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYx
NDVjOWQ1NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2
YjBiMDI1OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IGE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2Zl
MmE1NWFiNzgwYzMuLmY1OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBA
IC0xMzQsOSArMTM0LDkgQEAgdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiAKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycykpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FscykpKTsKIAotICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJD
b3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
ICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJu
IHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+
bV9udW1DYWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0
ZXJzKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2Yw
NTY2ZTcyYzczYjRlZWQ2M2UzYjIwOGM1Li4zNTFhNGM4ZDQ0MmYyZDZjNjhjNGE5MmMzMmYxNmVj
NjAyZGE4Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0
cmluZy5oIgpAQCAtMjI0LDkgKzIyNSw5IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjCiAgICAg
SlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7
CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFi
bGUoKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zv
cihraW5kKTsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4
ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVS
ZWdpc3RlcnMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAorICAgIGRhdGFMb2dGKCIlcCAvICVwOiBp
biAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJh
bWV0ZXJzID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAg
ICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKLSAg
ICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscywKICAgICAgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkpOwogfQogCkBA
IC00NTgsNyArNDU5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2QKICNpZiBMTElOVF9TTE9X
X1BBVEhfVFJBQ0lORwogICAgIGRhdGFMb2dGKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBl
eGVjID0gJXAuXG4iLCBleGVjKTsKICAgICBkYXRhTG9nRigiQ29kZUJsb2NrID0gJXAuXG4iLCBl
eGVjLT5jb2RlQmxvY2soKSk7Ci0gICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0g
JXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIGRh
dGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4
ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTEwNDEs
NiArMTA0MiwxOCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJh
bmQpLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlw
ZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSB8fCBl
eGVjLT5oYXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVj
a2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1df
UEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5k
aWYKKyAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2Rl
QmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JF
R0lOKCk7CkBAIC0xMDUyLDYgKzEwNjUsMTcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAg
TExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsK
IH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19l
eHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRS
KHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5k
KTsKKworICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfYXJyb3dfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggZTI0NDgyOWZkZDFlMmYxNTA2
YTM1ZDEwYTRlYjgxZmNiZTMyYzUzMS4uMjcxMzI0YjE4NDUzZDcyZGM4Yjc2MTgwYmEwMzA0YWI0
NTY1OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKQEAgLTk5LDYgKzk5LDggQEAKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfc3dpdGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19hcnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGY4ZTEyOGNjZDlhMDRhMTFhY2Y5OTFjYmMxYjViMjBkOTdjYWYwMzMu
LjYxMjY0ZDk4ODU3NzU1NTM3MTM1ZjljMzQ3YzAwZmJlM2VhZjllNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTY5
Nyw3ICs2OTcsNyBAQCBtYWNybyB2bUVudHJ5UmVjb3JkKGVudHJ5RnJhbWVQb2ludGVyLCByZXN1
bHRSZWcpCiBlbmQKIAogbWFjcm8gZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2soY29k
ZUJsb2NrLCBzaXplKQotICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNb
Y29kZUJsb2NrXSwgc2l6ZQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVMb2NhbHNb
Y29kZUJsb2NrXSwgc2l6ZQogICAgIGxzaGlmdHAgMywgc2l6ZQogICAgIGFkZHAgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwsIHNpemUKIGVuZApAQCAtMTIyNyw2ICsxMjI3LDEyIEBAIF9s
bGludF9vcF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9s
bGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwxMSBAQCBfbGxp
bnRfb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCiBfbGxp
bnRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBAIC0xNTczLDYg
KzE1ODQsMTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGlu
dF9vcF9zYXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9zYXZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAg
IGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKaW5kZXggY2U5ODVjYTQ1ZGU5OWU4ZGE1YTU3ZjhiOTNhMzA2NGNhNmYxZDMyNC4uYTkw
ZGMxYzFjYzI3OTZkZDEwNGJmNzFlM2U5NzA5M2NlOTI3MmZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5ICszNDEsMTEgQEAgY2xhc3MgQVNU
QnVpbGRlciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5v
ZGUobG9jYXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisgICAgWWllbGRF
eHByTm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxk
RXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIFlpZWxkRXhw
ck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24s
IGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUs
IHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAg
Q2xhc3NFeHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNz
RW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2NCwxMiArMzY2
LDEyIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAg
ICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNl
TW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBh
cnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUo
CiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0
cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJy
b3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAg
aW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVy
Q291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8pCkBAIC04OTEsNiArODkzLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAg
ewogICAgICAgICBub2RlLT5zZXRTdGFydE9mZnNldChvZmZzZXQpOwogICAgIH0KKworCisgICAg
dm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNBcmd1bWVudHMoKTsgfQogICAgIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgU2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi41
YjZkYzQ5Mzg1ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3OWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5v
ZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4m
JiBjbG9zZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9u
KQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRD
b2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEgQEAgdm9pZCBQcm9ncmFtTm9kZTo6
c2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNs
b3NlZFYKICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAg
ICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0lu
U3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQobV9z
dXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAg
IEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1
Y2EzNDY2NGZkZjE2NGFhMzllMWY2MTRkM2VlYmQwZGUwNTE4OWVhLi44ZTlhMjUyZWFkMWZlZTkx
NTlmYWZlMTUzYjdjNzk2MWQ4N2EyYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xODE3LDcgKzE4MTcsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAg
ICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAg
ICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZv
aWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsxODQyLDggQEAKIAogICAgICAgICBp
bnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsg
fQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
U3RyaWN0Q29udGV4dDsgfQorICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1
bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGlu
dCBsaW5lU3RhcnRPZmZzZXQpCkBAIC0xODY5LDggKzE4NjksOCBAQAogICAgICAgICBpbnQgbV9s
YXN0TGluZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1
bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBl
ckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0g
ICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3
ICsxOTMyLDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxk
RXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxk
RXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAwYWYyYzVh
MzUzM2M2Yjg2NzYyYzQyMmE2ZmQ3YTZhZTk1MjYzNDczLi5lODIyYzgxMjVlYjBlNmNiOWVjZjNj
ZTMwZTQ3MjViZjY3ZmZkNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0xOTQsNyArMTk0LDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAg
ICAsIG1fc291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEwLDcgQEAKICAgICAsIG1fbGFzdEZ1
bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9w
YXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGlu
KQorICAgICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29u
c3RydWN0b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2Rl
KHRoaXNURFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNp
bmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBm
dW5jdGlvbkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBh
cnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlcnM7CiAKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CkBAIC0yNzMsOCArMjc3LDEyIEBACiAgICAg
ICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Np
b25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxl
UGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
TW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkKKyAgICAg
ICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VF
bGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250
ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCB2
YWxpZEVuZGluZzsKQEAgLTMwMSw3ICszMDksMTQgQEAKICAgICBWYXJpYWJsZUVudmlyb25tZW50
JiB2YXJEZWNsYXJhdGlvbnMgPSBzY29wZS0+ZGVjbGFyZWRWYXJpYWJsZXMoKTsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgICAgIHZhckRlY2xhcmF0aW9u
cy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKLSAgICAKKworICAgIElkZW50aWZpZXJT
ZXQgdXNlZFZhcmlhYmxlczsKKyAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFi
bGVzKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFibGVzLmNvbnRhaW5zKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAgICAgICAgICAgY29udGV4dC5wcm9w
YWdhdGVBcmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMg
PSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAg
ICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMzExLDEwICszMjYsOSBAQAog
ICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7CiAgICAgaWYgKG1v
ZGlmaWVkQXJndW1lbnRzKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0Zl
YXR1cmU7CisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gY2xvc2VkVmFy
aWFibGVzOwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7Ci0gICAgICAgIElkZW50aWZpZXJT
ZXQgdXNlZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZh
cmlhYmxlcyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYg
d2Ugd2FudCB0byBhbGxvdyBidWlsdGlucyB0byB1c2UgbGV4aWNhbCBkZWNsYXJhdGlvbnMuCiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CiAgICAg
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0s
IHZhcmlhYmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzIsNDUgQEAKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNl
RWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQor
eworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRz
KCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQoKTsK
KyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAg
IEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5jdGlvbk5hbWVTdGFy
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQgcGFyYW1ldGVyc1N0
YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0
ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLnBh
cmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2Rl
CisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhp
cywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBTeW50YXhD
aGVja2VyIGdlbmVyYXRvckZ1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1f
bGV4ZXIuZ2V0KCkpOworICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdl
bmVyYXRvckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2Yg
YSBnZW5lcmF0b3IiKTsKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9CisgICAgaW5mby5ib2R5ID0g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSwgZmFsc2UpOworCisgICAgaW5mby5lbmRMaW5lID0g
dG9rZW5MaW5lKCk7CisgICAgaW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7
CisgICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKKworICAgIGF1dG8gZnVu
Y3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIoc3RhcnRMb2NhdGlvbiwgaW5m
byk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3Rh
cnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5s
aW5lKTsKKyAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVt
ZW50KTsKKworICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYg
Y29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2
ZUxpdGVyYWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJl
OgpAQCAtMTYwMCwxNSArMTY1MywxNCBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25C
b2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJs
b2NrICE9IGJvZHlUeXBlOwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
PSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgaWYgKCFpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlm
IChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5k
Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBw
YXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwg
cGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE2MjAsNyArMTY3Miw3IEBACiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxz
ZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSks
IGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJv
ZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBm
dW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5k
aW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC0xNjM2LDYgKzE2ODgsOCBAQCBzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBy
ZXR1cm4gIm1ldGhvZCI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6
CiAgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIjsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlv
biI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAg
ICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGU6CkBAIC0xNzE0LDYgKzE3NjgsMzcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgYXV0byBw
YXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworCisgICAgLy8gQGdlbmVyYXRv
cgorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclBy
aXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
ciwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRv
IGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7
CisKKyAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVy
YXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAg
ICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBn
ZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJl
c3VtZU1vZGUsIDApOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBG
dW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBi
b29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBG
dW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0xODI0LDEyICsxOTA5
LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFy
dE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAot
ICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZTsKLSAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlv
biwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1
bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwg
Y29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJv
d0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5k
LCBleHBlY3RlZFN1cGVyQmluZGluZywgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUs
IGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAg
ICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNo
ZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0xODQzLDcgKzE5MjYsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQog
ICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsK
ICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9u
T2Zmc2V0OwogCi0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5j
dGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrOwpAQCAtMTg2NSwxNCArMTk0OCwzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1
bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUg
PSBzYXZlU3RhdGUoKTsKLSAgICAKLSAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rp
b25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JL
aW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUp
OworCisgICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAg
IHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9k
eVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisgICAgfTsKKworICAg
IGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKSB7Cisg
ICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3Bl
KCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9
IHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5KCk7CisKKyAgICAgICAgLy8gV2hlbiBhIGdlbmVy
YXRvciBoYXMgYSAidXNlIHN0cmljdCIgZGlyZWN0aXZlLCBhIGdlbmVyYXRvciBmdW5jdGlvbiB3
cmFwcGluZyBpdCBzaG91bGQgYmUgc3RyaWN0IG1vZGUuCisgICAgICAgIGlmICAoZ2VuZXJhdG9y
Qm9keVNjb3BlLT5zdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5zZXRT
dHJpY3RNb2RlKCk7CisKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGdlbmVyYXRvckJvZHlT
Y29wZS0+aGFzRGlyZWN0U3VwZXIoKSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBh
IGNsYXNzIGNvbnN0cnVjdG9yIik7CisgICAgICAgIGlmIChnZW5lcmF0b3JCb2R5U2NvcGUtPm5l
ZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0
ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25s
eSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOworCisgICAgICAgIHBv
cFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxl
SW5mbyk7CisgICAgfSBlbHNlCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBh
cnNpbmdGdW5jdGlvbkJvZHkoKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwog
ICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5
IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNl
dEVuZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsK
ICAgICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1l
KSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgfHwg
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgfHwg
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSk7CiAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1
bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5v
dCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5u
YW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1
bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xOTQwLDcgKzIwNDIsNyBA
QCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYg
KGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSks
ICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9u
SW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CkBAIC0y
MDkxLDcgKzIxOTMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICAgICAgICAgIGlmIChpc0dl
bmVyYXRvcikgewogICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7Cisg
ICAgICAgICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdlbmVyYXRv
ciBuYW1lZCAncHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5ub3QgZGVj
bGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAgICB9CkBA
IC0yNzQyLDcgKzI4NDQsNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBFeHByZXNzaW9uRXJy
b3JDbGFzc2lmaWVyIGNsYXNzaWZpZXIodGhpcyk7CiAKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRP
UlMpCi0gICAgaWYgKG1hdGNoKFlJRUxEKSkKKyAgICBpZiAobWF0Y2goWUlFTEQpICYmICFpc1lJ
RUxETWFza2VkQXNJREVOVChjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3IoKSkpCiAgICAgICAg
IHJldHVybiBwYXJzZVlpZWxkRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogCkBAIC0yODQ3
LDYgKzI5NDksNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBmYWlsSWZUcnVlKG1fZnVuY3Rp
b25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1
c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwogCiAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gZGl2
b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVMRCkp
OwogICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBuZXh0
KCk7CkBAIC0yODU0LDEzICsyOTU3LDE0IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVnYXRl
ID0gY29uc3VtZShUSU1FUyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9IHRv
a2VuU3RhcnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAgICAg
ICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUs
IGRpdm90U3RhcnQsIGFyZ3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMzA1Miw3ICszMTU2LDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAg
SlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5z
aWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNH
ZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSA6IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgbWV0aG9kU3RhcnQs
IG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobWV0aG9kTG9jYXRpb24sIG1ldGhv
ZEluZm8pOwpAQCAtMzMwNSw3ICszNDA5LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogI2lmIEVOQUJMRShFUzZf
R0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykpCi0gICAgICAgIHBhcnNlTW9kZSA9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywg
cGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIGZ1
bmN0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxN2Iw
ZTgxYWVhMWQ4OWM0ZmVjOTQ0NzU3YzdmNDk1ZWM1MDQ3NzNlLi43MjU5YTVkNDc1NTZmNDA1M2E0
MGFhM2VjMzQzNTllOTY3OTM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1faXNMZXhp
Y2FsU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkoZmFsc2UpCiAg
ICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZSh0cnVlKQorICAgICAgICAsIG1faGFzQXJndW1l
bnRzKGZhbHNlKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCiAgICAgICAgICwgbV9zd2l0Y2hE
ZXB0aCgwKQogICAgIHsKQEAgLTE5Miw2ICsxOTMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAg
ICAsIG1faXNMZXhpY2FsU2NvcGUocmhzLm1faXNMZXhpY2FsU2NvcGUpCiAgICAgICAgICwgbV9p
c0Z1bmN0aW9uQm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5KQogICAgICAgICAsIG1f
aXNWYWxpZFN0cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUpCisgICAgICAgICwgbV9o
YXNBcmd1bWVudHMocmhzLm1faGFzQXJndW1lbnRzKQogICAgICAgICAsIG1fbG9vcERlcHRoKHJo
cy5tX2xvb3BEZXB0aCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKHJocy5tX3N3aXRjaERlcHRo
KQogICAgICAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21vZHVsZVNjb3BlRGF0YSkKQEAg
LTI0Niw2ICsyNDgsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIHNldElzR2VuZXJh
dG9yKCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgorICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3JGdW5j
dGlvbigpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
dHRlck1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgpAQCAt
MjY4LDYgKzI3NCw4IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm91bmRh
cnkoKSBjb25zdCB7IHJldHVybiBtX2lzRnVuY3Rpb25Cb3VuZGFyeTsgfQogICAgIGJvb2wgaXNH
ZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yOyB9CiAKKyAgICBib29sIGhh
c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRzOyB9CisKICAgICB2b2lk
IHNldElzTGV4aWNhbFNjb3BlKCkgCiAgICAgeyAKICAgICAgICAgbV9pc0xleGljYWxTY29wZSA9
IHRydWU7CkBAIC00NTAsMTYgKzQ1OCwyMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAg
bV91c2VzRXZhbCA9IHRydWU7CiAKICAgICAgICAgewotICAgICAgICAgICAgSWRlbnRpZmllclNl
dDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0gbmVzdGVkU2NvcGUt
Pm1fdXNlZFZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICAg
ICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRy
KSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAg
ICAgICAgICAgZm9yIChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpbXBsIDogbmVz
dGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRT
Y29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucyhpbXBsKSB8fCBuZXN0ZWRTY29wZS0+
bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKGltcGwpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vICJhcmd1bWVudHMiIHJlZmVyZW5jZSBzaG91
bGQgYmUgcmVzb2x2ZWQgYXQgZnVuY3Rpb24gYm91ZGFyeS4KKyAgICAgICAgICAgICAgICBpZiAo
bmVzdGVkU2NvcGUtPmlzRnVuY3Rpb25Cb3VuZGFyeSgpICYmIG5lc3RlZFNjb3BlLT5oYXNBcmd1
bWVudHMoKSAmJiBpbXBsID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1fdXNlZFZh
cmlhYmxlcy5hZGQoKnB0cik7CisKKyAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRk
KGltcGwpOwogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgYSBkZWNsYXJlZCB2YXJp
YWJsZSB0aGF0IGlzIHVzZWQgaW4gYW4gaW5uZXIgc2NvcGUgdG8gYmUgdGhvdWdodCBvZiBhcyBj
YXB0dXJlZCBpZgogICAgICAgICAgICAgICAgIC8vIHRoYXQgaW5uZXIgc2NvcGUgaXMgYm90aCBh
IGxleGljYWwgc2NvcGUgYW5kIG5vdCBhIGZ1bmN0aW9uLiBPbmx5IGlubmVyIGZ1bmN0aW9ucyBh
bmQgImNhdGNoIiAKICAgICAgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIGNhbiBjYXVzZSB2YXJp
YWJsZXMgdG8gYmUgY2FwdHVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRyYWNrQ2xv
c2VkVmFyaWFibGVzICYmIChuZXN0ZWRTY29wZS0+bV9pc0Z1bmN0aW9uQm91bmRhcnkgfHwgIW5l
c3RlZFNjb3BlLT5tX2lzTGV4aWNhbFNjb3BlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9z
ZWRWYXJpYWJsZUNhbmRpZGF0ZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgICAgICAgICBtX2Ns
b3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5hZGQoaW1wbCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgLy8gUHJvcGFnYXRlIGNsb3NlZCB2YXJpYWJsZSBjYW5kaWRhdGVzIGRvd253
YXJkcyB3aXRoaW4gdGhlIHNhbWUgZnVuY3Rpb24uCkBAIC01NTAsMTQgKzU2MiwyMiBAQCBzdHJ1
Y3QgU2NvcGUgewogICAgIHsKICAgICAgICAgbV9pc0Z1bmN0aW9uID0gdHJ1ZTsKICAgICAgICAg
bV9pc0Z1bmN0aW9uQm91bmRhcnkgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IHRy
dWU7CiAgICAgICAgIHNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3Ig
PSBmYWxzZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgc2V0SXNGdW5jdGlvbigpOworICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1
ZTsKKyAgICB9CisKICAgICB2b2lkIHNldElzR2VuZXJhdG9yKCkKICAgICB7CiAgICAgICAgIHNl
dElzRnVuY3Rpb24oKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgICAgIG1f
aGFzQXJndW1lbnRzID0gZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBzZXRJc01vZHVsZSgpCkBA
IC01NzksNiArNTk5LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIG1faXNMZXhpY2FsU2Nv
cGUgOiAxOwogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9p
c1ZhbGlkU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6IDE7CiAgICAg
aW50IG1fbG9vcERlcHRoOwogICAgIGludCBtX3N3aXRjaERlcHRoOwogCkBAIC02MjcsNyArNjQ4
LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0q
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBTb3VyY2VQYXJzZU1vZGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpT
UGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBT
dXBlckJpbmRpbmcsCiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkKTsKICAgICB+UGFyc2VyKCk7CiAKQEAgLTExNTAsNiArMTE3MSw3IEBAIGNs
YXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1
bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhw
b3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwpAQCAtMTE5MCw3ICsxMjEyLDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhv
ZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9v
bCBpc0dlbmVyYXRvcik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJv
cGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVy
dHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1
Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZyA9IFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZ
U19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2lu
ZCwgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkg
cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25C
b2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51
bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0
aW9uQ29udGV4dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVj
bGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhw
cmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNU
ZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xh
cmF0aW9uTGlzdENvbnRleHQsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlwZSwgYm9vbCYgZm9y
TG9vcENvbnN0RG9lc05vdEhhdmVJbml0aWFsaXplcik7CkBAIC0xMjE1LDYgKzEyMzcsNyBAQCBj
bGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVt
ZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25z
dHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAg
ICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lv
biBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNs
YXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApAQCAtMTM0MCw2ICsxMzYzLDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwog
ICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwogICAgIGJvb2wgbV9wYXJzaW5n
QnVpbHRpbjsKKyAgICBTdXBlckJpbmRpbmcgbV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0
b3JLaW5kIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZDsKICAgICBUaGlzVERaTW9kZSBtX3RoaXNU
RFpNb2RlOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV92YXJEZWNsYXJhdGlvbnM7CkBAIC0x
NDYzLDcgKzE0ODcsNyBAQCBjbGFzcyBQYXJzZXIgewogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0g
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAgICAgUGFyc2VyRXJyb3ImIGVy
cm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIs
CiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsCiAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6
Q2hlY2tJZk5lZWRlZCkKQEAgLTE0NzIsNyArMTQ5Niw3IEBAIGNsYXNzIFBhcnNlciB7CiAKICAg
ICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYg
KHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8
TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAg
ICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
LCB0aGlzVERaTW9kZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1
bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAg
ICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
OwpAQCAtMTQ4NSw3ICsxNTA5LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RGVmYXVsdENvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0g
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2Rl
KTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0
b3JLaW5kLCB0aGlzVERaTW9kZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJl
c3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsK
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJi
NGMzM2VmZGY3YzQ5ZWEyOWJkNzE1NTI4YmU4ODUuLmMwODhjOTY3ZTNhZGMzNGQ4Yzk4MTNmNTY5
MjkyMWEwYzAyOWNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIGVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAg
ICBOb3JtYWxGdW5jdGlvbk1vZGUsCiAgICAgR2VuZXJhdG9yTW9kZSwKKyAgICBHZW5lcmF0b3JG
dW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhv
ZE1vZGUsCkBAIC02MSw2ICs2Miw3IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25QYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKQEAgLTg1LDYgKzg3LDcgQEAgaW5saW5lIGJvb2wgaXNN
b2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZToKQEAgLTEwNCw2ICsxMDcsNyBAQCBpbmxpbmUgYm9vbCBpc1Byb2dyYW1Q
YXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIAogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGQ0OWE3ZTE3M2IyNTAwZGFmYjVmODRhYTRjMmU2ZjQxNjY0OWQwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtl
eS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTb3VyY2VDb2RlS2V5X2gKKyNkZWZpbmUgU291cmNlQ29k
ZUtleV9oCisKKyNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgU291cmNlQ29kZUtleSB7CitwdWJsaWM6CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBl
LCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CisKKyAgICBTb3VyY2VD
b2RlS2V5KCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKKyAgICAgICAgLCBtX25hbWUo
bmFtZSkKKyAgICAgICAgLCBtX2ZsYWdzKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUp
IDw8IDMpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikgfCAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmljdE1vZGUpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRoaXNURFpNb2RlKSkKKyAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNo
KCkpCisgICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OyB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisKKyAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9
CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwo
KTsgfQorCisgICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBk
ZW1hbmQuIEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKKyAgICAvLyBwcm92aWRlcnMgY2FjaGUg
dGhlaXIgc3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgorICAgIFN0cmluZyBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKKyAgICAgICAgICAgICYmIGxlbmd0aCgp
ID09IG90aGVyLmxlbmd0aCgpCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxh
Z3MKKyAgICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKKyAgICAgICAgICAgICYm
IHN0cmluZygpID09IG90aGVyLnN0cmluZygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTb3Vy
Y2VDb2RlIG1fc291cmNlQ29kZTsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIHVuc2lnbmVkIG1f
ZmxhZ3M7CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlI
YXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3Vy
Y2VDb2RlS2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOworfTsKKworc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0Vt
cHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNv
bnN0IFNvdXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXku
aXNOdWxsKCk7IH0KK307CisKK30KKworI2VuZGlmIC8vIFNvdXJjZUNvZGVLZXlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA1NDdlNDRmYzll
YmY5MWQ2NWFkMjY0OTMzNjRkYjMyNTBmN2MzMDZmLi4yYzc3Mjg1MjdlOTQzY2Q2ODJhNTE1ZTli
NDNkMmY1MGRiMmI4ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaApAQCAtMTgwLDEwICsxODAsMTAgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUVtcHR5TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7
IHJldHVybiBZaWVsZEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCkgeyByZXR1cm4gWWllbGRF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlpZWxk
RXhwcjsgfQogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHBy
ZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7
IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRh
eENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4
cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0KICAgICBp
bnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CkBAIC0zODks
NiArMzg5LDggQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgaW50IGVuZE9mZnNldChpbnQp
IHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCwgaW50KSB7IH0KIAor
ICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgaW50
IG1fdG9wQmluYXJ5RXhwcjsKICAgICBpbnQgbV90b3BVbmFyeVRva2VuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZjEzYjI1ZTRjOWIyNjJjNTI1
ZTBmNTZlYzBmNjljZGM3Y2JlZGYwZS4uNDk0NTIwZGJkZjQyOGM4NjQwZGI1ZTIyM2YwMGUyMWYy
ZmVjZmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6Omdl
dEdsb2JhbENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVm
IHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9v
dE5vZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJv
b3ROb2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsCi0gICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6
cGFyc2VNb2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERa
TW9kZSk7CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VN
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0m
IHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigK
ICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwKICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBp
ZiAoIXByb2dyYW0pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsK
QEAgLTE4OCw3ICsxODgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRh
LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUg
RnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMs
IHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25t
ZW50IGVtcHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2
bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJp
bGl0eTo6Q2FuQ29uc3RydWN0LCBlbXB0eVREWlZhcmlhYmxlcyk7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9u
YW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5z
dHJpbmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZh
bHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA0OGM4Y2ZlZjg0NjQ5ZDhm
MDljMmZiMGI5NDg4MTExZTE2OTM2YmQ3Li45YjhjMTUwZGUyMGI4NTMzYjFmZGEzZGFhODk1ZDA2
Y2RjODk1NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNp
bmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRl
ICJTb3VyY2VDb2RlS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVmFyaWFi
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNTYsNzEg
KzU3LDYgQEAKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAotY2xh
c3MgU291cmNlQ29kZUtleSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBl
LCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07Ci0KLSAgICBTb3VyY2VD
b2RlS2V5KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvZGVUeXBlIGNvZGVUeXBlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hl
Y2tJZk5lZWRlZCkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKLSAgICAgICAg
LCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2ZsYWdzKAotICAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWlsdGluTW9kZSkgPDwgMikKLSAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKSkKLSAgICB7Ci0gICAgfQotCi0gICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0K
LQotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3Ro
KCk7IH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlz
TnVsbCgpOyB9Ci0KLSAgICAvLyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5n
IG9uIGRlbWFuZC4gSXQncyBleHBlY3RlZCB0aGF0IHNvdXJjZQotICAgIC8vIHByb3ZpZGVycyBj
YWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9oYXNoID09IG90aGVyLm1faGFzaAotICAgICAgICAgICAgJiYgbGVu
Z3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKLSAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIu
bV9mbGFncwotICAgICAgICAgICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAg
ICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgdW5zaWdu
ZWQgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX2hhc2g7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29k
ZUtleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkm
IGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Ci19OwotCi1zdHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8U291cmNlQ29kZUtleT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoY29uc3QgU291cmNlQ29kZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29k
ZUtleS5pc051bGwoKTsgfQotfTsKLQogc3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgU291
cmNlQ29kZVZhbHVlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0Y2Y2NTkwYTliMDE2MDg4NTYyYmVlOGQ3NTUz
NTVkODdhM2IzM2IxLi5kZTA3ZjFjNTFiNTUxMmRjY2FiOWIwMjQ4ZjNmZDgxYmYxYjRhYmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxF
cnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnVuY3Rp
b24pIFwKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNy
byhKU09OKSBcCkBAIC0zMjksNiArMzMwLDEzIEBACiAgICAgbWFjcm8oVWludDMyQXJyYXkpIFwK
ICAgICBtYWNybyhGbG9hdDMyQXJyYXkpIFwKICAgICBtYWNybyhGbG9hdDY0QXJyYXkpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3IpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCisgICAgbWFj
cm8oZ2VuZXJhdG9yU3RhdGUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGcmFtZSkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclZhbHVlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVGhpcykgXAorICAgIG1h
Y3JvKGdlbmVyYXRvclJlc3VtZU1vZGUpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkw
ZjY1YzI0ZDYzMmI2MjEwODlkZTVjMWJiZDQ5NjRkNDQ5NjQzOTEuLmM2N2NjNzAyMTE5ZDczODgz
ZGRjZTcxZGY3MzllMmRhYmM2Yjc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uRnV6ei5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCkBAIC02NDQsNiArNjQ1LDM4IEBAIHN0YXRpYyBDb21tb25TbG93UGF0
aHM6OkFyaXR5Q2hlY2tEYXRhKiBzZXR1cEFyaXR5Q2hlY2tEYXRhKFZNJiB2bSwgaW50IHNsb3Rz
VG9BCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQorewor
ICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBz
Y29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCisgICAgLy8gQnV0IHBhcmFtZXRl
cnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9u
IHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0
KCkgY2FsbC4KKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNW
YWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvckZyYW1lUHJpdmF0ZU5hbWUpOworICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAg
IGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOworICAgIGVsc2UgeworICAg
ICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50
cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRv
IGF2b2lkIGFsbG9jYXRpb25zLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisgICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsK
KyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0
eVNsb3Q6OlB1dEJ5SWQpOworICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7CisgICAg
fQorICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICBK
U1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSog
ZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIGZy
YW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCiBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggMjI2MTg1YzRjN2VhN2NjNmZjN2YzY2M0ZjFmMzdlNjBlYjcyZjE3YS4uZjAwZDg3MDVk
NGU2N2ZlNGQ0MDU5YmRlMTY4ZWU4OGY1N2RmNzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCBpbmxp
bmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEs
IHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJp
bmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJf
bG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVz
aF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9z
Y29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmlu
ZGV4IGE2MzJjNDhlMDMwYjQxYjMzYjMzZGJhMTZhMzFjZjYxMzViNGY1MGYuLjAyZjM5NWM0MmJj
MTJlZTAyMTgzNGE4MmY4MWYwZmM5NzliY2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50
YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikK
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFtTm9k
ZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogfQogCiBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJy
b3IpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgUkVMRUFT
RV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBt
b2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwK
LSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9k
dWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKCFtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCmluZGV4IDgzNjUyOTJkNTdiYzlkZWMwM2U1NjQxN2Q3YTQwZDMyMGVjN2NhNjAuLjQyMDYw
MDY3MjI5YWE0MGFiNDdlOWI0MDUyOTYyMWZlODJlZGIzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgQ29kZUJs
b2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSAKICAgICAgICAgZXhlY3V0YWJsZS0+
bV91bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICAgICAg
KnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCAKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKTsK
KyAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKICAgICByZWNvcmRQYXJzZSgK
ICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIAog
ICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSwgZmlyc3RMaW5lKCksIApAQCAtNTU2LDcgKzU1Niw3IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQ
cm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2Rl
KQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA5ZmM5YmU3YTE0ZjZj
MGZlYmMyMzk3MTI2YjYwZmQ3YjBjMzQwYTA0Li43NWIzMDkxY2Y4MWM3Mjk2ZmUyZmFmZTlhOTY3
NjUzNjI5OTc4MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsgfQogCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNs
cygpOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKTsg
fQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Miw3
ICs1NDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSk7IH0KICAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
aygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAK
ICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQpAQCAtNjUwLDEyICs2NTAs
MTMgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1
Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGlu
ZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUo
KTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
RXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAv
LyBFeGNsdWRpbmcgJ3RoaXMnIQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmU0MmZhNWZlMjYzMDRlODZlZTIwMTNiMTAwY2FiYjIy
MWM0MjljLi41ZDdlZjM3NjZhYzBkNjliMzU1NDZhZjdlNzkxY2U5NDliYjQyZDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcApAQCAtNzksMjggKzc5LDMwIEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4z
LjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVj
dC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICByZXR1cm4gY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBm
dW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZSk7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAogICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAotICAgIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIpCisgICAgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKICAgICAvLyBIb3cgd2Ugc3RyaW5n
aWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0
eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5n
KCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rp
b24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxu
fX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0g
bWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIs
IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAg
ICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBm
dW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsK
KyAgICAgICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcikKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyktPnZpZXcoZXhlYykpOwpAQCAtMTI2LDkgKzEyOCw5IEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKIH0KIAogLy8gRUNNQSAx
NS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBB
cmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkKIHsKLSAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVt
UG9zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRl
eHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDIyZWNiNTdiOTNmNjliZmM5Zjhi
MWIzMDZmYjRjNDJhMGE2N2QyZTMuLmQxMWZiMmEzNzRkNjE5MTUwYzlkNmM0MjYyOWJhOTFjYzEy
MDVmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKQEAgLTU2LDEyICs1NiwxNyBAQCBjbGFzcyBGdW5jdGlvbkNvbnN0cnVj
dG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6VGV4dFBvc2l0aW9uJik7Ci1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CitlbnVtIGNsYXNzIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSB7CisgICAgRnVuY3Rpb24sCisgICAgR2VuZXJhdG9yLAorfTsK
KworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CitKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpGdW5jdGlvbik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAgY29u
c3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5lTnVt
YmVyID0gLTEpOworICAgIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwg
aW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCisKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9
IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShHZW5lcmF0b3JGcmFtZSkgfTsKKworR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZN
JiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwgdm0uZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxz
KG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQorICAg
ICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZN
JiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQoreworICAgIEdlbmVyYXRvckZyYW1lKiByZXN1
bHQgPQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2Nh
bHMobnVtYmVyT2ZMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9m
TG9jYWxzKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKK3sKKyAgICAvLyBPbmx5IHNhdmUg
Y2FsbGVlIGxvY2Fscy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAo
b3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIEFTU0VSVChs
aXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAg
ICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAg
ICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2Vk
Uih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCit7CisgICAgLy8gT25seSByZXN1bWUgY2Fs
bGVlIGxvY2Fscy4KKyAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3Ig
cmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIGxpdmVDYWxsZWVM
b2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGV4ZWMtPnVu
Y2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgp
LmdldCgpOworICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOworICAgIH0pOworfQorCit2
b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBz
dG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KKyAgICB2aXNpdG9yLmFw
cGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNh
bGxlZUxvY2Fscyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1NDViMTQ3ZGQ0
YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yRnJhbWVfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RC
aXRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTQ2VsbCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xh
c3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJh
bWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIq
Pih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOworICAgIH0KKworICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgICAgIHJldHVybiBsb2NhbHMo
KVtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCisg
ICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJP
ZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOworICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSos
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOworCitwcml2YXRlOgorICAg
IEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKworICAg
IHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJv
dGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnJh
bWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGY1ODkzMWZjNTUy
MGE1YzIyMDE1ZTI1ZjcwMmE3ZDZlMDk3OWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkdl
bmVyYXRvckZ1bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1
bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmds
b2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikp
OworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKK30KKworQ2Fs
bFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNh
bGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7
Cit9CisKK0NvbnN0cnVjdFR5cGUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmM4N2Jh
MTBiMzJiNDhjM2I5YTU2YzRkOTcyM2UzZjgwYWQ3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3JfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
X2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBUZXh0UG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Cisg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSop
OworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zM2ZlOGYyZTMxYmQzMTFiOTJlNDI3NDc0ZmEzOTgxOGVlZjc4ZGQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKSB9OworCitHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwYTAzNDkyNjk5YzMxMzU3NzZlMWY3N2RkMTdkOGRhMTZkMjUyMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0
YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJl
dHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2
N2IzYmRiN2ZiMzk3MTc0Y2FlNmFkNDY2NDdjNmZjZmQ3YTU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5
cGUuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJHZW5l
cmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gR2VuZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFzZTo6c19p
bmZvLCAmZ2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJh
dG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEdlbmVyYXRvclByb3RvdHlwZS5sdXQu
aAorQGJlZ2luIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBKU0J1aWx0aW4g
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXR1cm4gICAgSlNCdWlsdGluICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgdGhyb3cgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAx
CitAZW5kCisqLworCit2b2lkIEdlbmVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJHZW5lcmF0b3IiKSwg
RG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0
aGlzKTsKK30KKworYm9vbCBHZW5lcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEJhc2U+KGV4ZWMsIGdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8R2VuZXJhdG9y
UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMGM0NGRlZDgwYjQ3NDMyNzBlOGI1OTFmOGZjZmM3
ODFjY2EwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yUHJv
dG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yUHJvdG90eXBlX2gKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAg
ICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JQcm90
b3R5cGU+KHZtLmhlYXApKSBHZW5lcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoR2VuZXJhdG9yUHJvdG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzAzZTdiMDIyZjFjNjY5
ZDM5N2E5Yjc3YjVlZjI0ZTk1ZjUyMDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yVGhpc01vZGVfaAorI2RlZmluZSBH
ZW5lcmF0b3JUaGlzTW9kZV9oCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBodHRwOi8vZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1mdW5jdGlvbmFsbG9jYXRlCisvLyBo
dHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0
LWZ1bmN0aW9uLW9iamVjdHMtY29uc3RydWN0LWFyZ3VtZW50c2xpc3QtbmV3dGFyZ2V0CisvLyBX
aGVuIHRoZSBmdW5jdGlvbiBpcyBhIEdlbmVyYXRvckZ1bmN0aW9uLCBpdHMgW1tDb25zdHJ1Y3Rv
cktpbmRdXSBpcyBhbHdheXMgImRlcml2ZWQiLgorLy8gVGhpcyBtZWFucyB0aGF0IE9yZGluYXJ5
Q2FsbEJpbmRUaGlzIGluIHNlY3Rpb24gOS4yLjIgaXMgbmV2ZXIgZXhlY3V0ZWQgZm9yIEdlbmVy
YXRvckZ1bmN0aW9uLgorLy8gU28sIHdoZW4gd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nLAorLy8K
Ky8vICAgICBmdW5jdGlvbiAqZ2VuKCkKKy8vICAgICB7CisvLyAgICAgICAgeWllbGQgdGhpcwor
Ly8gICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IGdlbigpOworLy8gICAg
ICAgICAvLyB8dGhpc3wgc2hvdWxkIGJlIGdsb2JhbC4KKy8vICAgICAgICAgZy5uZXh0KCk7Cisv
LyAgICAgfQorLy8KKy8vICAgICB7CisvLyAgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworLy8g
ICAgICAgICAvLyB8dGhpc3wgaW4gZ2VuIHNob3VsZCBiZSBURFogKGFuZCBpdCB3b24ndCBiZSBm
aWxsZWQpLgorLy8gICAgICAgICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8gVGhlIGZvbGxv
d2luZyBmbGFnIG1hbmFnZXMgdGhpcyBzdGF0ZS4gV2hlbiBHZW5lcmF0b3JGdW5jdGlvbiBpcyBj
YWxsZWQgYXMgYSBjb25zdHJ1Y3RvciwgaXQgcmV0dXJucyBhIEdlbmVyYXRvciB0aGF0IGZ1bmN0
aW9uIGhhcyBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkgZmxhZy4KKy8vIEluIHRoaXMgY2FzZSwg
d2hlbiBhY2Nlc3NpbmcgfHRoaXN8LCBhIFREWiByZWZlcmVuY2UgZXJyb3Igb2NjdXJzLgorZW51
bSBjbGFzcyBHZW5lcmF0b3JUaGlzTW9kZSA6IHVuc2lnbmVkIHsKKyAgICBFbXB0eSwKKyAgICBO
b25FbXB0eQorfTsKKworfQorCisjZW5kaWYgLy8gR2VuZXJhdG9yVGhpc01vZGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1YjJlZGZiZDZk
NTM3MWJiMDFlMDJkYjAzZTY0ZWI0NjkwZmFkMTBiLi5iZDgzMGMwYTVjZTNkYmVkZmE1NjlhMTFl
MTI4MGQzMmFiZGEyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
QEAgLTM0OCw3ICszNDksMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgSlNP
YmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+
anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
RnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JQcm90b3R5
cGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERv
bnRFbnVtKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0p
OwogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzRjYmNlMDJkNjYyOTA1ZTBlY2I3OGE3NmZjYzg1YTJlMmQxOTg4ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKworI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5l
cmF0b3JGdW5jdGlvbjo6c19pbmZvID0geyAiR2VuZXJhdG9yRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJhdG9yRnVuY3Rpb24pIH07
CisKK0pTR2VuZXJhdG9yRnVuY3Rpb246OkpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSkKK3sKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJh
dG9yRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvckZ1bmN0
aW9uPih2bS5oZWFwKSkgSlNHZW5lcmF0b3JGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUp
OworICAgIEFTU0VSVChnZW5lcmF0b3JGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVj
dCgpKTsKKyAgICBnZW5lcmF0b3JGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBnZW5lcmF0b3JGdW5jdGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5l
cmF0b3JGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0
b3JGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBleGVj
dXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgZ2VuZXJhdG9yRnVu
Y3Rpb24sICJBbGxvY2F0aW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGdl
bmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjEwNzJhNTIxNjVkZDE3ZGVlMDk2N2RlZTdi
OGFlNDg5MGYyZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKyNkZWZpbmUgSlNHZW5lcmF0
b3JGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
K2NsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7CisKK2NsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24g
OiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmll
bmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGVudW0gY2xhc3Mg
R2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwK
KyAgICAgICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9Owor
CisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
KTsKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
KTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFj
aXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGlu
ZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0dlbmVyYXRvckZ1bmN0aW9uKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0dl
bmVyYXRvckZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisg
ICAgc3RhdGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0dlbmVyYXRv
ckZ1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBlZmVhZTUzMzE1Yjc1MTU5YzI0Y2FlN2NjOWUwNDE4Y2I0MDBjZDNi
Li5mN2IwYjk1Y2UyMTBhNWM2NDk2ODJiMmEyNzQwODQ5YWYwYzkxZWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1
MCw5IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCIKQEAgLTcyLDYgKzc1LDcgQEAK
ICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCIKQEAgLTM4NCw2ICsz
ODgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBGT1Jf
RUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9E
RVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RF
UklWRURfSVRFUkFUT1JfVFlQRQogCkBAIC00MjAsNiArNDI1LDE0IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJy
b3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwo
IlN5bnRheEVycm9yIikpKTsKICAgICBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0
cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVHlw
ZUVycm9yIikpKTsKICAgICBtX1VSSUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIp
KSk7CisKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpKTsKKyAgICBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKiBnZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGZ1
bmN0aW9uQ29uc3RydWN0b3IpLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsK
KyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisKKyAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBE
b250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbV9nZW5lcmF0
b3JQcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICAgICBtX29iamVjdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtNTUxLDYgKzU2
NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29s
dmVUaGVuYWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3Rv
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1l
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnZW5l
cmF0b3JQcm90b3R5cGVHZW5lcmF0b3JSZXN1bWVDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0ds
b2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAg
ICAgCkBAIC04MTgsNiArODMyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKQEAgLTg1MCw2ICs4NjYsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZWRGdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9s
T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdF
eHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDhlMTYyOWM1YmJlYTY3
OTQ5NDgzYWQzY2M3ODE4OTNiODRkODUxMDQuLjAzMjUzMjQ5ODVhMDM4ZTY5NzgxNGM5ODA3OWJj
ZGQ0M2ViNzY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNjMsNiArNjMsOCBAQAogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKK2NsYXNz
IEdlbmVyYXRvclByb3RvdHlwZTsKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwog
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwogY2xhc3MgSW5wdXRD
dXJzb3I7CkBAIC0yMjksNiArMjMxLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90
eXBlPiBtX2FycmF5UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+
IG1fcmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4g
bV9pdGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVy
PEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fY29uc29sZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Rv
bGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxG
dW5jdGlvblN0cnVjdHVyZTsKQEAgLTQ1Myw2ICs0NTgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBQcm90b3R5
cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpOyB9CiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEl0ZXJhdG9yUHJvdG90eXBlKiBpdGVy
YXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7
IH0KKyAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgp
OyB9CisgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCiAgICAgU3RydWN0dXJlKiBk
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTA2LDYgKzUxMyw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDgwMGE3ODY5ZTU0Yjc1ZDVjOGQyOGE1
MGQ5N2ExZTBiNzdiNTA2M2EuLjM3YjhhZmM3N2UyZDA5ZTk1NTEzYmVmYjU4ZWU3ZGRmYzA2YzU0
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAg
IFBhcnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9k
ZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAg
ICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggNTEzNWY0MGQxMGQ2ZjAwMjI2NGRiODYyYmJjYTlkZjRmZGU5NzhmNy4uZWNh
YmFiYzlmZmY2MDRmMzdmMTk1N2RiZWUyOGVkODY0YTQzNjBjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKQEAgLTI0NCw2ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhl
Y3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURh
dGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBnZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywg
RXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJv
bWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZl
cnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IGNlZDMxOTQwODkwMDZiZjNlMTc4MTkzY2E2MjllOGU2OGQyYjgxZTYuLjU1Nzdh
ODlhNDkwZmQwYzJmNDNiNTI3YTFiZmE3OWYyOThlMGI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7CisgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRl
eCA4OGQ0YTdjYzMxMGUzYjExYTdkYmYzYzAzZWFiODFiNGQ2OTk0NWRhLi42ZmM4ZDBhYjdmZWNk
MjQwNmVlZjZmZjhiZTJhOGRmMDY0NTFhZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCkBAIC03MjUsNyArNzI1LDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X2lzX3N1YmNsYXNz
YWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmF0b3JfaW5zdGFu
Y2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21faW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03MzMsNyAr
NzMzLDcgQEAKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21faXRl
cmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlf
c3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJhdG9yX2luc3RhbmNl
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3Rh
dGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25faW5zdGFuY2VzX29mX2l0ZXJhYmxl
cy5qcwpAQCAtNzU5LDcgKzc1OSw3IEBACiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX25lc3Rl
ZF9yZXN0LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJp
bmdfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9nZW5lcmlj
X2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1
cmluZ193aXRoX2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzY5LDcgKzc2
OSw3IEBACiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX2l0ZXJhdG9yX2Nsb3NpbmdfdGhyb3cu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9n
ZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9nZW5lcmljX2l0ZXJhYmxl
cy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRo
X2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtODA5LDU1ICs4MDksNTUgQEAK
IC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVydHlfdmFyaWFibGVzX2Z1bmN0aW9uLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQ
cm90b3R5cGUlLmNvbnN0cnVjdG9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5yZXR1cm4uanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18l
R2VuZXJhdG9yUHJvdG90eXBlJS50aHJvdy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2Jhc2ljX2Z1bmN0aW9uYWxp
dHkuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc19jYW50X3VzZV90aGlzX3dpdGhfbmV3LmpzCi0gIGNtZDogcnVuRVM2
IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29t
cHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcnMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhh
bmRfZ2VuZXJhdG9yc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29ycmVjdF90aGlzX2JpbmRpbmcu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc19nZW5lcmF0b3JfZnVuY3Rpb25fZXhwcmVzc2lvbnMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19zZW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzX2NsYXNzZXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19zdHJpbmcta2V5ZWRfc2hvcnRoYW5kX2dlbmVyYXRvcl9tZXRob2RzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FzdHJhbF9wbGFuZV9z
dHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxk
X3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192
aWFfdGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX29uX25vbi1pdGVyYWJsZXNfaXNfYV9y
dW50aW1lX2Vycm9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9zcGFyc2VfYXJyYXlzLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9zdHJpbmdzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfb3BlcmF0b3Jf
cHJlY2VkZW5jZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9NYXBfaXRlcmF0b3JfY2xvc2luZy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFp
bAogLSBwYXRoOiBlczYvTWFwX01hcFtTeW1ib2wuc3BlY2llc10uanMKQEAgLTExMTEsNyArMTEx
MSw3IEBACiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfYXN0cmFsX3BsYW5l
X3N0cmluZ3NfaW5fZnVuY3Rpb25fY2FsbHMuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0
aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2Fy
cmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9j
YWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVy
YXRvcl93aXRoX2dlbmVyaWNfaXRlcmFibGVzX2luX2FycmF5cy5qcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJp
Y19pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcwppbmRleCBhOGI5YjUzY2NjZmFlMWE1
YjVhNjZjMTNiZDIzZThjYWU1MjdhYWE0Li45YTgyMTMyYTYwZmMwZTc5MTk3MmMwNDMxOGQwN2I5
ZTI2MDA0YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dl
bmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5l
ZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9i
amVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVv
ZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4g
e307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8
PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93Jzog
bWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9s
Lml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJh
YmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24g
KiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcwppbmRleCBiNGM3NDUzOTMyNmM4OTcyYjc0YTc2MWZmNGQ4ZjI5
YjJhNWFlODI5Li44MTY3ZGE1MmRmNmZkMWVhOGZjMTU0NDRhM2I2NGViODZlNjNjNzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMu
anMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7
Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3Qo
YXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3lt
Ym9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9Owor
fQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9
OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhv
ZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVy
YXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsK
K30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2Vu
ZXJhdG9yKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Npbmcu
anMKaW5kZXggNmY2ODJmNWExNmNhYjllOGI1ZDI2OWFkZTQyZTgzYWViOGIwM2Q0Zi4uMzJkMzE3
YzBiODBhZGI5NTI5NDM0M2Y5YWM4OGZmOGVhODRkZmFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xv
c2luZy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBl
b2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5j
dGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1l
dGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9s
Lml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRv
ciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlm
dCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNb
J3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxl
ID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0
ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZh
ciBjbG9zZWQgPSAnJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRl
cmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKaW5kZXggNDRhMDY1YTk2YTFjOWRlN2UyNmMzNjIw
NmMxY2IzNjQ3MDRhMDRkNC4uMWY0N2QzMjhiYmM3ZjVjZGExZjkyNDhlOTU2YWZiYTU0MjkzODI5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3Jz
X3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xv
c2luZ192aWFfdGhyb3cuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09
ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRl
SXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsK
K2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsK
KyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0
OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFy
ci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisg
ICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJh
YmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3Jl
dHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYzNiY2Q5YTdlMTg4MzcwNzBjYWVlOGRmOGJjYjE2OWI3NTU1NjlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJn
dW1lbnRzLWZyb20tZnVuY3Rpb24uanMKQEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVBcnJheShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxk
QmUoYWN0dWFsLmxlbmd0aCwgZXhwZWN0ZWQubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBz
aG91bGRCZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBwcmludChKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsKKyAgICAgICAgICAgIHRo
cm93IGU7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworZnVuY3Rpb24gKmdlbihhLCBiLCBjKQor
eworICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsK
KyAgICB9CisKKyAgICByZXR1cm4gdGVzdDsKK30KKworbGV0IGcgPSBnZW4oMSwgMiwgMyk7Cits
ZXQge3ZhbHVlOiBmdW5jfSA9IGcubmV4dCgpOworc2hvdWxkQmUoZnVuYygpLmxlbmd0aCwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2NDc4ZmEyM2U0YmUzM2FiYWFmMTQ0NzI5
MmE0NTliN2I4NmQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDEwNyBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFj
dHVhbCl9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMp
CisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxk
IGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQg
YTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQg
YXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJl
KEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEi
OjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0MiwiMiI6Mn1gKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjo0MiwiMiI6NDJ9YCk7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAg
ICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7Cisg
ICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7Cisg
ICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAg
IHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0Miku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIGZ1bmN0aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFy
IGcgPSBnMSgwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52
YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rp
b24gKmcyKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9Cisg
ICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5l
eHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQy
KS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0
aG9kcy1zeW50YXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ2NWNlYjFmNDM2YzAyZTM2ZDhiMGFjNWJhN2Rl
MzI1NTU3NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCkBAIC0wLDAgKzEsNDgg
QEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZh
bChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciBpbnN0
YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJy
b3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50YXhF
cnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsg
U3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBDb2NvYSB7Cisg
ICAgKmNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgfQorfQorYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InLmApOworCit0ZXN0U3lu
dGF4KGAKK2NsYXNzIENvY29hIHsKKyAgICAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7
CisgICAgfQorfQorYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgIHN0YXRp
YyAqb2soKQorICAgIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorfQorYCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1t
ZXRob2RzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
Y2xhc3MtbWV0aG9kcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWY1YTU0YTJkYzQxMjcwNzljMzFjZmQzMWY5
YjMxY2Y1MGFkNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcwpAQCAtMCwwICsxLDYyIEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhh
Y3R1YWwpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitjbGFzcyBBIHsKKyAgICAq
Z2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICBzdGF0aWMgKnN0YXRpY0dlbigpCisgICAg
eworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICB5aWVsZCB0aGlzOworICAgICAgICByZXR1
cm4gNDI7CisgICAgfQorfQoreworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBsZXQgZyA9IGEu
Z2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCBhKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworICAg
IHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIGxldCBhID0gbmV3IEEo
KTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IGEuZ2VuKCk7
CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ25ldyBhLmdlbigpJylgKTsKK30KKworeworICAgIGxldCBnID0gQS5zdGF0aWNHZW4o
KTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIEEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hv
dWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICBsZXQgZyA9IG5ldyBBLnN0YXRpY0dlbigpOworICAgIH0sIGBUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgQS5zdGF0aWNH
ZW4oKScpYCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzliZDc4ZGY3NmEwY2I3
NThiODFlZWFiMmMyNTViOWRhZDFiNDQ3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpAQCAtMCwwICsx
LDY1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigp
IHsKKyAgICB5aWVsZCBldmFsKCJ0aGlzIik7Cit9CisKK3ZhciBnID0gbmV3IGdlbigpOworc2hv
dWxkVGhyb3coKCkgPT4geworICAgIGcubmV4dCgpLnZhbHVlOworfSwgYFJlZmVyZW5jZUVycm9y
OiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEIgeyB9
CisKKyhmdW5jdGlvbigpIHsKKyAgICBldmFsKCd0aGlzJyk7CisgICAgZXZhbCgndGhpcycpOwor
fSgpKTsKKworY2xhc3MgQSBleHRlbmRzIEIgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBldmFsKCd0aGlzJyk7CisgICAgfQorfQorCitzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgbmV3IEEoKTsKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLmApOworCitjbGFzcyBDIHsKKyAgICAqZ2VuZXJhdG9yKCkKKyAg
ICB7CisgICAgICAgIHlpZWxkIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcgPSBuZXcgYy5nZW5lcmF0
b3IoKTsKKyAgICBnLm5leHQoKTsKK30sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNv
bnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYy5nZW5lcmF0b3IoKScpYCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBnID0gYy5nZW5lcmF0b3IoKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYyk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3Ry
dWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
dW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk2YWU1ZmQxOWY5ZDhjOGIwOGRl
NmIwZWQ2YTViYWU3NWFmZGRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKQEAgLTAs
MCArMSw5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KK3ZhciBnbG9iYWwgPSAobmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhp
cyIpKSgpOworc2hvdWxkQmUodHlwZW9mIGdsb2JhbC5HZW5lcmF0b3JGdW5jdGlvbiwgJ3VuZGVm
aW5lZCcpOwordmFyIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSAoZnVuY3Rpb24gKigp
IHsgfSkuY29uc3RydWN0b3I7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
Ll9fcHJvdG9fXywgRnVuY3Rpb24pOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IsIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnVuY3Rpb24tbmFtZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY3NzM2YzQyMzRlMTg3OTEw
YjhjYTYzNTNjYmY0NWIwZDYwMDZiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMKQEAgLTAsMCAr
MSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK3ZhciBvayA9IGZ1bmN0aW9uICpnZW5lcmF0b3IoKQoreworICAg
IHlpZWxkIGdlbmVyYXRvcjsKK307CisKK3ZhciBnID0gb2soKTsKK3Nob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJh
dG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ1NjFkOTMwNzYwZDIwZWU2ZWY0Y2U1NzAzZWY3M2I5ZmY5YWU1
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1tZXRob2RzLXdpdGgtbm9uLWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDMxIEBA
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJy
b3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjog
JHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAqZ2VuKCkgeworfQordmFyIGcgPSBn
ZW4oKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcubmV4dC5jYWxsKHt9KTsKK30sIGBU
eXBlRXJyb3I6IHx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKKworCitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgZy50aHJvdy5jYWxsKHt9KTsKK30sIGBUeXBlRXJyb3I6IHx0aGlzfCBz
aG91bGQgYmUgYSBnZW5lcmF0b3JgKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcucmV0
dXJuLmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRv
cmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmVsYXRpb25zLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItcmVsYXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYTRkYzhjZTA3NmM3MzFjNDI0YTg4
NWZiMzhlMzU3ZTQ5M2ZmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKQEAgLTAsMCArMSwzMCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uICpnZW5lcmF0b3JGdW5jdGlvbigpIHsKK30KK2xldCBnZW5lcmF0
b3IgPSBnZW5lcmF0b3JGdW5jdGlvbigpOworCitzaG91bGRCZShnZW5lcmF0b3IgaW5zdGFuY2Vv
ZiBnZW5lcmF0b3JGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZSh0eXBlb2YgZ2VuZXJhdG9yLl9f
cHJvdG9fXywgJ29iamVjdCcpOworc2hvdWxkQmUoZ2VuZXJhdG9yLl9fcHJvdG9fXywgZ2VuZXJh
dG9yRnVuY3Rpb24ucHJvdG90eXBlKTsKKworbGV0IEdlbmVyYXRvclByb3RvdHlwZSA9IGdlbmVy
YXRvci5fX3Byb3RvX18uX19wcm90b19fOworCitsZXQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUgPSBnZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX187CitsZXQgR2VuZXJhdG9yRnVuY3Rpb24g
PSBnZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18uY29uc3RydWN0b3I7CitzaG91bGRCZShHZW5l
cmF0b3JGdW5jdGlvbi5wcm90b3R5cGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKK3No
b3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9uIGluc3RhbmNlb2YgR2VuZXJhdG9yRnVuY3Rpb24sIHRy
dWUpOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLCBGdW5jdGlvbik7Citz
aG91bGRCZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5fX3Byb3RvX18sIEZ1bmN0aW9uLnBy
b3RvdHlwZSk7CisKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlw
ZSwgR2VuZXJhdG9yUHJvdG90eXBlKTsKK3Nob3VsZEJlKEdlbmVyYXRvclByb3RvdHlwZS5jb25z
dHJ1Y3RvciwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworCitsZXQgYXJyYXlJdGVyYXRv
ciA9IFtdW1N5bWJvbC5pdGVyYXRvcl0oKTsKK2xldCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0g
YXJyYXlJdGVyYXRvci5fX3Byb3RvX187CitsZXQgSXRlcmF0b3JQcm90b3R5cGUgPSBBcnJheUl0
ZXJhdG9yUHJvdG90eXBlLl9fcHJvdG9fXzsKKworc2hvdWxkQmUoSXRlcmF0b3JQcm90b3R5cGUs
IEdlbmVyYXRvclByb3RvdHlwZS5fX3Byb3RvX18pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1maXJzdC1jYWxs
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJu
LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMmRiZWQ3YWJjYjk4NzJhYzcxNWNk
YTU0YzMyMTM1ODkyNWRhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKQEAg
LTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0
aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVh
Y2hhYmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLnJldHVybigiSGVsbG8i
KSwgIkhlbGxvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10aGlzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODBhZjZlMDc4OWRjMThiYmFkM2EwYWZi
YmY1YWQ5YTg1ZWMxMzVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcwpAQCAtMCwwICsxLDY3IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6
ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworCit2YXIgZ2xvYmFsID0gbmV3IEZ1bmN0aW9uKCdy
ZXR1cm4gdGhpcycpKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsK
KyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2Vu
KCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBnbG9iYWwpOworICAgIH0KKyAg
ICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAg
ICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlz
T2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOwor
ICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAg
ICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCB0aGlzOworICAgIH0KKworICAgIHsK
KyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IHVuZGVmaW5lZCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7Cisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGcubmV4dCgpOworICAgICAg
ICB9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZS5gKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OworICAgICAg
ICBsZXQgZyA9IGdlbi5jYWxsKHRoaXNPYmplY3QpOworICAgICAgICBzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgdGhpc09iamVjdCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1j
YWxsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhy
b3ctYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ2Y2I0Zjk3ZWUxMGMzODUwNmUx
OGVhYzBkOWEzZTQxODc5ZWRkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCkBA
IC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcg
RXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7
Cit9CisKK3ZhciBnID0gZ2VuKCk7Cit2YXIgZXJyb3IgPSBuZXcgRXJyb3IoIk9LIik7Cit2YXIg
dGhyb3duID0gbnVsbDsKK3RyeSB7CisgICAgZy50aHJvdyhlcnJvcik7Cit9IGNhdGNoIChlKSB7
CisgICAgdGhyb3duID0gZTsKK30KK2lmICh0aHJvd24gIT09IGVycm9yKQorICAgIHVucmVhY2hh
YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzYjJkZjk5
YTg0ODBjYjM1YTdkZDZiMzRlNjYyNTM2ZWFiOGRiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5q
cwpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgeWll
bGQgbmV3LnRhcmdldDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCB1bmRlZmluZWQpOworCit2YXIgZzIgPSBuZXcgZ2VuKCk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTNj
NzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNiZjhkNmM4OTc3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpz
CkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHJldHVybiBldmFsKCdz
dXBlcicpOworICAgIH0KKworICAgIHNob3VsZFRocm93KCgpID0+IHRlc3QoKSwgYFN5bnRheEVy
cm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAg
ICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7
CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIuZ2VuKCkn
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRU
aHJvdygoKSA9PiB7CisgICAgICAgIGEuZ2VuKCkubmV4dCgpOworICAgIH0sIGBTeW50YXhFcnJv
cjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAg
cmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgewor
ICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgeWllbGQgc3VwZXIuZ2VuKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkQmUoYS5nZW4oKS5u
ZXh0KCkudmFsdWUsIDQyKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7
CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAg
ICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBu
ZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbmV3IGEuZ2VuKCk7Cisg
ICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBhLmdlbigpJylgKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci15aWVsZC1zdGFyLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NWFiZWZhMDljMjkxZTNjNzk2MmIzYjM3M2M1MDg4NjJkNjk4YjViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQt
c3Rhci5qcwpAQCAtMCwwICsxLDMyNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
CisKK2NsYXNzIENhbGxTaXRlIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0
aGlzLmNvdW50ID0gMDsKKyAgICB9CisKKyAgICBjYWxsKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLmNvdW50Kys7CisgICAgfQorfQorCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEFy
cmF5cyB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhp
cy5maXJzdCA9IFsgMCwgMSwgMiwgMyBdOworICAgICAgICAgICAgdGhpcy5zZWNvbmQgPSBbIDQs
IDUsIDYsIDcgXTsKKyAgICAgICAgfQorCisgICAgICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHlpZWxkICogdGhpcy5maXJzdDsKKyAgICAgICAgICAgIHlp
ZWxkICogdGhpcy5zZWNvbmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgYXJyYXlzID0g
bmV3IEFycmF5czsKKyAgICBsZXQgaSA9IDA7CisgICAgZm9yIChsZXQgdmFsdWUgb2YgYXJyYXlz
KQorICAgICAgICBzaG91bGRCZShpKyssIHZhbHVlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgLy8gdGhyb3cgc2hvdWxkIGJlIHByb3BhZ2F0ZWQuCisgICAgbGV0IGMxID0gbmV3IENh
bGxTaXRlOworICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAg
IH0KKworICAgICAgICAndGhyb3cnKHZhbHVlKSB7CisgICAgICAgICAgICBzaG91bGRCZSh2YWx1
ZSwgNDIpOworICAgICAgICAgICAgYzEuY2FsbCgpOworICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJPSyIpOworICAgICAgICB9CisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uICpnZW4oKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3Io
KTsKKyAgICAgICAgeWllbGQgKiBpdGVyOworICAgIH0KKworICAgIGxldCBnID0gZ2VuKCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGcu
bmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVlLCAyKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDIpOworICAgIH0sIGBFcnJv
cjogT0tgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOwor
ICAgIH0sIGA0NGApOworICAgIHNob3VsZEJlKGMxLmNvdW50LCAxKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgLy8gTm8gYHRocm93YCBtZXRob2QuCisgICAgbGV0IGMxID0gbmV3IENh
bGxTaXRlOworICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAg
IH0KKworICAgICAgICAncmV0dXJuJyh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgc2hv
dWxkQmUodmFsdWUsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICBjMS5jYWxsKCk7CisgICAgICAg
ICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogdHJ1ZSB9OworICAgICAgICB9CisKKyAgICAgICAg
W1N5bWJvbC5pdGVyYXRvcl0oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uICpnZW4oKQorICAgIHsKKyAgICAgICAg
bGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3IoKTsKKyAgICAgICAgeWllbGQgKiBpdGVyOworICAgIH0K
KworICAgIGxldCBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRl
ZmluZWQpOworICAgIHNob3VsZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KDIpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcu
dGhyb3coNDIpOworICAgIH0sIGBUeXBlRXJyb3I6IERlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBu
b3QgaGF2ZSBhICd0aHJvdycgbWV0aG9kLmApOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAg
ICAgICAgZy50aHJvdyg0NCk7CisgICAgfSwgYDQ0YCk7CisgICAgc2hvdWxkQmUoYzEuY291bnQs
IDEpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAvLyBObyBgdGhyb3dgIG1ldGhvZCwg
YHJldHVybmAgcmV0dXJucyBhbiBpbmNvcnJlY3QgcmVzdWx0LgorICAgIGxldCBjMSA9IG5ldyBD
YWxsU2l0ZTsKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAg
ICB9CisKKyAgICAgICAgJ3JldHVybicodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKHZhbHVlLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYzEuY2FsbCgpOworICAgICAg
ICB9CisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uICpnZW4oKQor
ICAgIHsKKyAgICAgICAgbGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3IoKTsKKyAgICAgICAgeWllbGQg
KiBpdGVyOworICAgIH0KKworICAgIGxldCBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KDApLnZhbHVlLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgIGcudGhyb3coNDIpOworICAgIH0sIGBUeXBlRXJyb3I6IEl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC5gKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0NGApOworICAgIHNob3VsZEJlKGMx
LmNvdW50LCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gTm8gYHRocm93YCBt
ZXRob2QsIE5vIGByZXR1cm5gIG1ldGhvZC4KKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAg
IG5leHQodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25l
OiBmYWxzZSB9OworICAgICAgICB9CisKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uICpnZW4oKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZXIgPSBuZXcgSXRlcmF0b3Io
KTsKKyAgICAgICAgeWllbGQgKiBpdGVyOworICAgIH0KKworICAgIGxldCBnID0gZ2VuKCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKGcu
bmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVlLCAyKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDIpOworICAgIH0sIGBUeXBl
RXJyb3I6IERlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJvdycgbWV0aG9k
LmApOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0NCk7CisgICAg
fSwgYDQ0YCk7Cit9KCkpOworCisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gYHRocm93YCBkb2Vz
IG5vdCB0aHJvdy4gTm90IHJldHVybnMgYSBvYmplY3QuCisgICAgY2xhc3MgSXRlcmF0b3Igewor
ICAgICAgICBuZXh0KHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1
ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgfQorCisgICAgICAgICd0aHJvdycodmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7
CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAg
IHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVy
cm9yOiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuYCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQ0KTsKKyAgICB9LCBgNDRgKTsK
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gYHRocm93YCBkb2VzIG5vdCB0aHJvdy4g
SWYgcmV0dXJuZWQgaXRlcmF0b3IgcmVzdWx0IGlzIG1hcmtlZCBhcyBkb25lLCBpdCBiZWNvbWVz
IGByZXR1cm5gLgorICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAg
ICAgIH0KKworICAgICAgICAndGhyb3cnKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4geyB2YWx1ZSwgZG9uZTogdHJ1ZSB9OworICAgICAgICB9CisKKyAgICAgICAgW1N5bWJv
bC5pdGVyYXRvcl0oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uICpnZW4oKQorICAgIHsKKyAgICAgICAgbGV0IGl0
ZXIgPSBuZXcgSXRlcmF0b3IoKTsKKyAgICAgICAgeWllbGQgKiBpdGVyOworICAgIH0KKworICAg
IGxldCBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQp
OworICAgIHNob3VsZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KDIpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShnLnRocm93KDQyKS52YWx1ZSwgNDIpOworICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0NCk7CisgICAgfSwgYDQ0YCk7
Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIGByZXR1cm5gIHJldHVybnMgZG9uZTog
ZmFsc2UuCisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0KHZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAg
fQorCisgICAgICAgICdyZXR1cm4nKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wu
aXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVy
ID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIGxldCByZXN1bHQgPSB5aWVsZCAqIGl0ZXI7Cisg
ICAgICAgIHlpZWxkIHJlc3VsdDsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQorCisgICAgbGV0
IGcgPSBnZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7Cisg
ICAgc2hvdWxkQmUoZy5uZXh0KDEpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShnLm5leHQoMiku
dmFsdWUsIDIpOworICAgIHNob3VsZEJlKGcucmV0dXJuKDQyKS52YWx1ZSwgNDIpOworICAgIHNo
b3VsZEJlKGcucmV0dXJuKDQyKS5kb25lLCBmYWxzZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGZ1bmN0aW9uICpnZW4oKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHlpZWxk
ICogWyAwLCAxLCAyIF07CisgICAgICAgIHlpZWxkIHJlc3VsdDsKKyAgICB9CisKKyAgICBsZXQg
ZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworfSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaAppbmRleCA5ZjE4OGJjYzJmNWI1ZWNjMzUzMDUxNGMyMGVkNTY2ODhhNmEyOThj
Li45OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCkBAIC0xODEsNyArMTgxLDcgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNo
U2V0Qml0KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCBuID0g
YXJyYXlMZW5ndGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkg
ewpAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVm
aW5lcy5oCmluZGV4IDQyMTk0MWYzYTQ0YWM2ZGM1ZDliNjdmZDJjZGQ4NmYxMjAxM2M2NDguLmY0
NmUxMTk3M2U1MjRjYTQyODU2YjBkNzY4Mzc5ZTFhOWY0NTkzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaApAQCAtMzY0LDcgKzM2NCw3IEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJM
RV9FUzZfQ0xBU1NfU1lOVEFYKQotI2RlZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMAorI2Rl
ZmluZSBFTkFCTEVfRVM2X0dFTkVSQVRPUlMgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFC
TEVfRVM2X01PRFVMRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjll
ZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFC
TEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZ
TlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7
Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFC
TEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdm
NDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9F
UzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
OwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVO
QUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9F
UzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExB
VEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwog
RU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2
NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcs
NyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NM
QVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFU
T1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwog
RU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9G
SUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmlu
ZGV4IDljZDg0NjVjMDljOWYxNzg2MDRjOWFiMjkyNWE3MGFiNDdjNjNlM2MuLjAyY2M3OThiMjBi
ZDZlNDYyNjNiZTM5ZDkwMWE4ZmU5NGNiOWVkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0z
NCw3ICszNCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04gUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQ
VUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X0dF
TkVSQVRPUlMgUFVCTElDIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9FUzZfR0VORVJBVE9SUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfRVM2X01PRFVMRVMgUFVCTElDIE9GRikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggUFVCTElD
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVN
IFBVQkxJQyBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21h
a2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZDk2MjI0ZDQxNzFi
ZGJhNzE3MGM0NWQzZGQ3MjE3NTQ3NzEyZjUwZC4uMDBlZGJjMDEzYmZmNjZmN2EwM2ZkZDI5YjYz
MWY0NjI1MGJlMjQzNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtNzcsNyArNzcs
NyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgIlN1cHBvcnQgRU1FIHYyIiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
ICJUb2dnbGUgRVM2IGFycm93IGZ1bmN0aW9uIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYICJUb2dnbGUg
RVM2IGNsYXNzIHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQotICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfR0VORVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfR0VO
RVJBVE9SUyAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9NT0RVTEVTICJUb2dnbGUgRVM2IG1vZHVs
ZXMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCAiVG9nZ2xlIEVTNiB0ZW1wbGF0ZSBsaXRlcmFs
IHN5bnRheCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9GSUxURVJTX0xFVkVMXzIgIlRvZ2dsZSBGaWx0ZXJzIE1vZHVsZSBMZXZlbCAyIiBQUklW
QVRFIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4ZDk1Mzk3NzQ3ZjNjN2ZkYTYxNWIxYzA0YWRlZjg5NWNjMjU3Y2ZiLi4xYTI5YjY0ZTUy
MDkxMzE3ODhiMDIyODBmYTc4YTVlZjk1NzU4Y2EzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEtMjkgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1w
bGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFi
bGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxNS0xMS0y
MiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggTWluaUJy
b3dzZXIgaG93IHRvIGVuYWJsZSB0aGUgbW9jayBjb250ZW50IGZpbHRlcgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNkZWI1MjVjZjk0YjVhOGUxMjFiYTI0ZTM3
OWQyMzNkNjkxYzZiODkuLjQ2MjE4ODE1YjE1M2M1MzI5OWJjMjcxZDliNzdmNzQ4YWQzMDcwNWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTE4NSw3ICsxODUs
NyBAQCBCRUdJTgogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCIsIGRl
ZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjbGFzc1N5bnRheCB9LAogCiAgICAgeyBvcHRpb24gPT4g
ImdlbmVyYXRvcnMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IGdlbmVyYXRvcnMgc3VwcG9ydCIsCi0g
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfR0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMCwgdmFs
dWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2
X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQg
fSwKIAogICAgIHsgb3B0aW9uID0+ICJtb2R1bGVzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBtb2R1
bGVzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X01PRFVMRVMiLCBkZWZh
dWx0ID0+IDAsIHZhbHVlID0+IFwkbW9kdWxlc1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5OTFhMTc3Y2UzZDNmMGVhOTRlNmFkNGM2NDAzZWIzOTlk
Y2M5YzM0Li40YWIzZmExOTNjNzhkN2RlNzE3NmFiNWMxYzliOWE2ZjgwNDA4Yzg0IDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEt
MjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFu
ZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAxNS0xMS0yMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gVXBkYXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuMTEuMiByZWxlYXNlLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9D
aGFuZ2VMb2cKaW5kZXggMGM4YWYyYWJiMTEyNDhlYmExZmEwODNiOTMyMjk3YzI3YzQyODBiNS4u
NWFjYjc2NTE5N2Q4ZmMxOTAwM2NkMWI0ZTE0NzJkZDVmZTViNTNhMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBv
cnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi90b29scy92c3Byb3Bz
L0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1
cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxu
aWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRk
IHJ1bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlv
bnMgQVBJIGFuZCBtb2RlbC4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRleCAwZDc0YThmN2VlNTIxZTA0ZjlmZWJl
NGRmYTc5MjlkN2UzM2NjZGNmLi5iMDdkYzUwYWJlMjVlMGI3MGZjYTVjMzA1ZDE2NmJmNWU3MGE4
OGVkIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVy
ZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4K
ICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj5FTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
PC9FTkFCTEVfRU5DUllQVEVEX01FRElBX1YyPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMg
Lz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5B
QkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5B
QkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFC
TEVfRklMRV9TWVNURU0gLz4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKaW5kZXggOTFlZTgwZmRmNGFm
MTU4ZWM1ZWU0ODNkMDY5NmM3MWNlNDg2NDEyZC4uZjViMDhmZjgxMGY3ZTYxYjdjZWM2YWM1ZWE2
OWExYTk4MzUzODBhOCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHMKQEAgLTMyLDcgKzMyLDcgQEAK
ICAgICA8RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgLz4KICAgICA8RU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SPkVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjwvRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SPgogICAgIDxFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIC8+Ci0g
ICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUyAvPgorICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlM+
RU5BQkxFX0VTNl9HRU5FUkFUT1JTPC9FTkFCTEVfRVM2X0dFTkVSQVRPUlM+CiAgICAgPEVOQUJM
RV9FUzZfTU9EVUxFUyAvPgogICAgIDxFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFY
PkVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg8L0VOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg+CiAgICAgPEVOQUJMRV9GSUxFX1NZU1RFTSAvPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266343</attachid>
            <date>2015-12-01 01:20:33 -0800</date>
            <delta_ts>2015-12-01 01:33:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151201182009.patch</filename>
            <type>text/plain</type>
            <size>340680</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDgwZGVmYjlmYzU3OTFmY2JkYTQyYzk5OTk3OWJkOWRjM2EwNzI3Li44YzY4ODVlMmI5NzUwYjRm
YWMyMjQzMDNhODllOTg2MmNjZmU4ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MDkgQEAKKzIwMTUtMTItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIGFjdHVhbGx5ICpkZWYqaW5l
ZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAgICAgICAgMy4gR2VuZXJhdG9y
RnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5lcmF0aW5nIEdlbmVy
YXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQgYmUgZXZhbHVhdGVk
IGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBsZSwKKworICAgICAg
ICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHlpZWxkIGI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7ICAvLyBOb3csIGhl
bGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHdlIGV2YWx1
YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRlciB0aGF0LCB3ZSBj
cmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhpcyBjYW4gYmUgZXhw
bGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIDQu
IG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBqdW1wCisKKyAgICAgICAgV2Ug
d29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFjdHVhbGx5LiBCdXQgd2UgYWRk
IGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9zYXZlIHRvIHRoZSBwb2ludCBz
byBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29uc3RydWN0IHRoZSBDRkcgYXMg
Zm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0b3Igc3dpdGNoKSAtPiAoaW5p
dGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1lcmdlIHBvaW50KSAtPiAobmV4
dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
fAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4o
b3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGluZyBzdWNoIGEgZ3JhcGgsCisK
KyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZyb20gKG9wX3NhdmUpIHRvICht
ZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVzZSogbG9jYWxzIHRoYXQgYXJl
IGRlZmluZWQgYmVmb3JlIChvcF9zYXZlKQorICAgICAgICAgICAgMi4gb3Bfc2F2ZSBzaG91bGQg
Y2xhaW0gdGhhdCBpdCBkb2VzIG5vdCBkZWZpbmUgYW55dGhpbmcuIEFuZCBjbGFpbSB0aGF0IGl0
ICp1c2UqcyBsb2NhbHMgdGhhdCBhcmUgdXNlZCBpbiAobWVyZ2UgcG9pbnQpLgorICAgICAgICAg
ICAgMy4gYXQgb3BfcmVzdW1lLCB3ZSBzZWUgKnVzZSpkIGxvY2FscyBhdCBtZXJnZSBwb2ludCBh
bmQgZGVmaW5lIGFsbCBvZiB0aGVtLgorCisgICAgICAgIFdlIGNhbiBkbyB0aGUgYWJvdmUgdGhp
bmdzIGluIHVzZS1kZWYgYW5hbHlzaXMgYmVjYXVzZSB1c2UtZGVmIGFuYWx5c2lzIGlzIGJhY2t3
YXJkIGFuYWx5c2lzLgorICAgICAgICBBbmQgYWZ0ZXIgYW5hbHl6aW5nIHVzZS1kZWYgY2hhaW5z
LCBpbiBvcF9zYXZlIC8gb3BfcmVzdW1lLCB3ZSBvbmx5IHNhdmUgLyByZXN1bWUgbGl2ZSByZWdp
c3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgKiBBUEkvSlNTY3Jp
cHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUlu
dGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6IEFkZGVk
LgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAo
cmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6
OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8p
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZv
Ojppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omdl
bmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVy
QmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1l
dGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3Rl
ckZvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpU
aGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JD
YWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJ
bkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRs
L0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50
cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAqIGZ0bC9GVExGb3JP
U1JFbnRyeUpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5j
X2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpw
cm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlND
OjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNv
dXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAg
ICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5n
dGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JUaGlzTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzOgor
ICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0
b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzOgorICAgICAgICAo
aXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAg
ICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qczoKKyAgICAgICAg
KGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAg
ICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50
YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3Vs
ZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRv
cik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh1bnJl
YWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmV0dXJuLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlSXRlcmF0b3JSZXN1bHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhp
cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6
CisgICAgICAgIChnZW4pOgorICAgICAgICAoc2hvdWxkQmUuZy5uZXh0KToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzOiBBZGRlZC4K
KyAgICAgICAgKHVucmVhY2hhYmxlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgIChjYXRjaCk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKEIucHJvdG90eXBlLmdlbik6CisgICAgICAgIChC
KToKKyAgICAgICAgKEEucHJvdG90eXBlLmdlbik6CisgICAgICAgIChBKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAocHJvdG90eXBlLmNhbGwp
OgorICAgICAgICAoQXJyYXlzKToKKyAgICAgICAgKEFycmF5cy5wcm90b3R5cGUuU3ltYm9sLml0
ZXJhdG9yKToKKyAgICAgICAgKEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKEl0
ZXJhdG9yLnByb3RvdHlwZS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChJdGVyYXRv
ci5wcm90b3R5cGUuU3ltYm9sLml0ZXJhdG9yKToKKyAgICAgICAgKEl0ZXJhdG9yKToKKyAgICAg
ICAgKGdlbik6CisKIDIwMTUtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIHN0cmVhbXMgc2hvdWxkIG5vdCBk
aXJlY3RseSB1c2UgTnVtYmVyIGFuZCByZWxhdGVkIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzJmMjQzYzQ1ODAz
NjFjM2ZhYjBjYmUwMGEyMWIwNjEyYTA1MzljNi4uNjViZGI2MmRhM2ZiZGU0NjNmODYwNTg3ZWRh
MjU3ZjU1ZTRhMjBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0xMi0wMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQg
TExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlz
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6Zm9y
RWFjaFNldEJpdCk6CisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTUtMTEt
MzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBi
ZXR0ZXIgUk5HIGZvciBNYXRoLnJhbmRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTYzYzBmZmFkN2M1
ODIyOWMwOTFlMzNjZDdkMDk2NTVlMWYyZS4uZDY2OWNmMjIxM2E0YWU3NTZmODBhOWUxYjQyZDhm
MDhmNDViZjE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTEyLTAxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxl
bWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxl
IHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0x
Mi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFtTdHJlYW1zIEFQSV0gc3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBOdW1iZXIg
YW5kIHJlbGF0ZWQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDg4M2ViNDFkMjMzMDUxMzM0
YWZiZmY0YzkzZWQ0N2JiNjQ3ZTc0ODQuLmU1ZjJhMzNhOTZiMDRmZWM0ZDAwMjFiNmZiMDQ2NzE5
YWY0Zjk1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMi0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJ
bXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVu
YWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIw
MTUtMTEtMzAgIEthdGx5biBHcmFmZiAgPGtncmFmZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIEFjdGl2ZURPTU9iamVjdC9ET01XaW5kb3cgUGFnZUNhY2hlU3VzcGVuc2lvbiBjb2RlIHRv
IHN1cHBvcnQgbW9yZSByZWFzb25zIGZvciBzdXNwZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWE0MWMx
NTg4ZTNmYzI0MjUzN2I4Nzk0MTE3MzUzZTZhYjhmNGM0Ni4uMjA0NDc5MmUzZWQ0ZGIwMDFhZGIx
ZTcwOGYxYzI1MDFjYWRjNzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTEy
LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtF
UzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBh
bmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoK
KwogMjAxNS0xMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXggZm9yIHNvbWUgY29tcGlsZXIgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IDNiN2I3NmJmM2E0NDRjOTIxYmU5NzNj
NTc2YzE5ZjY5MmU4ZDIzMmQuLjJmMzc0MjMwMDk3YjUwODI1ODNmODQ0MjdiOTI1NzkzN2QzMDkz
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIHN0YXRpYyBib29sIHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJz
ZTxKU0M6OlByb2dyYW1Ob2RlPigKICAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgCisgICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKICAgICAgICAgZXJyb3IpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWVhOTI0MzY4YzdmODQyYzA1MmNiOGViNjhh
NmNlZjM2ZGJlYWQzOC4uNzc4NjZhMDk5MGEwOTQxMDhkOTcxODhhODJmYzViMjRmY2U3Zjc3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTc2LDYgKzU3NiwxMCBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAg
ICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAg
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0dlbmVy
YXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKICAgICBydW50
aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC02MTUs
NiArNjE5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRp
bWUvSlNEYXRlTWF0aC5jcHAKICAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuY3BwCiAg
ICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogICAgIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwCkBAIC03NTAsNiArNzU1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9M
VVRfU09VUkNFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
Y3BwCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMjA4LDYgKzEy
MTQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1
NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0
OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVf
Q0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9F
UzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJM
RV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVT
ID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVN
UExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDM3NThhMzYzNjRkOTdjMzU4M2M5MTZmM2YzZDk4NWE0ODc3ZjkyYzYuLjc2OGVi
YWE2Mjk3NzJmNmRlZDc5OGE3ZTZkN2Y4MWRlZTBlYjZlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04NCw2ICs4NCw3IEBAIEphdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0
aW9uUHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dsb2JhbE9i
amVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9JbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyBcCkBAIC0xMTksNiArMTIwLDcgQEAgT0JKRUNUX0xV
VF9IRUFERVJTID0gXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEdlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5o
IFwKICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bENvbGxhdG9y
UHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmlu
ZGV4IDQ5NTBiN2QxYTZjMjcxNGE4ZGE5M2EwN2I1ZjVjMGRkYjFjOTBiMWEuLjE4YmViNjg5YzYz
MzBiMjkwODgwYzg2YTI5ZTU4YzEwYTAzMjkwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagpAQCAtNzU3LDYgKzc1NywxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uUmFyZURhdGEuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbmRleGluZ1R5cGUuY3BwIiAvPgpAQCAtNzk2LDYgKzgwMCw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGVNYXRoLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVj
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgpAQCAtOTQ2LDYgKzk1MSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZUNvbnN0
cnVjdG9yLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXERhdGVQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiIC8+CkBAIC0xNTE4LDYgKzE1MjQsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlclRva2Vucy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFyc2VyXFJlc3VsdFR5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZUtleS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
YXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgiIC8+CkBAIC0xNjA0LDYgKzE2MTEs
MTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1
bmN0aW9uUmFyZURhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50cy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmljT2Zmc2V0
LmgiIC8+CkBAIC0xNjYzLDYgKzE2NzUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0MzJBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Zsb2F0NjRBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJhdG9yRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGYzOTFmMjJmOGY3MzkxYzA3MjVjNDRkNTRh
NzQ2MDYwZTg1OGE4M2QuLmUzMjU1NmEzNTRjNzQ1MjM5NzRlM2NhOTgxZDkxY2E2NTViOTkyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTY2OSw2ICs2NjksMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RnVuY3Rpb25SYXJlRGF0YS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZyYW1lLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
R2VuZXJhdG9yUHJvdG90eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0
dGVyU2V0dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTc1MCw2ICs3NjIsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xv
YmFsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTI2MjEsNiArMjYzNiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNl
Q29kZUtleS5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCI+
CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjgy
Miw2ICsyODQwLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUmFyZURhdGEuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJh
bWUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90
b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yVGhpc01vZGUu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0UHV0SW5mby5oIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjkyNyw2ICsyOTYw
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zMjkxLDYgKzMzMjcsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9y
UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIj4KKyAgICAgIDxGaWx0ZXI+RGVy
aXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjM4NWM5YzA0NDJhZjc4ZmY2MTBhYzI0MTdm
NDQ1NWM2MmFjM2UyNC4uNDNlZDAyM2FhM2YwMzU2OTE4Y2I1MjNmNmJjYTRjNWFjMDBlMWEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDgsNiArMTIwOCwxOSBAQAogCQk3
MDlGQjg2QjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NTFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwOUZCODZDMUFFMzM1QzYw
MDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAx
MzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
OEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNw
cCAqLzsgfTsKKwkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTcwQjc5MTk1MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OworCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwQjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJ
CTcwQjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThBMUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlC
MUMwMjRBNDYwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNzBCNzkxOUMxQzAyNEE0OTAw
MjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBEQzNFMDkxQjJERjJD
NzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBERTlB
MDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBM
TEludEFzc2VtYmx5LmggKi87IH07CkBAIC0zMjg0LDYgKzMyOTcsMjAgQEAKIAkJNzA5RkI4NjUx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZB
IC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50
aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODMxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg4MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVy
YXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThB
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlzTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIg
LyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyog
U291cmNlQ29kZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VD
b2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThGMUMwMjQ0RUMw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBEQzNFMDcxQjJERjJD
NzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAv
KiBMTEludEFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50
QXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMDcsNiArNTEzNCw3
IEBACiAJCQkJOTk2QjczMDgxQkQ5RkEyQzAwMzMxQjg0IC8qIERhdGVDb25zdHJ1Y3Rvci5sdXQu
aCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQu
aCAqLywKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0
LmggKi8sCisJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlw
ZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rl
cy5hc20gKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
U291cmNlLmggKi8sCiAJCQkJQTVFQTcxMEQxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oICovLApAQCAtNTIzNSw2ICs1MjYzLDcgQEAKIAkJ
CQk4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovLAogCQkJCTBGOEYy
QjlEMTczMDZDOEIwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCAqLywKIAkJCQk2NUU4NjZFRTBE
RDU5QUZBMDBBMkIyQTEgLyogU291cmNlQ29kZS5oICovLAorCQkJCTcwQjc5MThFMUMwMjQ0Qzkw
MDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8sCiAJCQkJMEY0OTNBRjgxNkQwQ0FEMTAwODQ1
MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLywKIAkJCQk2NUU4NjZFRDBERDU5QUZBMDBBMkIy
QTEgLyogU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi8sCkBAIC01MzY0LDYgKzUzOTMsMTUgQEAKIAkJ
CQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJ
CQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJ
CQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKKwkJ
CQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAorCQkJ
CTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAorCQkJCTcw
Qjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCAqLywKKwkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oICovLAorCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJNzBCNzkxODkxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJNzBCNzkxOEExQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MThCMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovLAogCQkJCTBGRTA1MDExMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMTIxQUE5
MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggKi8sCiAJCQkJMEZFMDUw
MTMxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCAqLywKQEAgLTU0NjMsNiArNTUw
MSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICov
LAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJ
QTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJ
NzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAor
CQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8s
CiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggKi8sCiAJCQkJMEYyQjY2QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCAqLywKIAkJCQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAqLywKQEAgLTY1Nzcs
NiArNjYxNyw3IEBACiAJCQkJQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1l
cy5oICovLAogCQkJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAq
LywKIAkJCQlBN0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMgLyogRnVuY3Rpb25Qcm90b3R5cGUuanMg
Ki8sCisJCQkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5q
cyAqLywKIAkJCQk3Q0Y5QkM1QTFCNjVEOUEzMDA5REIxRUYgLyogR2xvYmFsT2JqZWN0LmpzICov
LAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLApAQCAtNjk5MSw2ICs3MDMyLDcgQEAKIAkJCQlBNzM3
ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8q
IERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5
QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDQxLDYgKzcwODMsNyBA
QAogCQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwODU2MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYx
OEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTcw
Qjc5MTk5MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJD
NDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LApAQCAtNzI2Miw2ICs3MzA1LDcgQEAKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyog
SW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAz
NzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlB
MDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGM0MxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBp
biBIZWFkZXJzICovLApAQCAtNzI4OSw2ICs3MzMzLDcgQEAKIAkJCQk3MDExM0Q0QzFBOERCMDkz
MDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERD
M0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNDBFMTZG
NUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NDMyLDYgKzc0NzcsNyBAQAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAv
KiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUw
QTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtNzQ2OCw2ICs3NTE0LDcgQEAKIAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklU
TXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1
RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MzE3MzgxNDZCQUM2OTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTUx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9iamVj
dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU2MUI3OTRGOEYwMEVEQUY3MSAvKiBM
aXZlT2JqZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjQxLDYgKzc2ODgsNyBAQAogCQkJ
CUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUQxQzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTc2NzMsNiArNzcyMSw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYw
IC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0
RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUz
MTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5
MTlBMUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ1NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFp
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjkzLDYgKzg3NDIsNyBAQAogCQkJCUExQjlFMjNEMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOUIxQzAy
NEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtODcxOSw2ICs4NzY5LDcgQEAKIAkJCQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYz
NjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDIzODkw
MUJFMThDM0MwMDUxNDczNyAvKiBKSVRTdWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4Q0M5M0Mg
LyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQwNTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtODg1Niw2ICs4OTA3LDcgQEAKIAkJCQkxNDJENkYwODEzNTM5QTI4
MDBCMDJFODYgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREMkYzREEx
MzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MkQ2RjExMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzBCNzkxOTgxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MzQwQTQ4NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlD
aGlsZHJlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYg
LyogTWF0aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwMDQsNiArOTA1Niw3IEBACiAJ
CQkJMEZGNDI3NDUxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4tYXR0LmMgaW4gU291cmNl
cyAqLywKIAkJCQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9z
eW4uYyBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0MjczMjE1
OEVCRDU4MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3NkYyNzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDE0MkU1NTFCNzk3M0MwMDBGNEJGNEIgLyogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDEyLDYgKzkwNjUsNyBAQAog
CQkJCTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdy
aXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBE
MzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTkyMUMwMjRB
MjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIw
QzI1OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAppbmRleCA4MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4
YmRjMGEzLi5hOWU2OWJlYTZlZWFlNTc4YjkyZDk4OWUxZTg5MTkxYTMzNDg5OWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcApAQCAtODIsNyArODIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3Ry
dWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0s
IHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLAor
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLAogICAgICAgICAmcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3RydWN0b3JLaW5kKTsKIAogICAgIGlmICghcHJv
Z3JhbSkgewpAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAg
fQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERaVmFy
aWFibGVzLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHks
IEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0TmFtZVZhbHVl
KHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gZnVuY3Rpb25F
eGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9H
ZW5lcmF0b3JQcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNiYmMzNTM0YWUwNTJmNGQ2ZmEyNWJk
ZTcwM2M5M2QzYTc5NWUxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyAyNS4zLjMu
MyBHZW5lcmF0b3JSZXN1bWUgKCBnZW5lcmF0b3IsIHZhbHVlICkKKy8vIDI1LjMuMy40IEdlbmVy
YXRvclJlc3VtZUFicnVwdChnZW5lcmF0b3IsIGFicnVwdENvbXBsZXRpb24pCitmdW5jdGlvbiBn
ZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgLy8gR2VuZXJhdG9yU3RhdGUuCisgICAgY29uc3QgQ29tcGxl
dGVkID0gLTE7CisgICAgY29uc3QgRXhlY3V0aW5nID0gLTI7CisKKyAgICAvLyBSZXN1bWVNb2Rl
LgorICAgIGNvbnN0IE5vcm1hbE1vZGUgPSAwOworICAgIGNvbnN0IFJldHVybk1vZGUgPSAxOwor
ICAgIGNvbnN0IFRocm93TW9kZSA9IDI7CisKKyAgICBsZXQgc3RhdGUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlOworICAgIGxldCBkb25lID0gZmFsc2U7CisgICAgbGV0IHZhbHVlID0gdW5k
ZWZpbmVkOworCisgICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gJ251bWJlcicpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CisKKyAg
ICBpZiAoc3RhdGUgPT09IEV4ZWN1dGluZykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKKworICAgIGlmIChzdGF0ZSA9PT0gQ29tcGxldGVk
KSB7CisgICAgICAgIGlmIChyZXN1bWVNb2RlID09PSBUaHJvd01vZGUpCisgICAgICAgICAgICB0
aHJvdyBzZW50VmFsdWU7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIGlmIChyZXN1
bWVNb2RlID09PSBSZXR1cm5Nb2RlKQorICAgICAgICAgICAgdmFsdWUgPSBzZW50VmFsdWU7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPSBFeGVjdXRpbmc7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3Rh
dGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICB0aHJv
dyBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4geyBkb25lLCB2YWx1ZSB9Owor
fQorCitmdW5jdGlvbiBuZXh0KHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJl
dHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBOb3JtYWxNb2RlICovIDApOwor
fQorCitmdW5jdGlvbiByZXR1cm4odmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgdmFsdWUsIC8qIFJldHVybk1vZGUgKi8gMSk7
Cit9CisKK2Z1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBleGNlcHRpb24sIC8qIFRocm93TW9k
ZSAqLyAyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggNTRkZmQxNjhjYTYwMGViZWYxMzU4MDQzMmM3N2Uy
NWFkNDQ0YWQwYy4uNTk2MDY0YzQwNjgyNDk3ODA4OWM0NjQzZjFjM2RmYmQwNTM0Yjk5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQg
b3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9z
dHJpbmc6CiAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgY2FzZSBvcF9zYXZl
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KaW5kZXggZjZjODlhOWQ0YWQyZjYzNzg1ODczNDcwMTY1MTNiMTQ3MzBlNTM3Mi4uNDNkNzAx
MjQxOTZkZDM2MmNjNjQ0ZjkzYTIxZjlmODFlODdiYjM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtOTAsNiArOTAsOCBAQAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0
aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJy
b3dfZnVuY19leHAiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxf
Y2FsbCIsICJsZW5ndGgiIDogOSB9LApAQCAtMTMwLDcgKzEzMiw5IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpcyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAotICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfQorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9CiAgICAgICAgIF0K
ICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggYzc3YWJlYWEyOTIwOWUz
Mjk5MTNjZDk0Y2ZhZDc1MTUxOWJkOTlmMS4uNzIyOGIwMzMzNjZjN2E2N2I1MTA0ODhkZmU0NWYz
ZGQzY2ZhNDMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3Rh
dGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChW
ZWN0b3I8c3RkOjp1bmlxdWVfcHQKIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2Rl
IHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQg
aW5jbHVkZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5
cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorc3Rh
dGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VG
dW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3Ry
YWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxv
Z2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFu
ZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhh
dCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE2LDE5ICsxMTYsMTkgQEAgc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2Up
LCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwK
KyAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5k
KSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2Nr
LCBvcGVyYW5kKSkKICAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQp
LnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJs
b2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAg
ICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAg
ICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhh
bmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKICAgICAvLyBleGNl
cHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlz
IHBhcnRpY3VsYXIgYnl0ZWNvZGUuCiAgICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29k
ZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CkBAIC0x
MzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsK
ICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAg
ICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZz
ZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKQEAgLTE4
MCw3ICsxODAsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvYwogdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewogICAgIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
OwotICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5s
aW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yNDgsNyArMjQ4
LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3Mo
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
W2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgbV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0Owog
ICAgICAgICB9CiAgICAgfQpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0
LmdldChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCmluZGV4IGNiYjg5NDg2ZTE0YzA1ZjI4NDc0Y2ZkMmFiZGE3NGU5MTBjYTI4ZGIu
LmZlMDI2ZmFhZjllY2I5MjI0YWUzZGFhMGNhNjI1NWE1ZjlhZmFlYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMiw3ICszMiw3
IEBACiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKQEAgLTcxLDcgKzcx
LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfamVx
X251bGw6CiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6Ci0gICAgY2Fz
ZSBvcF9pbmM6IHsKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX3Jlc3VtZTogewogICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI1LDYgKzEyNiw3
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2lu
ZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAt
MTUzLDYgKzE1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBj
YXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfbmV3
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKQEAgLTIzNCw2ICsyMzcsMjIgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAg
ICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGlu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJn
ZVBvaW50QmxvY2sgPSBudWxscHRyOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayog
c3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgaWYgKHN1Y2Nl
c3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQp
IHsKKyAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KG1lcmdlUG9pbnRCbG9jayk7CisgICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
Lm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0yNDEsNyArMjYwLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CkBAIC0yNTYsNiArMjc1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwK
ICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBj
YXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBv
cF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMxNiw2
ICszMzYsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4
cDoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19hcnJvd19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2Nh
bGxfdmFyYXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgpAQCAtMzkyLDcgKzQx
NCwxNSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjb2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9m
ZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKyAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUo
KSA9PSAxKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0
Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9m
ZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggOWUxMzg2ZTNkMzJkNjFkYmE5ZjgxOWNlYzk3YTcwMDIzYzliOGYz
Zi4uM2UyZTZlY2JmYmM5MWZhYTUzYmI4OWM2YjcxNmQ5OGU1MGE5MzVlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU4NSw3ICs1ODUsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAg
ICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAogICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkpLAogICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rp
b24pKSwKLSAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9u
dW1WYXJzKTsKKyAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZUxvY2FscywgbV9u
dW1WYXJzKTsKICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUoKSA9PSBGdW5j
dGlvbkNvZGUpCiAgICAgICAgIG91dC5wcmludGYoIjsgbGV4aWNhbCBlbnZpcm9ubWVudCBpbiBy
JWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50ZigiXG4i
KTsKQEAgLTY4MCw2ICs2ODAsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCisgICAgaWYgKG1fcmFyZURhdGEgJiYg
IW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7CisgICAg
ICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7CisgICAgICAgIHVuc2ln
bmVkIGkgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKKyAgICAgICAgICAgIGxp
dmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7CisgICAgICAg
ICAgICArK2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLnNpemUoKSk7CisgICAgfQorCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0K
IApAQCAtMTMwMyw2ICsxMzE1LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
Im5ld19nZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBm
JWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYw
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMyMCw2ICsxMzQw
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CiAgICAgICAg
ICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTUwOCw2ICsxNTM2LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9v
a0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lz
dGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAg
ICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAg
ICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRh
dGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAg
ICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGlu
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTY3Miw3ICsxNzIxLDcgQEAgY2xhc3MgUHV0VG9T
Y29wZUZpcmVEZXRhaWwgOiBwdWJsaWMgRmlyZURldGFpbCB7CiAgICAgOiBKU0NlbGwoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChvdGhlci5tX2dsb2JhbE9iamVjdCkKICAg
ICAsIG1faGVhcChvdGhlci5tX2hlYXApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyhvdGhl
ci5tX251bUNhbGxlZVJlZ2lzdGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1f
bnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAs
IG1faXNDb25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX3Nob3VsZEFs
d2F5c0JlSW5saW5lZCh0cnVlKQpAQCAtMTcyOSw2ICsxNzc4LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFy
ZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1
bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQ7CiAgICAgfQogICAgIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsK
QEAgLTE3MzksNyArMTc4OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICA6IEpTQ2VsbCgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+dm0oKSwgdGhpcywgc2NvcGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9oZWFwKCZtX2ds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnModW5saW5r
ZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9udW1DYWxsZWVMb2Nh
bHModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJz
KHVubGlua2VkQ29kZUJsb2NrLT5tX251bVZhcnMpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IodW5s
aW5rZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJ
bmxpbmVkKHRydWUpCkBAIC0xOTA5LDYgKzE5NTksOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9u
bWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVu
Y2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCisgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50
IGJ5dGVjb2RlIG9mZnNldHMuCisgICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0czsKKwogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25z
KGluc3RydWN0aW9uQ291bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0
aW9uUmVhZGVyLmF0RW5kKCk7ICkgewpAQCAtMjE5Nyw2ICsyMjUwLDE1IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMjA4LDYgKzIyNzAsMjAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGOjptb3ZlKGlu
c3RydWN0aW9ucyk7CiAKKyAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lz
IHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVk
IHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KKyAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSkgeworICAgICAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKKyAg
ICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisgICAgICAgICAgICBz
aXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgLy8gU2V0IG9wdGltaXphdGlv
biB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNp
bmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUg
aW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rp
b24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpA
QCAtMjIzMSw3ICsyMzA3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICA6IEpTQ2Vs
bCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0o
KSwgdGhpcywgZ2xvYmFsT2JqZWN0KQogICAgICwgbV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVl
TG9jYWxzKDApCiAgICAgLCBtX251bVZhcnMoMCkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxz
ZSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKGZhbHNlKQpAQCAtMzA1OCw2ICszMTM0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkK
ICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CisgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUg
YWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDAyOSw3
ICs0MTA2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KDApOwogICAgIAotICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51
bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlTG9jYWxzKSkgewogICAg
ICAgICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9u
ZyBudW1iZXIgb2YgYml0cyBpbiByZXN1bHQhXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIFJl
c3VsdDogIiwgbGl2ZUF0SGVhZCwgIlxuIik7CkBAIC00MDM3LDcgKzQxMTQsNyBAQCB2b2lkIENv
ZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAg
IH0KICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZVJlZ2lzdGVyczsgaS0t
OykgeworICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtQ2FsbGVlTG9jYWxzOyBpLS07KSB7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChsaXZlQXRIZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMy
NGEyZDI1ZjliODNjMDUyZDgyZWMuLjNjYmU3NWM0OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAw
YWE5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGludCBudW1QYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1Q
YXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KKwogICAgIGludCogYWRkcmVzc09mTnVt
UGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBhcmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihD
b2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0KIApAQCAtNjU0LDYgKzY1NywxOCBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0
cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgp
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0K
ICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRl
eCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUg
cmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07CisgICAgfQorICAgIEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKKyAgICB9CisKICAgICBFdmFsQ29k
ZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9k
ZSB7CkBAIC04NTUsNyArODcwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcmVtYWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAog
ICAgIGludCBtX251bUxvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXM7Ci0gICAgaW50IG1fbnVt
Q2FsbGVlUmVnaXN0ZXJzOworICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9u
dW1WYXJzOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICAKQEAgLTkwMCw2ICs5
MTUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9y
PFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3Ry
aW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9y
PEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisKICAgICAgICAgRXZh
bENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdk
NGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNjZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4
YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAog
CiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRXhl
Y3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxT
b3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdl
dCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUo
aW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICAgICAgU291cmNlQ29kZUtleSBz
b3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlw
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoc291cmNlQ29kZUtleSkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJj
ZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpN
b2RlIHRoaXNURFpNb2RlLCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBz
Y29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJs
ZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclRE
WihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRo
aXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICAgICAgaWYgKCFldmFsRXhl
Y3V0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4
dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRy
aWVzKQotICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBX
cml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZh
bFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAg
ICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291
cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAg
ICAgbV9jYWNoZU1hcC5zZXQoc291cmNlQ29kZUtleSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRh
YmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAg
ICB9CkBAIC04MCwxNyArODcsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29wZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVj
dCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZh
bFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2
YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nlc3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBj
YW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAgICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5
IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3BlLCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAg
ICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2
YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aCgpIAorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJj
ZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgp
CiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFibGVTY29wZShzY29wZSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4
ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VD
b2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwg
U291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hl
TWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2
OWI1MGIxMDJhMTVkLi4yNjAyYmU3YzRmYmVjZTlkZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApA
QCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVmIEV4ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhl
Y3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRl
ICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZs
YWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQg
YmUgcmVvcmdhbml6ZWQuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5m
byhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUs
IGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAg
ICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2Rl
KQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1f
aXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0
b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAg
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3Rv
cktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5n
KSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpOworICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1cGVyQmluZGluZykpOworICAgICAgICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9k
ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAK
ICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0
aW9uOyB9CkBAIC00OCw4ICs1NSwxMCBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01v
ZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0g
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bjsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAx
OwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAg
U291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCmluZGV4IGQ2MGZkZjdkM2NmMzYwZTNlYzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQuLjk4
OTkzOWIyMzMyMTRjZmQ0NWJlMDdiYWU4NjA5ZmM4NGM3ZWIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01
NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3Nl
cToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAg
IGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3Ni4u
ODdlODIzM2YxZmUzYThiZWM0MDIzMGQyOThiMDllNmRmZjlhMzg5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01
NCw3ICs1NCw3IEBACiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFi
bGVJbmZvJiBpbmZvKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtVmFy
cygwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9j
YWxzKDApCiAgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1fdm0odm0pCiAgICAgLCBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQpAQCAtNjUsMTAgKzY1LDEy
IEBACiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpCi0gICAg
LCBtX2lzQXJyb3dGdW5jdGlvbihpbmZvLmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5l
cmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9k
ZSgpKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1
cGVyQmluZGluZygpKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgw
KQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCisgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBh
cnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlw
ZSkKICAgICAsIG1fYXJyYXlQcm9maWxlQ291bnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZmE1MTRjMTU2YTdjYjdj
ZWY3NGE5ZjEwMDAxNjViODYxZjBmODNjZi4uYmNhMmMwNGFjYTQzODI5MjE3NTY5NThiYWE2OGRi
MzBlOGYxMzVjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5o
IgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFu
Z2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5k
bGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
QEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTExNiw3ICsx
MTgsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJv
b2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0yMDIsNiArMjA0LDggQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2Vu
ZXJhdG9yVGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlz
TW9kZT4obV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmlu
ZGluZyk7IH0KIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKQEAgLTIzMiw3ICsyMzYs
NyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgaW50
IG1fbnVtVmFyczsKICAgICBpbnQgbV9udW1DYXB0dXJlZFZhcnM7Ci0gICAgaW50IG1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOworICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKIAogICAgIC8vIEp1bXAg
VGFibGVzCiAKQEAgLTM4NywxMiArMzkxLDE0IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsK
KyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBtX3N1
cGVyQmluZGluZyA6IDE7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25l
ZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKIAorICAgIFNvdXJjZVBh
cnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBD
b2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2ZGEx
ODU5YjNhZDJkMWM2NWQ4YTUzZmYxMTM3ZTFlNDdlOWQ1OWI2Li4zZjQ5NDg4NWFmNDljMjhlMjZm
NDk3ZDY3NWY2NGExNmM5YjlhZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQAogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLAotICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9u
S2luZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvciwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5N
b2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKSA/IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluOwogICAgIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQo
KSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3Q7CiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCkpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBh
cnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1l
KCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXJy
b3IsIG51bGxwdHIpOworICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFi
bGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9u
KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtNjcsNyArNjcsNyBAQCBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKAogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJl
cygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6
Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlv
bi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNT
dHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNB
cnJvd0Z1bmN0aW9uKSk7CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0Fj
dGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5n
ZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2Rl
KSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRv
cj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBn
ZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTk5LDcgKzk5LDggQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAs
IG1fY29uc3RydWN0QWJpbGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0
eSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25N
b2RlKCkpCi0gICAgLCBtX2lzQXJyb3dGdW5jdGlvbihub2RlLT5pc0Fycm93RnVuY3Rpb24oKSkK
KyAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRv
clRoaXNNb2RlKSkKKyAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
b2RlLT5zdXBlckJpbmRpbmcoKSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CkBA
IC0xODAsNyArMTgxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBib29sIGlzQXJy
b3dGdW5jdGlvbikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVG
b3JDYWxsOgpAQCAtMTk2LDcgKzE5Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIAogICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigp
ID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKLSAg
ICAgICAgZXJyb3IsIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgIGVycm9yLCBwYXJzZU1vZGUp
OwogICAgIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkOGU4MjI5MzkwZTU3N2NiNDgwZmIwZTkyOTNm
NDFiYTQyZDljMWY4Li5jOGJiYTBhYzMyYmU0MzdmZmI1ZGYzZTNmOWUwNWIwNDc4YTUzNjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Np
b25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUg
IkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgpAQCAtNjUsMTAgKzY2LDEwIEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYg
c291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxs
cHRyKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2
bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RG
Ojptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
dHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSwgbm9kZSwg
dW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2Rl
LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODIsNiArODMs
OCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5T
dHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CisgICAgR2VuZXJhdG9y
VGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxH
ZW5lcmF0b3JUaGlzTW9kZT4obV9nZW5lcmF0b3JUaGlzTW9kZSk7IH0KKyAgICBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5n
PihtX3N1cGVyQmluZGluZyk7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1l
U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KICAg
ICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTk1LDcgKzk4LDcgQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsIFBy
b2ZpbGVyTW9kZSwgCi0gICAgICAgIFBhcnNlckVycm9yJiwgYm9vbCk7CisgICAgICAgIFBhcnNl
ckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBF
eGVjU3RhdGUmLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIApAQCAt
MTI1LDEwICsxMjgsOSBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0
QWJpbGl0eSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAg
ICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQotICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAogcHJp
dmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFi
aWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRG
dW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBA
IC0xNTgsNyArMTYwLDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rp
b25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCi0gICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rp
b24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOworICAgIHVuc2ln
bmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAxYWJiYmE0Y2QxN2QwMzU1NDRkZDY3
ODc2OGQ2ODA5MzM5ODU0YmVhLi4zY2QxNzE3MTZlZTE4N2UzZjRhYmI0ZjBkMTlhNWRkZjFjNzgw
MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAt
MjI3LDkgKzIyOSwzMyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgICAgICB9CiAgICAgfQogCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGNv
ZGVCbG9jay0+cGFyc2VNb2RlKCk7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhp
bmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91
bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVk
c0FyZ3VtZW50cyA9IGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+
dXNlc0V2YWwoKTsKKworICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRz
Ii4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JNb2RlKQorICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOworCisg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSAmJiBuZWVkc0FyZ3VtZW50cykgeworICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJv
dmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJv
dmlkZXMgImFyZ3VtZW50cyIuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMg
b2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCisg
ICAgICAgIC8vIFRvIHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBh
cyBhcmd1bWVudHMgb2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVu
Y2UgaXQgZnJvbSBhIGdlbmVyYXRvci4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgZnVuY3Rp
b24gKmdlbihhLCBiID0gaGVsbG8oKSkKKyAgICAgICAgLy8gICAgeworICAgICAgICAvLyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rp
b24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJh
dG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAgICAg
ICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5j
ZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgorICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4K
KyAgICAgICAgLy8gICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAgIC8v
ICAgIH0KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAg
fQorCiAgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncykKICAgICAgICAgZnVuY3Rp
b25Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwog
ICAgIApAQCAtMjU0LDE0ICsyODAsMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKCkKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogICAgIAogICAgIG1fY2Fs
bGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICAKKworICAgIGluaXRp
YWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEg
c2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBq
dW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdp
c3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CisgICAgICAgIGlmIChnZW5lcmF0b3JUaGlzTW9kZSgp
ID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKKyAgICAgICAgICAgIGVtaXRNb3ZlRW1wdHlW
YWx1ZSgmbV90aGlzUmVnaXN0ZXIpOworCisgICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1t
IGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0
eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBg
bmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFk
IG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCisgICAg
ICAgIC8vIEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVz
IG9uZSBgbmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgYmVnaW5HZW5l
cmF0b3IoZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBJbml0aWFsIHN0
YXRlLgorICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOworICAgIH0KKwogICAgIGlm
IChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5v
ZGUtPmZ1bmN0aW9uTW9kZSgpKSkgeworICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUg
PSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9v
bCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQ7CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVu
dCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwog
ICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9j
YXRlIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1l
dGVyIGV4cHJlc3Npb25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVy
cm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXpl
VmFyTGV4aWNhbEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQog
Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIg
cGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5n
IGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRl
cnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1Jl
Z2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0
aGlzCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAg
ICAgaWYgKHBhdHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9yZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9
IHN0YXRpY19jYXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAg
ICAgLy8gRmlndXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVu
dHMuCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwz
NiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAog
ICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+
aXNBcnJvd0Z1bmN0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rp
b25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAg
IGVtaXRMb2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZTogeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAg
ICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYK
KyAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworCisgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJl
Z2lzdGVyKTsKKyAgICAgICAgZW1pdENyZWF0ZVRoaXMobV9nZW5lcmF0b3JSZWdpc3Rlcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOiB7CisgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkg
YmVmb3JlIGhlcmUuCisgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CiAgICAg
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFy
Z2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQpAQCAtNDkyLDkgKzU1Myw4IEBA
IFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25Ob2Rl
LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKLSAgICAgICAgICAgIGVtaXRM
b2FkQXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIH0KIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVm
b3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29w
ZVN0YWNrKCkiIGlzIGNhbGxlZApAQCAtNzk5LDYgKzg1OSwyMiBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKQogICAgIHJldHVybiAmcGFy
YW1ldGVyOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1ldGVy
cyhGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ug
c3VyZSB0aGF0IHBhcmFtZXRlcnMKKyAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5v
dGVkLgorICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJl
c2VydmUgc3BhY2UgZm9yICJ0aGlzIgorICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBwYXR0
ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKKyAgICAgICAgaWYgKHBhdHRlcm4tPmlzUmVz
dFBhcmFtZXRlcigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXN0UGFyYW1l
dGVyKTsKKyAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19jYXN0PFJlc3RQYXJh
bWV0ZXJOb2RlKj4ocGF0dGVybik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5pdGlh
bGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
KTsKQEAgLTgyNiwxNyArOTAyLDE3IEBAIFVuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVy
YXRvcjo6dmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVzdHJ1Y3R1cmluZ1BhdHRlCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3RlcigpCiB7Ci0gICAgbV9jYWxsZWVS
ZWdpc3RlcnMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJz
LnNpemUoKSkpOwotICAgIGludCBudW1DYWxsZWVSZWdpc3RlcnMgPSBtYXg8aW50PihtX2NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSk7Ci0g
ICAgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCksIG51bUNhbGxlZVJlZ2lzdGVycyk7Ci0gICAgbV9jb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzID0gbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgIHJldHVybiAm
bV9jYWxsZWVSZWdpc3RlcnMubGFzdCgpOworICAgIG1fY2FsbGVlTG9jYWxzLmFwcGVuZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKKyAgICBpbnQgbnVt
Q2FsbGVlTG9jYWxzID0gbWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBt
X2NhbGxlZUxvY2Fscy5zaXplKCkpOworICAgIG51bUNhbGxlZUxvY2FscyA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1DYWxsZWVMb2NhbHMp
OworICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyA9IG51bUNhbGxlZUxvY2FsczsK
KyAgICByZXR1cm4gJm1fY2FsbGVlTG9jYWxzLmxhc3QoKTsKIH0KIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cmVjbGFpbUZyZWVSZWdpc3RlcnMoKQogewotICAgIHdoaWxlIChtX2NhbGxlZVJl
Z2lzdGVycy5zaXplKCkgJiYgIW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKS5yZWZDb3VudCgpKQot
ICAgICAgICBtX2NhbGxlZVJlZ2lzdGVycy5yZW1vdmVMYXN0KCk7CisgICAgd2hpbGUgKG1fY2Fs
bGVlTG9jYWxzLnNpemUoKSAmJiAhbV9jYWxsZWVMb2NhbHMubGFzdCgpLnJlZkNvdW50KCkpCisg
ICAgICAgIG1fY2FsbGVlTG9jYWxzLnJlbW92ZUxhc3QoKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6Om5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpCkBAIC0xOTE1LDcgKzE5OTEs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSgKICAgICAgICAgdmFy
T2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tl
cikpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJLaW5kOjpTdGFj
ayk7Ci0gICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpKTsKKyAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zm
c2V0KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOwogICAg
IH0KICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgMCk7CiAgICAgc3lt
Ym9sVGFibGUtPmFkZChsb2NrZXIsIHByb3BlcnR5LmltcGwoKSwgbmV3RW50cnkpOwpAQCAtMjMx
MiwxMiArMjM4OCwxMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEFzc2Vy
dChSZWdpc3RlcklEKiBjb25kaXRpb24sIGludCBsaW5lKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBzaXplX3Qg
YmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmNyZWF0ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKKyAgICBt
X3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QtPmluZGV4KCksIGJlZ2luICsg
Myk7CiAKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjQ4MSwyMCArMjU1Nyw2
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXlXaXRoU2l6ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gZW1pdE5ld0Z1
bmN0aW9uSW50ZXJuYWwoZHN0LCBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihmdW5jdGlvbikpKTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIo
KS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGluZGV4KTsKLSAgICByZXR1
cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld1JlZ0V4
cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIGVtaXRPcGNvZGUob3Bf
bmV3X3JlZ2V4cCk7CkBAIC0yNTAzLDEzICsyNTY1LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHAp
CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYywgT3Bj
b2RlSUQgb3Bjb2RlSUQpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgQmFzZUZ1bmNFeHByTm9kZSogZnVuYykK
IHsKLQotICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHAgfHwgb3Bjb2RlSUQg
PT0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKLSAgICAKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogZnVuY3Rpb24gPSBmdW5jLT5tZXRhZGF0YSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9j
b2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gb3BfbmV3X2Z1bmNfZXhwOworICAgIHN3aXRjaCAoZnVuY3Rp
b24tPnBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJyb3dfZnVuY19l
eHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTIyLDE3ICsyNTk2LDE4IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihSZWdpc3RlcklE
KiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2Rl
KiBmdW5jKQogewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25ld19m
dW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNF
eHByTm9kZSogZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVj
dG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXNDbGFzc0NvbnN0
cnVjdG9yKQorICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9yVGhpc01vZGUo
KSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpDaGVjayh0aGlz
UmVnaXN0ZXIoKSk7CiAgICAgCi0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRzdCwgZnVuYywg
b3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29t
bW9uKGRzdCwgZnVuYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjU1MCw2ICsyNjI1LDE5
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVj
dG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9
IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7Cisg
ICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZSkKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMp
OworICAgIGVsc2UKKyAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGlu
ZGV4KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENh
bGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMzc3Myw2ICszODYxLDI0IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogaXRlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IG5leHQgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IsIHByb3BlcnR5
TmFtZXMoKS5uZXh0KTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyLCAxKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgaXRlcmF0b3IpOworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgZW1pdENhbGwoZHN0LCBuZXh0LmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIG5leHRBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRp
dm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQo
KSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIGVtaXRMYWJlbCh0
eXBlSXNPYmplY3QuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVs
PiBkb25lID0gbmV3TGFiZWwoKTsKQEAgLTM4NTUsNCArMzk2MSwyMjggQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwg
dW5zaWduZWQgbnUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBSZWZQdHI8
TGFiZWw+IG1lcmdlUG9pbnQgPSBuZXdMYWJlbCgpOworICAgIHNpemVfdCB5aWVsZFBvaW50SW5k
ZXggPSBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7CisgICAgZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CisgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMg
dXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0
KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdFJldHVybihhcmd1bWVudCk7Cisg
ICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
fQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQoreworICAgIHNpemVfdCBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdl
UG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBlbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpOworICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgZW1pdExhYmVsKG1l
cmdlUG9pbnQpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQoreworICAgIGVtaXRZaWVsZFBvaW50KGFyZ3VtZW50KTsK
KworICAgIFJlZlB0cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7
CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7
CisKKyAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOworICAgIGVtaXRF
cXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOworICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CisgICAgLy8gUmV0dXJuLgorICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpOworICAgICAgICBpZiAoaXNJ
bkZpbmFsbHlCbG9jaygpKSB7CisgICAgICAgICAgICByZXR1cm5SZWdpc3RlciA9IGVtaXRNb3Zl
KG5ld1RlbXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0
UG9wU2NvcGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZW1pdFJl
dHVybihyZXR1cm5SZWdpc3Rlci5nZXQoKSk7CisgICAgfQorCisgICAgLy8gVGhyb3cuCisgICAg
ZW1pdExhYmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgIGVtaXRUaHJvdyhnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkpOworCisgICAgLy8gTm9ybWFsLgorICAgIGVtaXRMYWJlbChub3JtYWxMYWJl
bC5nZXQoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKK30KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICB7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpdGVyYXRvciA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBhcmd1
bWVudCwgcHJvcGVydHlOYW1lcygpLml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgICAgIGVt
aXRNb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVtaXRD
YWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBh
cmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkp
OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVs
KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gbmV4dEVsZW1lbnQgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExvYWQodmFsdWUuZ2V0KCksIGpzVW5kZWZpbmVk
KCkpOworCisgICAgICAgICAgICBlbWl0SnVtcChuZXh0RWxlbWVudC5nZXQoKSk7CisKKyAgICAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAg
IGVtaXRMYWJlbChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgZW1pdExvb3BIaW50KCk7
CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0WWllbGRQb2ludCh2YWx1ZS5n
ZXQoKSk7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3
TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3
TGFiZWwoKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRp
b24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0
RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9k
ZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgcmV0dXJuTGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJv
dWdoIHRvIFRocm93TW9kZS4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IHJldHVyblNlcXVlbmNlID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IHJldHVybldpdGhJdGVyYXRvclJlc3VsdCA9IG5ld0xhYmVsKCk7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybkl0ZXJhdG9yUmVzdWx0ID0g
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgLy8gVGhyb3cuCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHRocm93TWV0aG9kRm91bmQg
PSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhy
b3dNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS50aHJvd0tleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVt
cElmRmFsc2UoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCB0aHJvd01ldGhvZC5nZXQo
KSksIHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRJ
dGVyYXRvckNsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiRGVsZWdhdGVkIGdlbmVyYXRvciBkb2Vz
IG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbCh0aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
ci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHRocm93QXJndW1lbnRzLmFy
Z3VtZW50UmVnaXN0ZXIoMCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCB0aHJvd01ldGhv
ZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCB0aHJvd0FyZ3VtZW50cywgbm9kZS0+ZGl2b3Qo
KSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXAocmV0dXJuV2l0aEl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBSZXR1cm4uCisgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKHJldHVybkxhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuTWV0aG9kRm91bmQgPSBuZXdMYWJlbCgp
OworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuTWV0aG9kID0g
ZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVz
KCkucmV0dXJuS2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShl
bWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1ldGhvZC5nZXQoKSksIHJldHVy
bk1ldGhvZEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZSh2YWx1
ZS5nZXQoKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEp1bXAocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMYWJlbChyZXR1cm5NZXRob2RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50
cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcmV0dXJu
TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywgbm9kZS0+
ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0byByZXR1cm5XaXRoSXRlcmF0b3JSZXN1bHQu
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybldp
dGhJdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybkl0ZXJhdG9yUmVzdWx0SXNPYmplY3QgPSBuZXdM
YWJlbCgpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3Qo
bmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpKSwgcmV0dXJuSXRlcmF0
b3JSZXN1bHRJc09iamVjdC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5
cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkl0ZXJh
dG9yUmVzdWx0SXNPYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IHJldHVybkZyb21HZW5lcmF0b3IgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5kb25lKSwgcmV0dXJuRnJvbUdlbmVyYXRv
ci5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCks
IHJldHVybkl0ZXJhdG9yUmVzdWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHJldHVybkl0ZXJhdG9yUmVzdWx0
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIC8v
IEZhbGx0aHJvdWdoIHRvIHJldHVyblNlcXVlbmNlLgorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbkZpbmFsbHlCbG9jaygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdFBvcFNjb3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0UmV0dXJuKHZhbHVlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBOb3JtYWwuCisgICAgICAgICAgICAgICAgZW1p
dExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0TW92ZSh2YWx1
ZS5nZXQoKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW1pdExhYmVsKG5leHRFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKHZhbHVlLmdldCgpLCBpdGVy
YXRvci5nZXQoKSwgdmFsdWUuZ2V0KCksIG5vZGUpOworICAgICAgICAgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlO
YW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdEdldEJ5
SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAg
ICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFydC5nZXQoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZW1pdExhYmVsKGxvb3BEb25lLmdldCgpKTsKKyAgICB9CisKKyAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlLmdldCgpOworfQorCisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQoreworICAgIFJl
Z2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGUpKTsKKyAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgY29tcGxldGVkU3RhdGUpOworfQorCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCit7CisgICAgUmVm
UHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKKyAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOworfQor
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0
ZSkKK3sKKyAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRl
KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZh
dWx0TGFiZWwpCit7CisgICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0
U3RhY2subGFzdCgpOworICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKwor
ICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBpbnN0cnVjdGlvbnMoKVtz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOworCisg
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRT
d2l0Y2hKdW1wVGFibGUoKTsKKyAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0OworICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsK
KyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOworICAgIGZvciAodWludDMyX3Qg
aSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgeworICAgICAg
ICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBo
YXZlIGJlZW4gZml4ZWQsIHNvCisgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAi
Zm9yd2FyZCIgcmVmZXJlbmNlcworICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzW2ldLT5pc0ZvcndhcmQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMp
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDA3MzE2
YjFhNzQ0MzEwZDFiODJiNGVlN2JiYmI4NWQ2NGY0YzNjZGYuLmYwMTY5NzhlMWExMDk3ZTQ4NTk2
YjI3MmQyNzFjYWIyNDlkNGZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNk
ZWZpbmUgQnl0ZWNvZGVHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKQEAgLTI4MCw2ICsy
ODEsOCBAQAogCiAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3Rvcktp
bmQoKTsgfQorICAgICAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgpOyB9CisgICAgICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwogCkBA
IC0yOTcsNiArMzAwLDggQEAKIAogICAgICAgICBSZWdpc3RlcklEKiBzY29wZVJlZ2lzdGVyKCkg
eyByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOyB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yUmVnaXN0ZXIoKSB7IHJldHVybiBtX2dlbmVyYXRvclJlZ2lzdGVyOyB9CisKICAgICAgICAg
Ly8gUmV0dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3Rl
cnMgcmV0dXJuZWQgYnkKICAgICAgICAgLy8gbmV3VGVtcG9yYXJ5IHJlcXVpcmUgYSBtb2RpZmll
ZCBmb3JtIG9mIHJlZmVyZW5jZSBjb3VudGluZzogYW55CiAgICAgICAgIC8vIHJlZ2lzdGVyIHdp
dGggYSByZWZjb3VudCBvZiAwIGlzIGNvbnNpZGVyZWQgImF2YWlsYWJsZSIsIG1lYW5pbmcgdGhh
dApAQCAtNTAwLDEwICs1MDUsOCBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXlX
aXRoU2l6ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGxlbmd0aCk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwo
UmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1
bmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lz
dGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLSAg
ICAgICAgdm9pZCBlbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCosIEJhc2VGdW5jRXhw
ck5vZGUqLCBPcGNvZGVJRCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0
aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOwogCkBA
IC01OTcsNiArNjAwLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SXRlcmF0b3JOZXh0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNv
bnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEq
IG5vZGUpOwogICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJh
dG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFJlc3RQYXJhbWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBu
dW1QYXJhbWV0ZXJzVG9Ta2lwKTsKQEAgLTY0NSwxMiArNjQ5LDI4IEBACiAgICAgICAgIHZvaWQg
YmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAg
ICB2b2lkIGVuZFN3aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4
cHJlc3Npb25Ob2RlKiosIExhYmVsKiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90
IHJhbmdlKTsKIAorICAgICAgICB2b2lkIGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqKTsKKyAg
ICAgICAgdm9pZCBlbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgdm9pZCBlbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgICAgIHZvaWQgZW1pdEdl
bmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UoaW50MzJfdCBzdGF0ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJl
Z2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2
b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbmRHZW5lcmF0
b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0
YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CisgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNd
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKwogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIAogICAgICAgICBib29sIHNob3VsZEVtaXRQ
cm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7IH0KICAgICAg
ICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVn
SG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CisKKyAgICAgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUo
KTsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApAQCAtNjY4LDYgKzY4OCw3IEBACiAgICAg
ICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVT
Y29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wg
aXNDYXB0dXJlZCk7CisgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1v
bihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSopOwogCiAgICAgcHVibGljOgogICAgICAg
ICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNh
bk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3Vs
dCA9IG51bGxwdHIpOwpAQCAtNzMxLDcgKzc1Miw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQmIHJl
Z2lzdGVyRm9yKFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChyZWcuaXNMb2NhbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVy
c1tyZWcudG9Mb2NhbCgpXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNb
cmVnLnRvTG9jYWwoKV07CiAKICAgICAgICAgICAgIGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFj
azo6Q2FsbGVlKQogICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyOwpAQCAt
NzUzLDEyICs3NzQsMjIgQEAKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNV
bmRlclREWik7CiAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9k
ZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NwogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IG1ldGFkYXRh
LT5wYXJzZU1vZGUoKTsKICAgICAgICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKLSAgICAgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSkpCisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8
IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAg
ICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpCisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSAmJiBtZXRhZGF0YS0+
c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCisgICAgICAgICAgICAgICAg
Y29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKKwor
ICAgICAgICAgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0
b3JUaGlzTW9kZTo6Tm9uRW1wdHk7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHk7CiAKLSAg
ICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0s
IG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVj
dEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwg
bWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNN
b2RlLCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZh
cmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKQEAgLTc2Niw2ICs3OTcsNyBA
QAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJz
dFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENh
bGxWYXJhcmdzKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJl
Z2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklE
KiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJ
RCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVQYXJhbWV0ZXJzKEZ1bmN0aW9uUGFyYW1l
dGVycyYpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVWYXJMZXhpY2FsRW52aXJvbm1lbnQoaW50
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1
bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjayhGdW5jdGlvblBhcmFt
ZXRlcnMmLCBGdW5jdGlvbk5vZGUqLCBTeW1ib2xUYWJsZSosIGludCBzeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXgsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoVW5pcXVlZFN0cmluZ0ltcGwqKT4m
IGNhcHR1cmVzKTsKIApAQCAtODA1LDYgKzgzNyw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
dG9wTW9zdFNjb3BlIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2FyZ3VtZW50
c1JlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2dlbmVy
YXRvclJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFs
dWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9nbG9iYWxPYmpl
Y3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRS
ZWdpc3RlciB7IG51bGxwdHIgfTsKQEAgLTgxMiw3ICs4NDUsNyBAQAogCiAgICAgICAgIFNlZ21l
bnRlZFZlY3RvcjxSZWdpc3RlcklEKiwgMTY+IG1fbG9jYWxSZWdpc3RlcnNGb3JDYWxsZWVTYXZl
UmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY29u
c3RhbnRQb29sUmVnaXN0ZXJzOwotICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwg
MzI+IG1fY2FsbGVlUmVnaXN0ZXJzOworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY2FsbGVlTG9jYWxzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fcGFyYW1ldGVyczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPExhYmVsLCAzMj4g
bV9sYWJlbHM7CiAgICAgICAgIExhYmVsU2NvcGVTdG9yZSBtX2xhYmVsU2NvcGVzOwpAQCAtODI4
LDYgKzg2MSw3IEBACiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRT
dGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBtX2Zv
ckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0
U3RhY2s7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxh
YmVsczsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3Jt
YWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlw
ZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlh
bGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMjQyNzM4ZTNhZGUzNDJiMjAwYTlm
ZDRhY2MxNTJiMjk3ODJiODAzMi4uNDg4YTdjZmRkNzZlMWQ1NjhiZjZjMDA5OWU5N2E1ZDljMDg2
MjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xNDUsNyArMTQ2LDcg
QEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgaWYgKG1fc2hvdWxk
QWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVyYXRvclRoaXNNb2RlKCkgPT0g
R2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpCkBAIC0xNzAsMTIgKzE3MSwxNiBAQCBSZWdpc3RlcklEKiBTdXBlck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkcwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8pOwogfQogCi1zdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVyQmFzZUZvckNhbGxl
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRI
b21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAg
UmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVO
YW1lKTsKK30KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworc3RhdGljIFJlZ2lzdGVy
SUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikK
K3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9y
Q2FsbGVlKGdlbmVyYXRvcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGhvbWVPYmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIApAQCAtMjU4NCw2ICsyNTg5LDcgQEAgdm9p
ZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBkc3QgPSAwOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBv
c2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5l
ZCgpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0
KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkg
ewogICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKQEAgLTI5NjYsMjYgKzI5NzIs
OTUgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRy
b2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
RGlkRW50ZXJDYWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0
TGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9y
LCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAotICAgIFN0YXRlbWVudE5vZGUqIHNpbmds
ZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIFJldHVybk5vZGUqIHJl
dHVybk5vZGUgPSAwOworICAgIHN3aXRjaCAoZ2VuZXJhdG9yLnBhcnNlTW9kZSgpKSB7CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTogeworICAgICAgICBT
dGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsK
KyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAg
ICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IGV4cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1
bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19j
YXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOworCisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJC
aW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9y
KTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwg
aG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVy
biBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xl
IGJsb2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Js
b2NrKCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBz
dGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7
Ci0gICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9j
ay0+aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8
UmV0dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJh
dG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgorICAgICAgICAv
LyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9y
IGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBp
bnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorCisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCks
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCog
aW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JS
ZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUs
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21h
dGljYWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdp
c3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlv
blJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhp
cyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAg
ICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCks
IHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRSZXR1cm4ocjApOwotICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6IHsKKyAgICAgICAg
UmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
KyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1
ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CisKKyAgICAgICAg
ICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVs
LmdldCgpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodGhyb3dMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93KGdl
bmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICB9CisKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKTsKKworICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVk
KCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogeworICAgICAgICBlbWl0U3RhdGVtZW50
c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisKKyAgICAg
ICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50
KCk7CisgICAgICAgIFJldHVybk5vZGUqIHJldHVybk5vZGUgPSAwOworCisgICAgICAgIC8vIENo
ZWNrIGZvciBhIHJldHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBv
c2VkIG9mIGEgc2luZ2xlIGJsb2NrLgorICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNp
bmdsZVN0YXRlbWVudC0+aXNCbG9jaygpKSB7CisgICAgICAgICAgICBTdGF0ZW1lbnROb2RlKiBs
YXN0U3RhdGVtZW50SW5CbG9jayA9IHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRl
bWVudCktPmxhc3RTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5C
bG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+aXNSZXR1cm5Ob2RlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVybk5vZGUqPihsYXN0U3RhdGVtZW50
SW5CbG9jayk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4g
d2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCisgICAgICAgIGlmICghcmV0dXJuTm9k
ZSkgeworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyMCwg
UHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50KTsgLy8gRG8gbm90IGVt
aXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVzZSBpdCdzIG5vdCBpbiB0
aGUgdXNlcidzIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkg
Pj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3Rh
cnRPZmZzZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0K
IH0KIApAQCAtMzAxMywxMSArMzA4OCwyNCBAQCBSZWdpc3RlcklEKiBBcnJvd0Z1bmNFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBS
ZWdpc3RlcklEKiBZaWVsZEV4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1
c3QgYSBzdHViLiBXaGVuIGNvbXBsZXRpbmcgRVM2IEdlbmVyYXRvcnMsIHdlIG5lZWQgdG8gaW1w
bGVtZW50IGl0LgotICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJOb3QgaW1wbGVtZW50ZWQgeWV0LiIpKTsKKyAgICBpZiAoIWRlbGVnYXRlKCkpIHsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChhcmd1bWVu
dCgpKSB7CisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVudCgpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBhcmcgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0WWllbGQoYXJnLmdldCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
dmFsdWUuZ2V0KCkpOworICAgIH0KKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmcuZ2V0KCksIGFy
Z3VtZW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGVsZWdhdGVZaWVsZChhcmcuZ2V0KCksIHRoaXMpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIENsYXNzRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDQz
OWU2MjAwMzRiN2ZjZGM4MTUwM2E1OTE2ZTFiNDQ3ZjZjMDYyYWIuLmEyMDIwYTQ0YTAyMGQyODRm
NTY5YjdmZDY3NTUwMDc0NTM5NGUxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpzTnVtYmVy
KFBOYU4pKSkKICAgICAgICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051bWJlcigx
KSkpCiAgICAgICAgICwgbV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkKLSAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpCisgICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
KQogICAgICAgICAsIG1fcGFyYW1ldGVyU2xvdHMoMCkKICAgICAgICAgLCBtX251bVBhc3NlZFZh
ckFyZ3MoMCkKICAgICAgICAgLCBtX2lubGluZVN0YWNrVG9wKDApCkBAIC0xNDEzLDcgKzE0MTMs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIAogICAgIGVuc3VyZUxvY2FscygKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xvY2FsKCkgKyAx
ICsKLSAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90IGFyZ3Vt
ZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXplKCk7CiAK
QEAgLTI5MjcsNyArMjkyNyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgCiAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3Bv
bmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAtIDEpLm9mZnNldCgpOworICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0g
MSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOwog
ICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAg
CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIAogICAgICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29y
cmVzcG9uZHMgdG8gdGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgogICAgICAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKLSAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9u
dW1DYWxsZWVMb2NhbHMgLSAxKS5vZmZzZXQoKTsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0g
bnVtYmVyT2ZQYXJhbWV0ZXJzOwogICAgICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
b3JBbGxLaWxscy5oCmluZGV4IDUxYWM1NWQ0Y2E1ZjllZDQ5OGFiODg5N2M5NmVkMjU5MzMzZDYy
ODcuLmY1ZjRjYjUyMzgwZWRiYjNjOWY4OTcxMDMyMTEwYTA4OGNmZDEyOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGVCZWZvcmUsIE5v
ZGUqIG5vZGVBZnRlciwgY29uc3QKICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUJl
Zm9yZSA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhiZWZvcmUuYnl0ZWNvZGVJbmRleCk7CiAg
ICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVBZnRlciA9IGZ1bGxMaXZlbmVzcy5nZXRM
aXZlbmVzcyhhZnRlci5ieXRlY29kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5z
aWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJl
bGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCByZWxhdGl2ZUxvY2FsID0g
Y29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgcmVsYXRpdmVMb2NhbC0tOykgewogICAgICAg
ICAgICAgaWYgKGxpdmVCZWZvcmUuZ2V0KHJlbGF0aXZlTG9jYWwpICYmICFsaXZlQWZ0ZXIuZ2V0
KHJlbGF0aXZlTG9jYWwpKQogICAgICAgICAgICAgICAgIGZ1bmN0b3IodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwocmVsYXRpdmVMb2NhbCkgKyBzdGFja09mZnNldCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA0Mjg4NzBiMWMyYTI1ODcxNWNkNzE1M2I4
ZTc5OWJlYWU5MmM0ZTVmLi4xOTExY2ZlZWQ2NDE5MDM5NmM4YWU2NWYzYTdlYzQ5NzhhNzY2ZmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03MzgsNyArNzM4LDcgQEAg
Y2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIGZ1bGxMaXZlbmVzcyA9IGxpdmVu
ZXNzRm9yKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRlY29kZUlu
ZGV4KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVnID0gc3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2Fs
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXBvcnQgaWYg
b3VyIGNhbGxlZSBhbHJlYWR5IHJlcG9ydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCBl
NmM0MjM1ZWM0Y2E2ODE3Y2QzN2U2OTk4MzQ3ODYwODlmMmI2ZWZhLi41ZTVhMTUwNGMyNGQwNjQw
NGY3ODZiMTcyMmUyZjYxNTBmOGZhYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtOTMs
OCArOTMsOCBAQCBjbGFzcyBPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIC8vIFdlJ2QgcmVhbGx5IGxpa2UgdG8gdXNlIGFuIHVuc2V0IG9yaWdpbiwg
YnV0IFRocmVhZGVkQ1BTIHdvbid0IGFsbG93IHRoYXQuCiAgICAgICAgIE5vZGVPcmlnaW4gb3Jp
Z2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSk7CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpOwotICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxp
bmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7CisgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fscyk7CisgICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwp
IHsKICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRhcmdldC0+dmFyaWFibGVzQXRI
ZWFkLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghcHJldmlvdXNIZWFkKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIE9TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9j
YWwpIHsKKyAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251
bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewogICAgICAgICAgICAgTm9kZSogcHJldmlvdXNIZWFk
ID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYg
KCFwcmV2aW91c0hlYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAppbmRleCBi
ZThlMmE3OTE0OWY1YTJlMzE0NGFkNDY0YTM1YzY1NGZjNTk5ZTBjLi42MzkyZjE0YTk4MDRjZmI2
OTJlODRiYzM5MDEyMGQwYmFiN2RiZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKQEAgLTEyMyw5ICsxMjMsOSBAQCB2
b2lkIFZhcmlhYmxlRXZlbnRTdHJlYW06OnJlY29uc3RydWN0KAogICAgIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlczsKICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgIG51bVZhcmlhYmxlcyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBWaXJ0dWFs
UmVnaXN0ZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2Fs
KCkgKyAxOworICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGlu
ZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlTG9jYWxz
ICsgVmlydHVhbFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCkudG9Mb2NhbCgpICsgMTsKICAgICBlbHNlCi0gICAgICAgIG51bVZhcmlhYmxlcyA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgbnVtVmFyaWFibGVz
ID0gYmFzZWxpbmVDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIAogICAgIC8vIENy
YXp5IHNwZWNpYWwgY2FzZTogaWYgd2UncmUgYXQgaW5kZXggPT0gMCB0aGVuIHRoaXMgbXVzdCBi
ZSBhbiBhcmd1bWVudCBjaGVjawogICAgIC8vIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgYWxsIHZh
cmlhYmxlcyBhcmUgYWxyZWFkeSBzZXQgdXAuIFRoZSByZWNvdmVyaWVzIHNob3VsZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCmlu
ZGV4IDI5ZjA1ZTUxZDQ2MWZkZjZlMDE0MzgzMTk5YzkxOGY2NDE1ZThjZWEuLjMwODBkYzM0NTA5
YzczMzMyNGI4MTQzZDJhOTU0ZjA4ZWRhZjEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAg
Rm9yT1NSRW50cnlKSVRDb2RlKiBGb3JPU1JFbnRyeUpJVENvZGU6OmZ0bEZvck9TUkVudHJ5KCkK
ICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBGb3JPU1JFbnRyeUpJVENvZGU6OmluaXRpYWxp
emVFbnRyeUJ1ZmZlcihWTSYgdm0sIHVuc2lnbmVkIG51bUNhbGxlZVJlZ2lzdGVycykKK3ZvaWQg
Rm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25l
ZCBudW1DYWxsZWVMb2NhbHMpCiB7Ci0gICAgbV9lbnRyeUJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKG51bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwor
ICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShudW1DYWxsZWVMb2Nh
bHMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRy
eUpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmgKaW5kZXggNDRhZjhmOTU3OTFhYWE3OGU2ZTgxZGZhNjQ5Yzg2YTE1ZWEzNDQ4MS4uOWFl
OTczZjQwZDEyYzE2YjgwOWMwYzhjYTFlMzZlYmFhOGVlMzY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIEZvck9TUkVudHJ5SklUQ29kZSA6IHB1YmxpYyBGVEw6OkpJVENvZGUgewogICAg
IEZvck9TUkVudHJ5SklUQ29kZSgpOwogICAgIH5Gb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICAK
LSAgICB2b2lkIGluaXRpYWxpemVFbnRyeUJ1ZmZlcihWTSYsIHVuc2lnbmVkIG51bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBu
dW1DYWxsZWVMb2NhbHMpOwogICAgIFNjcmF0Y2hCdWZmZXIqIGVudHJ5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9lbnRyeUJ1ZmZlcjsgfQogICAgIAogICAgIHZvaWQgc2V0Qnl0ZWNvZGVJbmRl
eCh1bnNpZ25lZCB2YWx1ZSkgeyBtX2J5dGVjb2RlSW5kZXggPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCBhYzcxNzE0ZjkzZjU1YWYyNjE4
YzdlNDIwYTcxYjY2ZGUyMTE3NjY2Li42MDFiNDYwOTQwNjRhYzYxM2E5OGZhOWMyMjkzODZmYTZl
YWRmMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcApAQCAt
ODMsNyArODMsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgfQogICAgIAogICAgIFJF
TEVBU0VfQVNTRVJUKAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxv
Y2FscygpKSA9PSBiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlcy5udW1iZXJPZkxvY2FscygpKSA9PSBiYXNlbGluZS0+bV9udW1D
YWxsZWVMb2NhbHMpOwogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc3RhdGlj
X2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPigKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1ZmZlcigp
LT5kYXRhQnVmZmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRl
eCAwMzA3ZTBlZDA1YzVhMjU2MWNjNGVmODJiNWFhMmU1ZmZjZjhjMGViLi41NWQ4MjlhMmE2NmI2
MjYwOTE1ODRhNzNlMTFkYmEwM2MyNTZlYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcApAQCAtNTYsNyArNTYsNyBAQAogICAgIH0KICAgICBjYXNlIEZUTEZvck9TUkVu
dHJ5TW9kZTogewogICAgICAgICBSZWZQdHI8Rm9yT1NSRW50cnlKSVRDb2RlPiBjb2RlID0gYWRv
cHRSZWYobmV3IEZvck9TUkVudHJ5SklUQ29kZSgpKTsKLSAgICAgICAgY29kZS0+aW5pdGlhbGl6
ZUVudHJ5QnVmZmVyKGdyYXBoLm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpOworICAgICAgICBjb2RlLT5pbml0aWFsaXplRW50cnlCdWZmZXIoZ3JhcGgu
bV92bSwgZ3JhcGgubV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgICAg
IGNvZGUtPnNldEJ5dGVjb2RlSW5kZXgoZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGppdENvZGUgPSBjb2RlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQ1YjE0OTJhZTdmNTNkZTZjYTY1NTE5
YzU3MmViNjFlZWIzOWUzMGUuLjU0Njk3MWNlOGY1MzhiOWUzMzVjZmZmYjI4NDczM2JkOTYxNTRl
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTU1LDYg
KzE1NSw3IEBACiAgICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAg
ICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNl
bGwoY29uc3Qgdm9pZCopOworICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAg
ICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAg
ICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQo
Y29uc3Qgdm9pZCopOwpAQCAtMzg4LDcgKzM4OSw3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2
b2lkKiBwKQorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCog
cCkKICAgICB7CiAgICAgICAgIEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7
CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyID0gdGhpcy0+YXRvbU51bWJlcihwKTsKQEAgLTM5
OSw3ICs0MDAsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF0
b21OdW1iZXIgPj0gbV9lbmRBdG9tKSAvLyBGaWx0ZXJzIHBvaW50ZXJzIGludG8gaW52YWxpZCBj
ZWxscyBvdXQgb2YgdGhlIHJhbmdlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNM
aXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F0b20ocCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nh
c3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzU0NzUxY2Q3MjBmZmZjMTFl
MTVkMzUyNTZiMDYzNzVjMGI2ZThhYy4uNjRlNzRjZjY1MGIwMGQ0ODVhODMxY2Q1MjM3MWVjNDJk
ZDRkZGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUt
PmNvZGVCbG9jaygpOwogICAgIEpTU2NvcGUqIGNhbGxlclNjb3BlQ2hhaW4gPSBjYWxsZXJGcmFt
ZS0+dW5jaGVja2VkUihjYWxsZXJDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSku
UmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2Rl
QmxvY2stPmV2YWxDb2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIGNhbGxlclVubGlua2VkQ29kZUJsb2NrID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpOworCisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9k
ZTo6Q2hlY2tJZk5lZWRlZDsKKyAgICBpZiAoY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgdGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2s7CisgICAgaWYgKGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUg
JiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJh
dG9yVGhpc01vZGU6OkVtcHR5KQorICAgICAgICB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpB
bHdheXNDaGVjazsKKworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShtYWtlU291cmNlKHByb2dy
YW1Tb3VyY2UpKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBz
b3VyY2VDb2RlLCB0aGlzVERaTW9kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICBpZiAoIWV2
YWwpIHsKICAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CkBA
IC0xNzEsOCArMTgwLDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
ICAgICAvLyBJZiB0aGUgbGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUg
dGhyb3duIGV4Y2VwdGlvbnMuCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2Vw
dGlvbigpKTsKIAotICAgICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNhbGxlckNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkID8gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrIDogVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQ7Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2Rl
Q2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2Nv
cGVDaGFpbik7CisgICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUo
KS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7
CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KQEAgLTQxMCw3ICs0MTgsNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJz
KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KICAgICBkYXRhTG9nRigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiIpOwogCi0gICAgZW5kID0gaXQgLSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzICsgY29kZUJsb2NrLT5tX251bVZhcnM7CisgICAgZW5kID0gaXQgLSBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzICsgY29kZUJsb2NrLT5tX251bVZhcnM7CiAgICAgaWYgKGl0ICE9
IGVuZCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSAoKml0KS5qc1Zh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMmQ2ZjAyYzJiMWY4OTA3ZjNk
ZmE3Zjg5NDAzYWUwODYzMGQzMWEyYS4uYWIwNWU4MDdmNjE5NzI3NDIxYjEwOGUzOTdmNWE4MzNl
MWZiNDcwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE1LDYgKzIxNSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAg
ICAgREVGSU5FX09QKG9wX2Fzc2VydCkKKyAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCisgICAg
ICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikK
QEAgLTI2MSw2ICsyNjMsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCisgICAgICAg
IERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Fycm93X2Z1
bmNfZXhwKSAKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklO
RV9PUChvcF9uZXdfcmVnZXhwKQpAQCAtNzY0LDkgKzc2OCw5IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKIAogdW5zaWduZWQgSklUOjpmcmFtZVJlZ2lzdGVy
Q291bnRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSA9PSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKSk7CisgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSA9PSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpKSk7CiAKLSAgICByZXR1
cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5S
ZWdpc3RlcnMpOworICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9p
bnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzICsgbWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CiB9CiAKIGludCBKSVQ6OnN0YWNrUG9pbnRlck9m
ZnNldEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDY4NTBmN2FhNTFlMTg4OGUyZTQ4MzliZTE0NWVmZDI0NGZkODgzNDYuLjJiNDZlODI1NWRiZDYz
YzJiZDY3NTk2YzZiMDI1MTNjNWM0NGZlNjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
NDk0LDYgKzQ5NCw4IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTQyLDYgKzU0NCw4IEBACiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4
cChJbnN0cnVjdGlvbiopOwpAQCAtNjYxLDYgKzY2NSw3IEBACiAgICAgICAgIHZvaWQgZW1pdFJp
Z2h0U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVt
aXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXROZXdGdW5j
Q29tbW9uKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9u
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wg
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3Vy
ZShpbnQgZHN0LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2ln
bmVkIGRlcHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGY2MGFlNTdhZmRlMzhkZTYxNmI2YTg5YjgyNmVmODQ5MTUzNGEzZjUuLjFmMzExNWE1OWNjOTQ2
NjBhMWMzZmU4ZGE5ODQ3MjA1NTNjMjBiNmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19y
ZWdleHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld1JlZ2V4cCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbV9j
b2RlQmxvY2stPnJlZ2V4cChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBKdW1wIGxhenlKdW1wOwogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtOTc4LDE0ICs5NzgsMjYgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogI2Vu
ZGlmCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYyA9IG1fY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworCisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVu
dEluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5j
KQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1Qw
LCBmdW5jRXhlYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dl
bmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgfQogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7
CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KLSAgICAKKwor
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwpAQCAtMTAx
OCwxMSArMTAzMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZWxzZSAKICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbiwgcmVnVDMsIHJl
Z1QyKTsKICNlbmRpZgotICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KICAgICBk
b25lLmxpbmsodGhpcyk7CiB9Ci0gICAgCisKK3ZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4
cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhw
ckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX25ld19hcnJvd19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24p
OwpAQCAtMTQzNCw2ICsxNDYyLDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0
aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3NhdmUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfcmVzdW1lKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkODczYTFkZGQ2NTdhMjg5NjhhMGU1MWY5MDYz
NmQxZGUyZmNmODE2Li5jYWQ5MzQ2OWMxYmNiZDJiNTdkY2I1MjAyM2FiZTlmNzIzZjc0NDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IgogI2luY2x1ZGUgIkpTQXJyb3dGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtOTg3LDIzICs5ODgsNDIgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBwcm9maWxlLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHNpemVWYWx1ZSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2Vs
bCogZnVuY3Rpb25FeGVjdXRhYmxlKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5
cGU+CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUs
IGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5p
bmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBzY29wZSkpOworICAg
IGlmIChpc0ludmFsaWRhdGVkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0
aW9uVHlwZTo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2Nv
cGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEZ1bmN0aW9uVHlwZTo6Y3JlYXRlKHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworfQorCitleHRlcm4gIkMiIHsKKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
ZmFsc2UpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsKLSAgICBB
U1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6Omlu
Zm8oKSkpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGdW5j
dGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUp
KTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNGdW5jdGlvbj4oZXhl
Yywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAg
cmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4
ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRydWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0lu
dmFsaWRhdGVkKQorRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rp
b25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlv
bkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc0ludmFsaWRhdGVk
KQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aW5mbygpKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKTsKQEAg
LTEwMTksMTIgKzEwMzksMTIgQEAgRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUKICAgICAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBz
Y29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCB0cnVlKTsKKyAgICByZXR1cm4gb3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCB0aGlzVmFsdWUsIHRydWUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgZmFsc2UpOworICAgIHJldHVybiBvcGVyYXRp
b25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRoaXNWYWx1ZSwgZmFsc2UpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDk2MzhmMTQ1YzlkNTU3NWYx
Yzk1MmUyNzVmNTk0YTc2YjMyYTRiODguLjI1NDI1NTAyMjlkYTQxZTFhZGQ0NmIwYjAyNThlOGU0
OTk1YjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBA
IC0zMDEsNiArMzAxLDggQEAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSos
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBK
U1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50LmNwcAppbmRleCBhNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4MmNmZTJhNTVhYjc4MGMz
Li5mNTkxOGI3MjE3MGFjNWRlNDdjMmJlZDM2Mzc5NjUzMGUwMTk1NDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtMTM0LDkgKzEz
NCw5IEBAIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQog
CiB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7
Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzKSA9PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVMb2NhbHMpKSk7CiAKLSAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFt
ZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOworICAgIHJldHVybiByb3VuZExvY2Fs
UmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzY1ZjE5Nzk1MGUzMjNmMDU2NmU3MmM3M2I0
ZWVkNjNlM2IyMDhjNS4uMzUxYTRjOGQ0NDJmMmQ2YzY4YzRhOTJjMzJmMTZlYzYwMmRhODI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAg
LTIyNCw5ICsyMjUsOSBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rpb24q
IGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0g
ICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVw
OyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
JXUsIGNhbGxlciA9ICVwLlxuIiwKKyAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVu
Y3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1
LCBudW1DYWxsZWVMb2NhbHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICAgICAgY29k
ZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCi0gICAgICAgICAgICBj
b2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisgICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFy
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMsCiAgICAgICAgICAgICBleGVjLT5jYWxsZXJGcmFtZSgpKTsKIH0KIApAQCAtNDU4LDcgKzQ1
OSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayogY29kCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKICAgICBkYXRhTG9nRigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxu
IiwgZXhlYyk7CiAgICAgZGF0YUxvZ0YoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJs
b2NrKCkpOwotICAgIGRhdGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBkYXRhTG9nRigiTnVt
IGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZUxvY2Fscyk7CiAgICAgZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1WYXJzKTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDQxLDYgKzEwNDIsMTgg
QEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUp
KTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
YykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5j
dGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgZXhlYy0+aGFzQWN0
aXZhdGlvbigpKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0u
dS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lO
RworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJ
TlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAt
MTA1Miw2ICsxMDY1LDE3IEBAIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVS
TihKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9w
ZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisKKyAgICBM
TElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1
bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGUyNDQ4MjlmZGQxZTJmMTUwNmEzNWQxMGE0ZWI4
MWZjYmUzMmM1MzEuLjI3MTMyNGIxODQ1M2Q3MmRjOGI3NjE4MGJhMDMwNGFiNDU2NTk1OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC05OSw2
ICs5OSw4IEBACiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9z
dHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
Y19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyb3df
ZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpp
bmRleCA1YWQ1YjNmY2Q3MzlkNTYzOTQ5MGNkYWNhZmVjYTZjMTQ3NWI5NDI5Li41NjdjYjU4YzEy
NTY5N2JjZGU2MTdlY2VjMGM4YjA3ODY5NWU5Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC02OTcsNyArNjk3LDcg
QEAgbWFjcm8gdm1FbnRyeVJlY29yZChlbnRyeUZyYW1lUG9pbnRlciwgcmVzdWx0UmVnKQogZW5k
CiAKIG1hY3JvIGdldEZyYW1lUmVnaXN0ZXJTaXplRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2l6
ZSkKLSAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10s
IHNpemUKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW2NvZGVCbG9ja10s
IHNpemUKICAgICBsc2hpZnRwIDMsIHNpemUKICAgICBhZGRwIG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsLCBzaXplCiBlbmQKQEAgLTEyMjcsNiArMTIyNywxMiBAQCBfbGxpbnRfb3BfbmV3
X2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3
X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNDU4LDYgKzE0NjQsMTEgQEAgX2xsaW50X29wX25ld19m
dW5jX2V4cDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHAp
CiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKwogX2xsaW50X29wX25ld19h
cnJvd19mdW5jX2V4cDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNfZXhwKQpAQCAtMTU3Myw2ICsxNTg0LDE4IEBA
IF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3Bfc2F2ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXN1bWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKKyAgICBkaXNwYXRjaCgz
KQorCisKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IGNlOTg1Y2E0NWRlOTllOGRhNWE1N2Y4YjkzYTMwNjRjYTZmMWQzMjQuLmE5MGRjMWMxY2MyNzk2
ZGQxMDRiZjcxZTNlOTcwOTNjZTkyNzJmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC0zNDEsOSArMzQxLDExIEBAIGNsYXNzIEFTVEJ1aWxkZXIgewog
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9u
LCBudWxscHRyLCAvKiBkZWxlZ2F0ZSAqLyBmYWxzZSk7CiAgICAgfQogCi0gICAgWWllbGRFeHBy
Tm9kZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKQorICAgIFlpZWxkRXhwck5vZGUqIGNy
ZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxv
Y2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOworICAgICAgICBZaWVsZEV4cHJOb2RlKiBub2Rl
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBZaWVsZEV4cHJOb2RlKGxvY2F0aW9uLCBhcmd1bWVudCwg
ZGVsZWdhdGUpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIENsYXNzRXhwck5v
ZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50
LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCkBAIC0zNjQsMTIgKzM2NiwxMiBAQCBjbGFz
cyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAg
ICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBtb2Rl
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
KQpAQCAtODkxLDYgKzg5Myw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgIHsKICAgICAgICAg
bm9kZS0+c2V0U3RhcnRPZmZzZXQob2Zmc2V0KTsKICAgICB9CisKKworICAgIHZvaWQgcHJvcGFn
YXRlQXJndW1lbnRzVXNlKCkgeyB1c2VzQXJndW1lbnRzKCk7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5k
ZXggZWEzNzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MC4uNWI2ZGM0OTM4NWRh
NzgzNThjMjc5YmMwODAwYmY4OWEwYTY1NzljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgog
ICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAK
ICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKICAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5j
dGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25l
ZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAg
LCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENv
bHVtbikKQEAgLTE2MiwxMCArMTYyLDExIEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9zZWRWCiAgICAg
ICAgICwgbV9wYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKICAgICAgICAgLCBtX3BhcnNl
TW9kZShtb2RlKQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRl
eHQpCisgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVy
QmluZGluZykpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJv
d0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiB7CisgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5n
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNWNhMzQ2NjRmZGYx
NjRhYTM5ZTFmNjE0ZDNlZWJkMGRlMDUxODllYS4uOGU5YTI1MmVhZDFmZWU5MTU5ZmFmZTE1M2I3
Yzc5NjFkODdhMmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgx
Nyw3ICsxODE3LDcgQEAKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIENvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBh
cnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUp
OwogICAgICAgICAKQEAgLTE4NDIsOCArMTg0Miw4IEBACiAKICAgICAgICAgaW50IHN0YXJ0U3Rh
cnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KICAgICAgICAg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRl
eHQ7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CiAgICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOyB9CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0
T2Zmc2V0KQpAQCAtMTg2OSw4ICsxODY5LDggQEAKICAgICAgICAgaW50IG1fbGFzdExpbmU7CiAg
ICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9p
c0luU3RyaWN0Q29udGV4dCA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDog
MTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwotICAgICAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKQEAgLTE5MzIsNyArMTkzMiw3IEBA
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKLSAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKICAgICAgICAgWWllbGRFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMGFmMmM1YTM1MzNjNmI4Njc2
MmM0MjJhNmZkN2E2YWU5NTI2MzQ3My4uZTgyMmM4MTI1ZWIwZTZjYjllY2YzY2UzMGU0NzI1YmY2
N2ZmZDZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTk0
LDcgKzE5NCw3IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcigKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAorICAgIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJj
ZSgmc291cmNlKQpAQCAtMjEwLDYgKzIxMCw3IEBACiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUo
bnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKICAgICAsIG1fcGFyc2luZ0J1aWx0
aW4oYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKKyAgICAsIG1f
c3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlzVERaTW9kZSh0aGlzVERaTW9k
ZSkKIHsKQEAgLTI0OSw3ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24o
KSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OwotICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1
bmN0aW9uSW5mbyk7CisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JNb2RlKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5m
byk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCiAg
ICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjczLDggKzI3NywxMiBAQAogICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBhcnNlTW9kZShw
YXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0
cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29u
dGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tG
b3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmc7
CkBAIC0zMDEsNyArMzA5LDE0IEBACiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRGVjbGFy
YXRpb25zID0gc2NvcGUtPmRlY2xhcmVkVmFyaWFibGVzKCk7CiAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGNhcHR1cmVkVmFyaWFibGVzKQogICAgICAgICB2YXJEZWNsYXJhdGlvbnMubWFya1Zhcmlh
YmxlQXNDYXB0dXJlZChlbnRyeSk7Ci0gICAgCisKKyAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7CisgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkg
eworICAgICAgICBpZiAodXNlZFZhcmlhYmxlcy5jb250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMuaW1wbCgpKSkKKyAgICAgICAgICAgIGNvbnRleHQucHJvcGFnYXRlQXJndW1l
bnRzVXNlKCk7CisgICAgfQorCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5m
ZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJl
cyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTMxMSwxMCArMzI2LDkgQEAKICAgICAgICAgZmVh
dHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZEFyZ3Vt
ZW50cykKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRBcmd1bWVudHNGZWF0dXJlOworCiAg
ICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKICAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbikgewotICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJp
YWJsZXM7Ci0gICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkIGlmIHdlIHdhbnQgdG8g
YWxsb3cgYnVpbHRpbnMgdG8gdXNlIGxleGljYWwgZGVjbGFyYXRpb25zLgogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewogICAgICAgICAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCB2YXJpYWJsZS5n
ZXQoKSk7CkBAIC00NTgsNiArNDcyLDQ1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3sKKyAgICBhdXRv
IHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworCisgICAg
dW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tl
bkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3Np
dGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKKyAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2Vu
Lm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9r
ZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXI7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owor
ICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQorCisgICAgewor
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29w
ZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5l
cmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgp
KTsKKyAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5j
dGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9y
Iik7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfQorICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvck1vZGUsIGZhbHNlKTsKKworICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgp
OworICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgIGluZm8u
Ym9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKHN0YXJ0TG9jYXRpb24sIGluZm8pOworICAgIGF1
dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KHN0YXJ0TG9jYXRpb24s
IGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CisgICAg
Y29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CisKKyAg
ICByZXR1cm4gc291cmNlRWxlbWVudHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoKQogewogICAgIC8vIFRoZSBncmFtbWFyIGlzIGRvY3VtZW50ZWQgaGVyZToKQEAgLTE2MDAs
MTUgKzE2NTMsMTQgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25Cb2R5KAogICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAot
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9k
eVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uID0gRnVuY3Rpb25Cb2R5VHlwZTo6U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAhPSBib2R5
VHlwZTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUg
PT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAgIGlmICghaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xP
U0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1u
KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
NjIwLDcgKzE2NzIsNyBAQAogICAgIGVsc2UKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3Vy
Y2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9
PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMg
ZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsK
ICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQs
IHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1l
dGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQog
CiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQpAQCAtMTYzNiw2ICsxNjg4LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuICJtZXRo
b2QiOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgogICAgICAgICBy
ZXR1cm4gImdlbmVyYXRvciI7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1
bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IgZnVuY3Rpb24iOwogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJh
cnJvdyBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgpA
QCAtMTcxNCw2ICsxNzY4LDM3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9
IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOworCisgICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRp
b24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIEBnZW5lcmF0b3IKKyAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7
CisgICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworCisg
ICAgLy8gQGdlbmVyYXRvclN0YXRlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JT
dGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOworCisgICAgLy8g
QGdlbmVyYXRvclZhbHVlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOworCisgICAgLy8gQGdlbmVy
YXRvclJlc3VtZU1vZGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yUmVz
dW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAw
KTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1
aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJ
bkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwpAQCAtMTgyNCwxMiArMTkwOSwxMCBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2Rl
KQogICAgICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU7Ci0gICAgICAgIAogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YSgKICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0
aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAg
ICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9y
S2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwg
IGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRT
dXBlckJpbmRpbmcsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBmdW5jdGlvbkJv
ZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIAogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5m
byk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOwpAQCAtMTg0Myw3ICsxOTI2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgbV9s
ZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7CiAgICAgICAgIGZ1
bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKIAot
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uKQorICAgICAgICBpZiAobW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlw
ZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAg
LTE4NjUsMTQgKzE5NDgsMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUg
PSBsYXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0gc2F2ZVN0YXRl
KCk7Ci0gICAgCi0gICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250
ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKworICAgIGF1
dG8gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHkgPSBbJl0geworICAgICAgICByZXR1cm4gcGFy
c2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25z
dHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworICAgIH07CisKKyAgICBpZiAobW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRv
UG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFy
c2luZ0Z1bmN0aW9uQm9keSgpOworCisgICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0b3IgaGFzIGEg
InVzZSBzdHJpY3QiIGRpcmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3JhcHBpbmcgaXQg
c2hvdWxkIGJlIHN0cmljdCBtb2RlLgorICAgICAgICBpZiAgKGdlbmVyYXRvckJvZHlTY29wZS0+
c3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3RyaWN0TW9kZSgp
OworCisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2NvcGUtPmhhc0Rp
cmVjdFN1cGVyKCksICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBjbGFzcyBjb25z
dHJ1Y3RvciIpOworICAgICAgICBpZiAoZ2VuZXJhdG9yQm9keVNjb3BlLT5uZWVkc1N1cGVyQmlu
ZGluZygpKQorICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVkU3VwZXJCaW5k
aW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBp
biBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKKworICAgICAgICBwb3BTY29wZShnZW5l
cmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAg
IH0gZWxzZQorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1QYXJzaW5nRnVuY3Rp
b25Cb2R5KCk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKICAgICBmYWlsSWZG
YWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIs
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQo
ZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1
bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25N
b2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
IHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIHx8IG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8u
bmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1l
IGluIHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTk0MCw3ICsyMDQyLDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5j
dGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1lKFRJ
TUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9u
TW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5lZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwg
IkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwpAQCAtMjA5MSw3ICsyMTkz
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsK
ICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOworICAgICAgICAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3By
b3RvdHlwZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5l
cmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQpAQCAtMjc0Miw3ICsy
ODQ0LDcgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3NpZmll
ciBjbGFzc2lmaWVyKHRoaXMpOwogCiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQotICAgIGlm
IChtYXRjaChZSUVMRCkpCisgICAgaWYgKG1hdGNoKFlJRUxEKSAmJiAhaXNZSUVMRE1hc2tlZEFz
SURFTlQoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkpKQogICAgICAgICByZXR1cm4gcGFy
c2VZaWVsZEV4cHJlc3Npb24oY29udGV4dCk7CiAjZW5kaWYKIApAQCAtMjg0Nyw2ICsyOTQ5LDcg
QEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgZmFpbElmVHJ1ZShtX2Z1bmN0aW9uUGFyc2VQaGFz
ZSA9PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gd2l0aGluIHBhcmFtZXRlcnMiKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0
b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NFUlQobWF0Y2goWUlFTEQpKTsKICAgICBTYXZl
UG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgbmV4dCgpOwpAQCAtMjg1
NCwxMyArMjk1NywxNCBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogCiAgICAgYm9vbCBkZWxlZ2F0ZSA9IGNvbnN1bWUo
VElNRVMpOworICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0UG9z
aXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkgewogICAgICAgICByZXN0b3Jl
U2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVnYXRlLCBkaXZvdFN0YXJ0
LCBhcmd1bWVudFN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTMwNTIsNyArMzE1Niw3IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBtZXRob2RMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIG1ldGhv
ZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4gbWV0aG9kSW5mbzsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0
b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGU7CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1l
dGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7CiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAg
LTMzMDUsNyArMzQwOSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpT
VG9rZW5UeXBlIHRva2VuKQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBFTkFCTEUoRVM2X0dFTkVSQVRPUlMp
CiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOwogI2VuZGlmCiAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6
OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTdiMGU4MWFlYTFkODlj
NGZlYzk0NDc1N2M3ZjQ5NWVjNTA0NzczZS4uNzI1OWE1ZDQ3NTU2ZjQwNTNhNDBhYTNlYzM0MzU5
ZTk2NzkzOGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzIs
NiArMTcyLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKGZh
bHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAsIG1f
aXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkK
ICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkKICAg
ICB7CkBAIC0xOTIsNiArMTkzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzTGV4
aWNhbFNjb3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJv
dW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJp
Y3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQorICAgICAgICAsIG1faGFzQXJndW1lbnRz
KHJocy5tX2hhc0FyZ3VtZW50cykKICAgICAgICAgLCBtX2xvb3BEZXB0aChyaHMubV9sb29wRGVw
dGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0aCkKICAgICAgICAg
LCBtX21vZHVsZVNjb3BlRGF0YShyaHMubV9tb2R1bGVTY29wZURhdGEpCkBAIC0yNDYsNiArMjQ4
LDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBzZXRJc0dlbmVyYXRvcigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckZ1bmN0aW9uTW9kZToKKyAgICAgICAgICAgIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgog
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKQEAgLTI2OCw2ICsyNzQs
OCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Z1bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzR2VuZXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvcjsgfQogCisgICAgYm9vbCBoYXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQorCiAgICAgdm9pZCBzZXRJc0xleGlj
YWxTY29wZSgpIAogICAgIHsgCiAgICAgICAgIG1faXNMZXhpY2FsU2NvcGUgPSB0cnVlOwpAQCAt
NDUwLDE2ICs0NTgsMjAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwg
PSB0cnVlOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9y
IGVuZCA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJpYWJsZXMuZW5kKCk7Ci0gICAgICAgICAgICBm
b3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3VzZWRWYXJp
YWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bmVzdGVkU2NvcGUtPm1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikgfHwgbmVzdGVk
U2NvcGUtPm1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaW1wbCA6IG5lc3RlZFNjb3BlLT5t
X3VzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPm1fZGVj
bGFyZWRWYXJpYWJsZXMuY29udGFpbnMoaW1wbCkgfHwgbmVzdGVkU2NvcGUtPm1fbGV4aWNhbFZh
cmlhYmxlcy5jb250YWlucyhpbXBsKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICAvLyAiYXJndW1lbnRzIiByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlc29s
dmVkIGF0IGZ1bmN0aW9uIGJvdWRhcnkuCisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3Bl
LT5pc0Z1bmN0aW9uQm91bmRhcnkoKSAmJiBuZXN0ZWRTY29wZS0+aGFzQXJndW1lbnRzKCkgJiYg
aW1wbCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRk
KCpwdHIpOworCisgICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpbXBsKTsKICAg
ICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IGEgZGVjbGFyZWQgdmFyaWFibGUgdGhhdCBp
cyB1c2VkIGluIGFuIGlubmVyIHNjb3BlIHRvIGJlIHRob3VnaHQgb2YgYXMgY2FwdHVyZWQgaWYK
ICAgICAgICAgICAgICAgICAvLyB0aGF0IGlubmVyIHNjb3BlIGlzIGJvdGggYSBsZXhpY2FsIHNj
b3BlIGFuZCBub3QgYSBmdW5jdGlvbi4gT25seSBpbm5lciBmdW5jdGlvbnMgYW5kICJjYXRjaCIg
CiAgICAgICAgICAgICAgICAgLy8gc3RhdGVtZW50cyBjYW4gY2F1c2UgdmFyaWFibGVzIHRvIGJl
IGNhcHR1cmVkLgogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxl
cyAmJiAobmVzdGVkU2NvcGUtPm1faXNGdW5jdGlvbkJvdW5kYXJ5IHx8ICFuZXN0ZWRTY29wZS0+
bV9pc0xleGljYWxTY29wZSkpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVD
YW5kaWRhdGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJs
ZUNhbmRpZGF0ZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IC8vIFByb3BhZ2F0ZSBjbG9zZWQgdmFyaWFibGUgY2FuZGlkYXRlcyBkb3dud2FyZHMgd2l0aGlu
IHRoZSBzYW1lIGZ1bmN0aW9uLgpAQCAtNTUwLDE0ICs1NjIsMjIgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICB7CiAgICAgICAgIG1faXNGdW5jdGlvbiA9IHRydWU7CiAgICAgICAgIG1faXNGdW5jdGlv
bkJvdW5kYXJ5ID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAg
ICBzZXRJc0xleGljYWxTY29wZSgpOwogICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFsc2U7CiAg
ICAgfQogCisgICAgdm9pZCBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHNldElzRnVuY3Rpb24oKTsKKyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgfQor
CiAgICAgdm9pZCBzZXRJc0dlbmVyYXRvcigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0aW9u
KCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50
cyA9IGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgc2V0SXNNb2R1bGUoKQpAQCAtNTc5LDYgKzU5
OSw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBtX2lzTGV4aWNhbFNjb3BlIDogMTsKICAg
ICBib29sIG1faXNGdW5jdGlvbkJvdW5kYXJ5IDogMTsKICAgICBib29sIG1faXNWYWxpZFN0cmlj
dE1vZGUgOiAxOworICAgIGJvb2wgbV9oYXNBcmd1bWVudHMgOiAxOwogICAgIGludCBtX2xvb3BE
ZXB0aDsKICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKIApAQCAtNjI3LDcgKzY0OCw3IEBAIGNsYXNz
IFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNl
UGFyc2VNb2RlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5n
LAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCk7CiAgICAgflBhcnNlcigpOwogCkBAIC0xMTUwLDYgKzExNzEsNyBAQCBjbGFzcyBQYXJzZXIg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01v
ZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBF
eHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTExOTAsNyArMTIxMiw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQ
cm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5lcmF0
b3IpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNl
R2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlw
ZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kID0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRy
ZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9u
Qm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rp
b25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gQUxXQVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFy
YXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQg
fTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNl
VmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywg
VHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxh
c3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9u
JiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RD
b250ZXh0LCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERv
ZXNOb3RIYXZlSW5pdGlhbGl6ZXIpOwpAQCAtMTIxNSw2ICsxMjM3LDcgQEAgY2xhc3MgUGFyc2Vy
IHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBh
cnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFz
cyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJl
ZUJ1aWxkZXI+Jik7CiAKQEAgLTEzNDAsNiArMTM2Myw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VF
bGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47Cisg
ICAgU3VwZXJCaW5kaW5nIG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2luZCBtX2Rl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQ7CiAgICAgVGhpc1REWk1vZGUgbV90aGlzVERaTW9kZTsKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50IG1fdmFyRGVjbGFyYXRpb25zOwpAQCAtMTQ2Myw3ICsxNDg3
LDcgQEAgY2xhc3MgUGFyc2VyIHsKIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAorICAgIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0
UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAogICAgIENvbnN0
cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LAogICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQpCkBAIC0xNDcyLDcgKzE0OTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgQVNTRVJUKCFz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUs
IGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgUGFyc2VyPExl
eGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBw
YXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1v
ZGUpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE0ODUs
NyArMTUwOSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxM
ZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
cGFyc2VNb2RlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgUGFy
c2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhp
c1REWk1vZGUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJz
ZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0OTU4NWNiYzYyYjRjMzNlZmRmN2M0
OWVhMjliZDcxNTUyOGJlODg1Li5jMDg4Yzk2N2UzYWRjMzRkOGM5ODEzZjU2OTI5MjFhMGMwMjlj
YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC00
Nyw2ICs0Nyw3IEBACiBlbnVtIGNsYXNzIFNvdXJjZVBhcnNlTW9kZSB7CiAgICAgTm9ybWFsRnVu
Y3Rpb25Nb2RlLAogICAgIEdlbmVyYXRvck1vZGUsCisgICAgR2VuZXJhdG9yRnVuY3Rpb25Nb2Rl
LAogICAgIEdldHRlck1vZGUsCiAgICAgU2V0dGVyTW9kZSwKICAgICBNZXRob2RNb2RlLApAQCAt
NjEsNiArNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGU6CkBAIC04NSw2ICs4Nyw3IEBAIGlubGluZSBib29sIGlzTW9kdWxlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGU6CkBAIC0xMDQsNiArMTA3LDcgQEAgaW5saW5lIGJvb2wgaXNQcm9ncmFtUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkNDlhN2UxNzNiMjUwMGRhZmI1Zjg0YWE0YzJlNmY0MTY2NDlkMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU291cmNlQ29kZUtleV9oCisjZGVmaW5lIFNvdXJjZUNvZGVLZXlfaAorCisj
aW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNvdXJjZUNv
ZGVLZXkgeworcHVibGljOgorICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisg
ICAgeworICAgIH0KKworICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgICAg
IDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAg
ICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8PCAzKSB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERa
TW9kZSkpCisgICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQorICAgIHsK
KyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQorCisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KKworICAg
IC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdz
IGV4cGVjdGVkIHRoYXQgc291cmNlCisgICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmlu
Z3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KKyAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2hhc2ggPT0gb3RoZXIubV9oYXNoCisgICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5s
ZW5ndGgoKQorICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCisgICAgICAg
ICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisgICAgICAgICAgICAmJiBzdHJpbmcoKSA9
PSBvdGhlci5zdHJpbmcoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU291cmNlQ29kZSBtX3Nv
dXJjZUNvZGU7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworICAg
IHVuc2lnbmVkIG1faGFzaDsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYg
YSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
K3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxT
b3VyY2VDb2RlS2V5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVu
Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VD
b2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9
Cit9OworCit9CisKKyNlbmRpZiAvLyBTb3VyY2VDb2RlS2V5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNTQ3ZTQ0ZmM5ZWJmOTFkNjVhZDI2
NDkzMzY0ZGIzMjUwZjdjMzA2Zi4uMmM3NzI4NTI3ZTk0M2NkNjgyYTUxNWU5YjQzZDJmNTBkYjJi
OGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
QEAgLTE4MCwxMCArMTgwLDEwIEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVFbXB0eUxldEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWll
bGRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAg
ICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xh
c3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQ
YXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkg
eyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQpAQCAtMzg5LDYgKzM4OSw4IEBA
IGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIGludCBlbmRPZmZzZXQoaW50KSB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBzZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAKKyAgICB2b2lkIHBy
b3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3RvcEJpbmFy
eUV4cHI7CiAgICAgaW50IG1fdG9wVW5hcnlUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGYxM2IyNWU0YzliMjYyYzUyNWUwZjU2ZWMwZjY5
Y2RjN2NiZWRmMGUuLjQ5NDUyMGRiZGY0MjhjODY0MGRiNWUyMjNmMDBlMjFmMmZlY2ZmZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2Rl
QmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAg
ICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LAotICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOworICAg
ICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2Rl
Q2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
Ci0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAg
ICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFt
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CkBAIC0xODgsNyAr
MTg4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNv
bnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJp
YWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVRE
WlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwg
bWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNv
bnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3Ry
dWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVt
cHR5VERaVmFyaWFibGVzKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNl
dCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsK
IAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDhjOGNmZWY4NDY0OWQ4ZjA5YzJmYjBiOTQ4
ODExMWUxNjkzNmJkNy4uOWI4YzE1MGRlMjBiODUzM2IxZmRhM2RhYTg5NWQwNmNkYzg5NTczOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZUtleS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTU2LDcxICs1Nyw2IEBACiBj
bGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKLWNsYXNzIFNvdXJjZUNv
ZGVLZXkgewotcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwotCi0gICAgU291cmNlQ29kZUtleSgpCi0g
ICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb2RlVHlwZSBjb2RlVHlwZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQp
Ci0gICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCi0gICAgICAgICwgbV9uYW1lKG5h
bWUpCi0gICAgICAgICwgbV9mbGFncygKLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZVR5cGUpIDw8IDMpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVpbHRpbk1vZGUpIDw8IDIpCi0gICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RyaWN0TW9kZSkgPDwgMSkKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRo
aXNURFpNb2RlKSkKLSAgICAgICAgLCBtX2hhc2goc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCkpCi0g
ICAgewotICAgIH0KLQotICAgIFNvdXJjZUNvZGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQotICAgICAgICA6IG1fc291cmNlQ29kZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0K
LSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmxlbmd0aCgpOyB9Ci0KLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5pc051bGwoKTsgfQot
Ci0gICAgLy8gVG8gc2F2ZSBtZW1vcnksIHdlIGNvbXB1dGUgb3VyIHN0cmluZyBvbiBkZW1hbmQu
IEl0J3MgZXhwZWN0ZWQgdGhhdCBzb3VyY2UKLSAgICAvLyBwcm92aWRlcnMgY2FjaGUgdGhlaXIg
c3RyaW5ncyB0byBtYWtlIHRoaXMgZWZmaWNpZW50LgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUudG9TdHJpbmcoKTsgfQotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1faGFzaCA9PSBvdGhlci5tX2hhc2gKLSAgICAgICAgICAgICYmIGxlbmd0aCgpID09IG90
aGVyLmxlbmd0aCgpCi0gICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKLSAg
ICAgICAgICAgICYmIG1fbmFtZSA9PSBvdGhlci5tX25hbWUKLSAgICAgICAgICAgICYmIHN0cmlu
ZygpID09IG90aGVyLnN0cmluZygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTb3VyY2VDb2Rl
IG1fc291cmNlQ29kZTsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIHVuc2lnbmVkIG1fZmxhZ3M7
Ci0gICAgdW5zaWduZWQgbV9oYXNoOwotfTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2Rl
S2V5JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwot
fTsKLQotc3RydWN0IFNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPFNvdXJjZUNvZGVLZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNv
dXJjZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxs
KCk7IH0KLX07Ci0KIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIFNvdXJjZUNvZGVWYWx1
ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggNDk1ZjIzNTg3ODY2NWM0MzA1Nzg4MWQ4ZDFiZDg0ODQyNmE5OWJk
YS4uNDczZDVhNDFjYmY3MTkzNzk2NzdmYWUyNDQ1OTI1NWM3ODBiMWI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zOSw2
ICszOSw3IEBACiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAg
ICBtYWNybyhGdW5jdGlvbikgXAorICAgIG1hY3JvKEdlbmVyYXRvckZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oSlNPTikgXApA
QCAtMzMwLDYgKzMzMSwxMyBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8o
RmxvYXQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZ2Vu
ZXJhdG9yKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRv
clN0YXRlKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRnJhbWUpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JWYWx1ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvclRoaXMpIFwKKyAgICBtYWNybyhnZW5lcmF0
b3JSZXN1bWVNb2RlKSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0OTA2MzZmMjA0Yzlm
NjRjNGNmYzg4ZTBlOTdjNzZmNzM1NTUwZmVlLi45YjhmMDc0MjMwMzkyMjNhOGU0MGZiZWE5NDcx
ODdmOWZhMmFmNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enou
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgpAQCAtNjQ0LDYgKzY0NSwzOCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhzOjpBcml0eUNo
ZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1RvQQogICAgIEVO
RCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAgICAvLyBPbmx5
IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0
ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3Qg
aW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0
aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCisg
ICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKKyAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZSA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklY
TUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRo
aXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxv
Y2F0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+
dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7CisgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRC
eUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0KKyAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBmcmFtZS0+cmVzdW1l
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyNjE4
NWM0YzdlYTdjYzZmYzdmM2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRlNjdmZTRkNDA1
OWJkZTE2OGVlODhmNTdkZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5lIHZvaWQgZGVj
b2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1
bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhNjMyYzQ4
ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYzOTVjNDJiYzEyZWUwMjE4MzRh
ODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFT
RV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNzMs
NyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3Jh
bU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4
MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi40MjA2MDA2NzIyOWFhNDBh
YjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9jayogU2NyaXB0
RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRF
eGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2bSwgZXhlY3V0
YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwg
Ci0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAg
ICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAgICAgICAgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGZp
cnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+
KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBmZWJjMjM5NzEy
NmI2MGZkN2IwYzM0MGEwNC4uNzViMzA5MWNmODFjNzI5NmZlMmZhZmU5YTk2NzY1MzYyOTk3ODJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJp
YWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAt
NTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyArNTQyLDcgQEAg
Y2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
R2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVy
biBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAgICAgU3ltYm9s
VGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEzIEBAIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAg
ICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAg
ICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dG
dW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBK
U1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
Pm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5n
ICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFjNDI5Yy4uNWQ3
ZWYzNzY2YWMwZDY5YjM1NTQ2YWY3ZTc5MWNlOTQ5YmI0MmQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTc5
LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5j
dGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1l
LCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwog
fQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2so
CiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBBcmdMaXN0JiBhcmdzLCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCAKLSAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
LCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQorICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRp
b24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlv
bnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBT
dHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0g
PSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xu
XG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRv
ciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CiAgICAg
ZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmco
IntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9
IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1l
LnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlm
IChmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpH
ZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWls
ZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBG
dW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJn
cykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7Ci0gICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkp
OworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAyMmVjYjU3YjkzZjY5YmZjOWY4YjFiMzA2ZmI0YzQy
YTBhNjdkMmUzLi5kMTFmYjJhMzc0ZDYxOTE1MGM5ZDZjNDI2MjliYTkxY2MxMjA1ZjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCkBAIC01NiwxMiArNTYsMTcgQEAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYpOwotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOworZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGUgeworICAgIEZ1bmN0aW9uLAorICAgIEdlbmVyYXRvciwKK307CisKK0pTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFy
Z0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOworSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYs
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVu
Y3Rpb24pOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKTsK
KyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlk
ZUxpbmVOdW1iZXIgPSAtMSwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
RnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlLmdldCgpKQorICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNh
bGxlZUxvY2FscykKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKKyAgICAgICAgbG9jYWxB
dChpKS5jbGVhcigpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVf
dCBudW1iZXJPZkxvY2FscykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KKyAgICAg
ICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9m
TG9jYWxzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Cisg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCit7CisgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2Nh
bHMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQp
LCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBBU1NFUlQobGl2ZUNhbGxlZUxv
Y2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgbGl2ZUNhbGxl
ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgbG9jYWxB
dChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgIH0pOworfQorCit2b2lkIEdl
bmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMu
CisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBw
YXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKKyAg
ICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEg
Y2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
dGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1
YTcxOTRlOGY3NDg0MWM0OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVyYXRvckZyYW1l
X2gKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0Nl
bGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJp
ZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklU
Q29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
Vk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBv
ZmZzZXRPZkxvY2FscygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKKyAg
ICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzKTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKKworcHJpdmF0ZToKKyAgICBHZW5lcmF0b3JG
cmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBzaXplX3QgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhmNTg5MzFmYzU1MjBhNWMyMjAxNWUy
NWY3MDJhN2Q2ZTA5NzllMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5lcmF0b3JGdW5j
dGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBj
b25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlv
bihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qo
KSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK0NhbGxUeXBlIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitDb25z
dHJ1Y3RUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEwYjMyYjQ4YzNi
OWE1NmM0ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFBv
c2l0aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZThmMmUz
MWJkMzExYjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgfTsK
KworR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGEwMzQ5
MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZV9oCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPih2
bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8s
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjdiM2JkYjdmYjM5
NzE3NGNhZTZhZDQ2NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCisKKyNp
bmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90
eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRv
clByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJmdlbmVy
YXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvclByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBn
ZW5lcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIHRocm93ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8K
Kwordm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERvbnRFbnVtIHwg
UmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisK
K2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihl
eGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclByb3RvdHlwZSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgxY2NhMDBlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3RvdHlwZV9oCisj
ZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEdl
bmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90eXBlPih2bS5o
ZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5
cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworCitwcml2
YXRlOgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEdlbmVy
YXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yVGhpc01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclRoaXNNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwM2U3YjAyMmYxYzY2OWQzOTdhOWI3N2I1
ZWYyNGU5NWY1MjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEdlbmVyYXRvclRoaXNNb2RlX2gKKyNkZWZpbmUgR2VuZXJhdG9yVGhp
c01vZGVfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8gaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1v
YmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8gV2hlbiB0aGUgZnVu
Y3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0b3JLaW5kXV0gaXMg
YWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFyeUNhbGxCaW5kVGhp
cyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5lcmF0b3JGdW5jdGlv
bi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8vCisvLyAgICAgZnVu
Y3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMKKy8vICAgICB9Cisv
LworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAgICAgICAgLy8gfHRo
aXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8v
CisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8vICAgICAgICAgLy8g
fHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUgZmlsbGVkKS4KKy8v
ICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xsb3dpbmcgZmxhZyBt
YW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMgY2FsbGVkIGFzIGEg
Y29uc3RydWN0b3IsIGl0IHJldHVybnMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlvbiBoYXMgR2Vu
ZXJhdG9yVGhpc01vZGU6OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdoZW4gYWNjZXNz
aW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0gY2xhc3MgR2Vu
ZXJhdG9yVGhpc01vZGUgOiB1bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9uRW1wdHkKK307
CisKK30KKworI2VuZGlmIC8vIEdlbmVyYXRvclRoaXNNb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUzNzFiYjAxZTAy
ZGIwM2U2NGViNDY5MGZhZDEwYi4uYmQ4MzBjMGE1Y2UzZGJlZGZhNTY5YTExZTEyODBkMzJhYmRh
MmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBAIC0zNDgsNyAr
MzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERp
cmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9k
ZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOworCiAgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7CiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKICAgICAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
Y2JjZTAyZDY2MjkwNWUwZWNiNzhhNzZmY2M4NWEyZTJkMTk4OGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dlbmVyYXRvckZ1bmN0aW9uKSB9OworCitKU0dlbmVy
YXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpCit7Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246
OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0uaGVh
cCkpIEpTR2VuZXJhdG9yRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKKyAgICBBU1NF
UlQoZ2VuZXJhdG9yRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
Z2VuZXJhdG9yRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZ2VuZXJh
dG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUpCit7CisgICAgSlNHZW5lcmF0b3JGdW5jdGlvbiogZ2VuZXJhdG9yRnVuY3Rpb24g
PSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGdlbmVyYXRvckZ1bmN0aW9uLCAiQWxs
b2NhdGluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiIpOworICAgIHJldHVybiBnZW5lcmF0b3JGdW5j
dGlvbjsKK30KKworSlNHZW5lcmF0b3JGdW5jdGlvbiogSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNy
ZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmYxMDcyYTUyMTY1ZGQxN2RlZTA5NjdkZWU3YjhhZTQ4OTBmMmQ0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNHZW5lcmF0b3JGdW5jdGlvbl9oCisjZGVmaW5lIEpTR2VuZXJhdG9yRnVuY3Rpb25f
aAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBMTElu
dERlc2lyZWRPZmZzZXRzOworCitjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpT
RnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIERG
Rzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJl
c3VtZU1vZGUgOiBpbnQzMl90IHsKKyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJl
dHVybk1vZGUgPSAxLAorICAgICAgICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGNvbnN0
IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0
aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3Rh
dGljIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7
CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNHZW5lcmF0b3JGdW5j
dGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSopOworCisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNHZW5lcmF0b3JGdW5jdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggYmMwOGY5NjkyYjBlZDNmYWI5ZjliYmU3M2Y4ZmNjMmNmZTdkN2E2NC4uNmRkZTY2MDI3
ODRiZjhkMTgzZDdiOTU2OGJkZmE4MzM4NDk2ZmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsOSBAQAogI2lu
Y2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmgiCkBAIC03Miw2ICs3NSw3IEBACiAjaW5jbHVkZSAi
SlNEb2xsYXJWTS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCkBAIC0zODQsNiArMzg4LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJ
Tl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVS
QVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
aXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJB
VE9SX1RZUEUKIApAQCAtNDIwLDYgKzQyNSwxNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3N5bnRheEVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJTeW50YXhFcnJv
ciIpKSk7CiAgICAgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlR5cGVFcnJvciIpKSk7
CiAgICAgbV9VUklFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiVVJJRXJyb3IiKSkpOworCisgICAg
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciogZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0
cnVjdG9yKSwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworCisgICAgbV9nZW5lcmF0b3JQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOwor
ICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBl
LmdldCgpLCBEb250RW51bSk7CiAgICAgCiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTU1Myw2ICs1NjYsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVK
b2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHBy
b21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2VuZXJhdG9yUHJvdG90
eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRp
Y0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtODIw
LDYgKzgzNCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hcnJheVByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXJyb3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJh
dG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Z2VuZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CkBAIC04NTIsNiArODY4LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4ZTE2MjljNWJiZWE2Nzk0OTQ4M2FkM2Nj
NzgxODkzYjg0ZDg1MTA0Li4wMzI1MzI0OTg1YTAzOGU2OTc4MTRjOTgwNzliY2RkNDNlYjc2NzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTYzLDYgKzYzLDggQEAKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JQ
cm90b3R5cGU7CitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRl
clNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAt
MjI5LDYgKzIzMSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJh
eVByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBtX3JlZ0V4cFBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8SXRlcmF0b3JQcm90b3R5cGU+IG1faXRlcmF0b3JQ
cm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQ
cm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2Niw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFByb3Bl
cnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNv
bGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmU7CkBAIC00NTMsNiArNDU4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdl
bmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29w
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTUwNiw2ICs1MTMsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBT
dHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN5bWJv
bE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAppbmRleCA4MDBhNzg2OWU1NGI3NWQ1YzhkMjhhNTBkOTdhMWUwYjc3
YjUwNjNhLi4zN2I4YWZjNzdlMmQwOWU5NTUxM2JlZmI1OGVlN2RkZmMwNmM1NGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVBy
b2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qs
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBlcnJvcik7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc291cmNlQ29kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDUxMzVmNDBkMTBkNmYwMDIyNjRkYjg2MmJiY2E5ZGY0ZmRlOTc4ZjcuLmVjYWJhYmM5ZmZmNjA0
ZjM3ZjE5NTdkYmVlMjhlZDg2NGE0MzYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0y
NDQsNiArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxv
Y2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBj
ZWQzMTk0MDg5MDA2YmYzZTE3ODE5M2NhNjI5ZThlNjhkMmI4MWU2Li41NTc3YTg5YTQ5MGZkMGMy
ZjQzYjUyN2ExYmZhNzlmMjk4ZTBiOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMwNCw2ICszMDQsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggODhkNGE3Y2Mz
MTBlM2IxMWE3ZGJmM2MwM2VhYjgxYjRkNjk5NDVkYS4uNmZjOGQwYWI3ZmVjZDI0MDZlZWY2ZmY4
YmUyYThkZjA2NDUxYWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAt
NzI1LDcgKzcyNSw3IEBACiAtIHBhdGg6IGVzNi9BcnJheV9pc19zdWJjbGFzc2FibGVfY29ycmVj
dF9wcm90b3R5cGVfY2hhaW4uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0Fy
cmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9BcnJh
eV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9t
X2luc3RhbmNlc19vZl9nZW5lcmljX2l0ZXJhYmxlcy5qcwpAQCAtNzMzLDcgKzczMyw3IEBACiAt
IHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRo
b2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlf
c3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9tYXBfZnVuY3Rpb25fZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2Rz
X0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKQEAgLTc1
OSw3ICs3NTksNyBAQAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19uZXN0ZWRfcmVzdC5qcwog
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2Vu
ZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMu
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfd2l0aF9p
bnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTc2OSw3ICs3NjksNyBAQAogLSBw
YXRoOiBlczYvZm9yLi5vZl9sb29wc19pdGVyYXRvcl9jbG9zaW5nX3Rocm93LmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJhdG9yX2lu
c3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXMuanMKICAgY21k
OiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9pbnN0YW5jZXNf
b2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTgwOSw1NSArODA5LDU1IEBACiAtIHBhdGg6IGVz
Ni9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X3ZhcmlhYmxlc19mdW5jdGlvbi5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5j
b25zdHJ1Y3Rvci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfJUdlbmVyYXRvclByb3RvdHlwZSUucmV0dXJuLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclBy
b3RvdHlwZSUudGhyb3cuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19iYXNpY19mdW5jdGlvbmFsaXR5LmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVy
YXRvcnNfY2FudF91c2VfdGhpc193aXRoX25ldy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0
aGFuZF9nZW5lcmF0b3JzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfY29tcHV0ZWRfc2hvcnRoYW5kX2dlbmVyYXRv
cnNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvcnJlY3RfdGhpc19iaW5kaW5nLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRv
cnNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc2VuZGluZy5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni9nZW5lcmF0b3JzX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3No
b3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kc19jbGFzc2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfc3RyaW5nLWtl
eWVkX3Nob3J0aGFuZF9nZW5lcmF0b3JfbWV0aG9kcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
YXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9hc3RyYWxfcGxhbmVfc3RyaW5ncy5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9n
ZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJhdG9yX2luc3RhbmNlcy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3Rh
bmNlc19vZl9pdGVyYWJsZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93Lmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9vbl9ub24taXRlcmFibGVzX2lzX2FfcnVudGltZV9lcnJv
ci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfc3BhcnNlX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfc3RyaW5ncy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX29wZXJhdG9yX3ByZWNlZGVuY2Uu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvTWFwX2l0ZXJhdG9yX2Nsb3NpbmcuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L01hcF9NYXBbU3ltYm9sLnNwZWNpZXNdLmpzCkBAIC0xMTExLDcgKzExMTEsNyBAQAogLSBw
YXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2FzdHJhbF9wbGFuZV9zdHJpbmdzX2lu
X2Z1bmN0aW9uX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJl
YWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJhdG9yX2luc3RhbmNlc19pbl9hcnJheXMuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvc3By
ZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fY2FsbHMuanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9n
ZW5lcmljX2l0ZXJhYmxlc19pbl9hcnJheXMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0
YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKaW5kZXggYThiOWI1M2NjY2ZhZTFhNWI1YTY2YzEzYmQy
M2U4Y2FlNTI3YWFhNC4uOWE4MjEzMmE2MGZjMGU3OTE5NzJjMDQzMThkMDdiOWUyNjAwNGEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAg
LTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIg
Z2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBt
ZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9
PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJy
Lmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9
LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Ro
cm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0g
PSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwog
ZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGl0ZXJhdG9yID0gKGZ1bmN0aW9uICogZ2VuZXJhdG9y
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0
b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVy
YWJsZXMuanMKaW5kZXggYjRjNzQ1MzkzMjZjODk3MmI3NGE3NjFmZjRkOGYyOWIyYTVhZTgyOS4u
ODE2N2RhNTJkZjZmZDFlYThmYzE1NDQ0YTNiNjRlYjg2ZTYzYzc5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFu
Y2VzX29mX2l0ZXJhYmxlcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC0xLDMg
KzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2Jh
bCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9k
cykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1
bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5n
dGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAg
J3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdydd
Cit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVu
Y3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0
aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCmluZGV4IDZm
NjgyZjVhMTZjYWI5ZThiNWQyNjlhZGU0MmU4M2FlYjhiMDNkNGYuLjMyZDMxN2MwYjgwYWRiOTUy
OTQzNDNmOWFjODhmZjhlYTg0ZGZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJf
aXRlcmF0b3JfY2xvc2luZy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9
PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVh
dGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9
OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikg
eworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5l
eHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTog
YXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwK
KyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRl
cmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQor
cmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0g
Jyc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRv
cnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3Np
bmdfdmlhX3Rocm93LmpzCmluZGV4IDQ0YTA2NWE5NmExYzlkZTdlMjZjMzYyMDZjMWNiMzY0NzA0
YTA0ZDQuLjFmNDdkMzI4YmJjN2Y1Y2RhMWY5MjQ4ZTk1NmFmYmE1NDI5MzgyOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFy
X2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Rocm93LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmdfdmlhX3Ro
cm93LmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVk
JykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2Jq
ZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9m
IFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7
fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9
IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBt
ZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wu
aXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFi
bGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBjbG9zZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3Vt
ZW50cy1mcm9tLWZ1bmN0aW9uLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NhNTg3
OTA3YzNjZGIxMzY1MzA1Y2I3OTFiYzI0YmQ3OTJlMjY4NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9t
LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9u
ICpnZW4oYSwgYiwgYykKK3sKKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIHRlc3Q7Cit9CisKK2xldCBnID0g
Z2VuKDEsIDIsIDMpOworbGV0IHt2YWx1ZTogZnVuY30gPSBnLm5leHQoKTsKK3Nob3VsZEJlKGZ1
bmMoKS5sZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNjQ3OGZhMjNl
NGJlMzNhYmFhZjE0NDcyOTJhNDU5YjdiODZkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMuanMKQEAgLTAs
MCArMSwxMDcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uICpnMShhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgwLCAxLCAyKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEsIGIsIGMpCisgICAg
eworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAg
ICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9
IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAy
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAs
IjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFs
dWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsi
MCI6NDIsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0Miwi
MSI6NDIsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjo0MiwiMSI6NDIs
IjIiOjQyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwg
YiwgYykKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorCisgICAgdmFyIGcgPSBnMSgw
LCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7
IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworCisgICAgZnVuY3Rpb24gKmcyKGEs
IGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3Vt
ZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1l
bnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
ICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAg
ICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOwor
ICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1g
KTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJn
dW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOwor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5
aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1
bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShn
Lm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKK30oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1t
ZXRob2RzLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWNsYXNzLW1ldGhvZHMtc3ludGF4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NjVjZWIxZjQzNmMw
MmUzNmQ4YjBhYzViYTdkZTMyNTU1NzcwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5q
cwpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgeworICAgIHRy
eSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAg
ICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0aHJvd24iKTsKKworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0U3ludGF4RXJyb3IoYAor
Y2xhc3MgQ29jb2EgeworICAgICpjb25zdHJ1Y3RvcigpCisgICAgeworICAgIH0KK30KK2AsIGBT
eW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0cnVjdG9y
Jy5gKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgKm9rKCkKKyAgICB7Cisg
ICAgICAgIHlpZWxkIDQyOworICAgIH0KK30KK2ApOworCit0ZXN0U3ludGF4KGAKK2NsYXNzIENv
Y29hIHsKKyAgICBzdGF0aWMgKm9rKCkKKyAgICB7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0K
K30KK2ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmNWE1NGEyZGM0
MTI3MDc5YzMxY2ZkMzFmOWIzMWNmNTBhZDZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMKQEAg
LTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFy
IGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAg
ICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3Qg
dGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwor
Y2xhc3MgQSB7CisgICAgKmdlbigpCisgICAgeworICAgICAgICB5aWVsZCB0aGlzOworICAgICAg
ICB5aWVsZCB0aGlzOworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAgc3RhdGljICpz
dGF0aWNHZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhp
czsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KK3sKKyAgICBsZXQgYSA9IG5ldyBBKCk7
CisgICAgbGV0IGcgPSBhLmdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBhKTsK
KyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAg
ICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQg
ZyA9IG5ldyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNv
bnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9CisKK3sKKyAgICBsZXQg
ZyA9IEEuc3RhdGljR2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIEEpOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgNDIpOworICAgIHNob3VsZEJlKGcubmV4dCgpLmRvbmUsIHRydWUpOworfQoreworICAgIHNo
b3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgQS5zdGF0aWNHZW4oKTsKKyAg
ICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGlu
ZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM5YmQ3OGRmNzZhMGNiNzU4YjgxZWVhYjJjMjU1YjlkYWQxYjQ0NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRo
aXMuanMKQEAgLTAsMCArMSw2NSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2Z1bmN0aW9uICpnZW4oKSB7CisgICAgeWllbGQgZXZhbCgidGhpcyIpOworfQorCit2YXIgZyA9
IG5ldyBnZW4oKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQoKS52YWx1ZTsKK30s
IGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmAp
OworCitjbGFzcyBCIHsgfQorCisoZnVuY3Rpb24oKSB7CisgICAgZXZhbCgndGhpcycpOworICAg
IGV2YWwoJ3RoaXMnKTsKK30oKSk7CisKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICByZXR1cm4gZXZhbCgndGhpcycpOworICAgIH0KK30KKwor
c2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBBKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENh
bm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQyB7CisgICAg
KmdlbmVyYXRvcigpCisgICAgeworICAgICAgICB5aWVsZCBldmFsKCd0aGlzJyk7CisgICAgfQor
fQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBn
ID0gbmV3IGMuZ2VuZXJhdG9yKCk7CisgICAgZy5uZXh0KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGMuZ2VuZXJhdG9yKCkn
KWApOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9
IGMuZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGMpOworfSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tY29uc3RydWN0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NmFl
NWZkMTlmOWQ4YzhiMDhkZTZiMGVkNmE1YmFlNzVhZmRkZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0
cnVjdG9yLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgZ2xvYmFsID0gKG5ldyBGdW5j
dGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK3Nob3VsZEJlKHR5cGVvZiBnbG9iYWwuR2VuZXJhdG9y
RnVuY3Rpb24sICd1bmRlZmluZWQnKTsKK3ZhciBnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
ID0gKGZ1bmN0aW9uICooKSB7IH0pLmNvbnN0cnVjdG9yOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKGdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBnZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZm
NzczNmM0MjM0ZTE4NzkxMGI4Y2E2MzUzY2JmNDViMGQ2MDA2YjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1u
YW1lLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2sgPSBmdW5jdGlvbiAqZ2Vu
ZXJhdG9yKCkKK3sKKyAgICB5aWVsZCBnZW5lcmF0b3I7Cit9OworCit2YXIgZyA9IG9rKCk7Citz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3Iu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1tZXRob2Rz
LXdpdGgtbm9uLWdlbmVyYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTYxZDkzMDc2MGQyMGVlNmVmNGNl
NTcwM2VmNzNiOWZmOWFlNTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMK
QEAgLTAsMCArMSwzMSBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gKmdlbigp
IHsKK30KK3ZhciBnID0gZ2VuKCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLm5leHQu
Y2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7
CisKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGcudGhyb3cuY2FsbCh7fSk7Cit9LCBgVHlw
ZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CisKK3Nob3VsZFRocm93KCgp
ID0+IHsKKyAgICBnLnJldHVybi5jYWxsKHt9KTsKK30sIGBUeXBlRXJyb3I6IHx0aGlzfCBzaG91
bGQgYmUgYSBnZW5lcmF0b3JgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmE0ZGM4
Y2UwNzZjNzMxYzQyNGE4ODVmYjM4ZTM1N2U0OTNmZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRpb25zLmpzCkBA
IC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiAqZ2VuZXJhdG9yRnVuY3Rpb24oKSB7
Cit9CitsZXQgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yRnVuY3Rpb24oKTsKKworc2hvdWxkQmUoZ2Vu
ZXJhdG9yIGluc3RhbmNlb2YgZ2VuZXJhdG9yRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUodHlw
ZW9mIGdlbmVyYXRvci5fX3Byb3RvX18sICdvYmplY3QnKTsKK3Nob3VsZEJlKGdlbmVyYXRvci5f
X3Byb3RvX18sIGdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSk7CisKK2xldCBHZW5lcmF0b3JQ
cm90b3R5cGUgPSBnZW5lcmF0b3IuX19wcm90b19fLl9fcHJvdG9fXzsKKworbGV0IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlID0gZ2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fOworbGV0IEdl
bmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yRnVuY3Rpb24uX19wcm90b19fLmNvbnN0cnVjdG9y
Oworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CitzaG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbiBpbnN0YW5jZW9mIEdlbmVy
YXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9f
XywgRnVuY3Rpb24pOworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuX19wcm90
b19fLCBGdW5jdGlvbi5wcm90b3R5cGUpOworCitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5wcm90b3R5cGUsIEdlbmVyYXRvclByb3RvdHlwZSk7CitzaG91bGRCZShHZW5lcmF0
b3JQcm90b3R5cGUuY29uc3RydWN0b3IsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKwor
bGV0IGFycmF5SXRlcmF0b3IgPSBbXVtTeW1ib2wuaXRlcmF0b3JdKCk7CitsZXQgQXJyYXlJdGVy
YXRvclByb3RvdHlwZSA9IGFycmF5SXRlcmF0b3IuX19wcm90b19fOworbGV0IEl0ZXJhdG9yUHJv
dG90eXBlID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5fX3Byb3RvX187CisKK3Nob3VsZEJlKEl0
ZXJhdG9yUHJvdG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUuX19wcm90b19fKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1i
ZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDJkYmVk
N2FiY2I5ODcyYWM3MTVjZGE1NGMzMjEzNTg5MjVkYWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLWJlZm9yZS1m
aXJzdC1jYWxsLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB1bnJlYWNo
YWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2Vu
KCkKK3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUo
Zy5yZXR1cm4oIkhlbGxvIiksICJIZWxsbyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTY5
YTBmNzBlNWU0YjFmZGEyNzYyZGI3NDQ4ZDllNWE5MTUxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4uanMKQEAg
LTAsMCArMSwxMzMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlSXRlcmF0
b3JSZXN1bHQoYWN0dWFsLCB7IHZhbHVlLCBkb25lIH0pCit7CisgICAgc2hvdWxkQmUoYWN0dWFs
LnZhbHVlLCB2YWx1ZSk7CisgICAgc2hvdWxkQmUoYWN0dWFsLmRvbmUsIGRvbmUpOworfQorCitm
dW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJs
ZScpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAg
ICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhy
b3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3Ry
aW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHlpZWxkIDIwOworICAgICAgICB5aWVsZCA0
MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3Vs
ZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDApLCB7IHZhbHVlOiAyMCwgZG9uZTogZmFsc2UgfSk7
CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMjApLCB7IHZhbHVlOiAy
MCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVy
bigyMCksIHsgdmFsdWU6IDIwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcubmV4dCg0MiksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsK
KyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Cisg
ICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDQyKSwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0
dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgfQorfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICByZXR1cm4gNDI7Cisg
ICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAg
ICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTog
dHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBz
aG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVl
IH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQo
Zy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgfQorCisgICAgewor
ICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
bmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3Vs
ZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRydWUgfSk7
CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmVJ
dGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAg
ICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJu
KDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgeWllbGQgNDI7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICByZXR1cm4gNDAw
OworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAg
ICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTog
ZmFsc2UgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsg
dmFsdWU6IDQwMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3Vs
dChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgewor
ICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
cmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7
CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0
MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOworCisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHlpZWxkIDQyOwor
ICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ0aHJvd24i
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAg
ICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogNDIsIGRvbmU6
IGZhbHNlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnJldHVybigwKSwgYEVycm9y
OiB0aHJvd25gKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwg
eyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9
IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZh
bHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
bmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3Vs
ZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4YmJhZDNh
MGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGdsb2JhbCA9IG5ldyBGdW5jdGlv
bigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4o
KSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9
IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsKKyAgICB9
CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhyb3co
KCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0KKyAgICB7
CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2VuLmNhbGwo
dGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2JqZWN0
KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7
CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigp
OworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAg
ICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAg
ICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmly
c3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBjMzg1
MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5q
cwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cg
bmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJs
ZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwor
dmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRjaCAo
ZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1bnJl
YWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTIyNjlmNTNjOTU0ZWE4MjhjYzAxNDEw
NDdiNTNmYzFhMTJhMDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanMKQEAgLTAsMCArMSwxMzIgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVh
bCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoYWN0dWFsLCB7IHZh
bHVlLCBkb25lIH0pCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLnZhbHVlLCB2YWx1ZSk7CisgICAg
c2hvdWxkQmUoYWN0dWFsLmRvbmUsIGRvbmUpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2
YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25v
dCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQor
CitjbGFzcyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhp
cy5jb3VudCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5jb3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
Z2VuKCkgeworICAgICAgICB5aWVsZCB5aWVsZCAyMDsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
fQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcubmV4dCgwKSwgeyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH0pOworICAgICAg
ICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDIwKSwgYDIwYCk7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IGcudGhyb3coMjApLCBgMjBgKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJl
c3VsdChnLm5leHQoNDIpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAg
ICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9u
ZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAg
ICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDQyKSwgYDQyYCk7CisgICAgICAgIHNob3VsZEJl
SXRlcmF0b3JSZXN1bHQoZy5uZXh0KDQyKSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1
ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3co
NDIpLCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpnZW4oKSB7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxl
dCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsg
dmFsdWU6IDQyLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRo
cm93KDApLCBgMGApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAg
ICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6
IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
Zy50aHJvdyg0MiksIGA0MmApOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gKmdlbigpIHsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7
CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygw
KSwgYDBgKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBz
aG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVl
IH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhy
b3coNDIpLCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBz
aXRlID0gbmV3IENhbGxTaXRlKCk7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHlpZWxkIDQyOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICBzaG91bGRCZShlLCAwKTsKKyAgICAgICAgICAgIHNpdGUuY2FsbCgpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2Vu
KCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQy
LCBkb25lOiBmYWxzZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnRocm93
KDApLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmUoc2l0ZS5j
b3VudCwgMSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
Z2VuKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgeWllbGQgNDI7CisgICAgICAgIH0g
ZmluYWxseSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1
bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiBmYWxzZSB9KTsKKyAgICAgICAgc2hvdWxk
QmVJdGVyYXRvclJlc3VsdChnLnRocm93KDApLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygwKSwgYDBgKTsKKyAgICB9Cit9KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgw
Y2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAg
LTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5l
dy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
dW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTcz
OGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAt
MCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
KyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9y
VGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXIn
KTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjog
c3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0
dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAg
ICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQoKTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1
cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVy
biA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAg
ICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgp
LnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAg
ICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5
aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEo
KTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBhLmdlbigpOworICAgIH0s
IGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdu
ZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVh
YmVmYTA5YzI5MWUzYzc5NjJiM2IzNzNjNTA4ODYyZDY5OGI1YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIu
anMKQEAgLTAsMCArMSwzMjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitj
bGFzcyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b3VudCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5jb3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBBcnJheXMg
eworICAgICAgICBjb25zdHJ1Y3RvcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZmly
c3QgPSBbIDAsIDEsIDIsIDMgXTsKKyAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gWyA0LCA1LCA2
LCA3IF07CisgICAgICAgIH0KKworICAgICAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgICAg
ICB7CisgICAgICAgICAgICB5aWVsZCAqIHRoaXMuZmlyc3Q7CisgICAgICAgICAgICB5aWVsZCAq
IHRoaXMuc2Vjb25kOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGFycmF5cyA9IG5ldyBB
cnJheXM7CisgICAgbGV0IGkgPSAwOworICAgIGZvciAobGV0IHZhbHVlIG9mIGFycmF5cykKKyAg
ICAgICAgc2hvdWxkQmUoaSsrLCB2YWx1ZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IC8vIHRocm93IHNob3VsZCBiZSBwcm9wYWdhdGVkLgorICAgIGxldCBjMSA9IG5ldyBDYWxsU2l0
ZTsKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisK
KyAgICAgICAgJ3Rocm93Jyh2YWx1ZSkgeworICAgICAgICAgICAgc2hvdWxkQmUodmFsdWUsIDQy
KTsKKyAgICAgICAgICAgIGMxLmNhbGwoKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
T0siKTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7Cisg
ICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNo
b3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQo
MSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgRXJyb3I6IE9L
YCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQ0KTsKKyAgICB9
LCBgNDRgKTsKKyAgICBzaG91bGRCZShjMS5jb3VudCwgMSk7Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9kLgorICAgIGxldCBjMSA9IG5ldyBDYWxsU2l0
ZTsKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisK
KyAgICAgICAgJ3JldHVybicodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KHZhbHVlLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYzEuY2FsbCgpOworICAgICAgICAgICAg
cmV0dXJuIHsgdmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1i
b2wuaXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBp
dGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAg
ICBsZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVk
KTsKKyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4
dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93
KDQyKTsKKyAgICB9LCBgVHlwZUVycm9yOiBEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhh
dmUgYSAndGhyb3cnIG1ldGhvZC5gKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
IGcudGhyb3coNDQpOworICAgIH0sIGA0NGApOworICAgIHNob3VsZEJlKGMxLmNvdW50LCAxKTsK
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gTm8gYHRocm93YCBtZXRob2QsIGByZXR1
cm5gIHJldHVybnMgYW4gaW5jb3JyZWN0IHJlc3VsdC4KKyAgICBsZXQgYzEgPSBuZXcgQ2FsbFNp
dGU7CisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0KHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgfQor
CisgICAgICAgICdyZXR1cm4nKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBzaG91bGRC
ZSh2YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIGMxLmNhbGwoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7
CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRl
cjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52
YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAg
IHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgICAgICBnLnRocm93KDQ0KTsKKyAgICB9LCBgNDRgKTsKKyAgICBzaG91bGRCZShjMS5jb3Vu
dCwgMSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9k
LCBObyBgcmV0dXJuYCBtZXRob2QuCisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0
KHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFs
c2UgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7Cisg
ICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNo
b3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQo
MSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9y
OiBEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC5gKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0
NGApOworfSgpKTsKKworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIGB0aHJvd2AgZG9lcyBub3Qg
dGhyb3cuIE5vdCByZXR1cm5zIGEgb2JqZWN0LgorICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAg
ICAgbmV4dCh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRv
bmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAgICAgICAndGhyb3cnKHZhbHVlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gKmdlbigpCisgICAgeworICAgICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigpOworICAg
ICAgICB5aWVsZCAqIGl0ZXI7CisgICAgfQorCisgICAgbGV0IGcgPSBnZW4oKTsKKyAgICBzaG91
bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDEp
LnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShnLm5leHQoMikudmFsdWUsIDIpOworICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0Mik7CisgICAgfSwgYFR5cGVFcnJvcjog
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LmApOworICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0NCk7CisgICAgfSwgYDQ0YCk7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIGB0aHJvd2AgZG9lcyBub3QgdGhyb3cuIElmIHJl
dHVybmVkIGl0ZXJhdG9yIHJlc3VsdCBpcyBtYXJrZWQgYXMgZG9uZSwgaXQgYmVjb21lcyBgcmV0
dXJuYC4KKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9
CisKKyAgICAgICAgJ3Rocm93Jyh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHsgdmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRl
cmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0g
bmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQg
ZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52
YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoZy50aHJvdyg0MikudmFsdWUsIDQyKTsKKyAgICBzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0NGApOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAvLyBgcmV0dXJuYCByZXR1cm5zIGRvbmU6IGZhbHNl
LgorICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKwor
ICAgICAgICAncmV0dXJuJyh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsg
dmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAgICAgICBbU3ltYm9sLml0ZXJh
dG9yXSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gKmdlbigpCisgICAgeworICAgICAgICBsZXQgaXRlciA9IG5l
dyBJdGVyYXRvcigpOworICAgICAgICBsZXQgcmVzdWx0ID0geWllbGQgKiBpdGVyOworICAgICAg
ICB5aWVsZCByZXN1bHQ7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KKworICAgIGxldCBnID0g
Z2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQpOworICAgIHNo
b3VsZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVl
LCAyKTsKKyAgICBzaG91bGRCZShnLnJldHVybig0MikudmFsdWUsIDQyKTsKKyAgICBzaG91bGRC
ZShnLnJldHVybig0MikuZG9uZSwgZmFsc2UpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB5aWVsZCAqIFsg
MCwgMSwgMiBdOworICAgICAgICB5aWVsZCByZXN1bHQ7CisgICAgfQorCisgICAgbGV0IGcgPSBn
ZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKK30oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBlZDU2Njg4YTZhMjk4Yy4uOThm
ZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgZm9yRWFjaFNldEJp
dChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgbiA9IGFycmF5
TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpIHsKQEAg
LTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMu
aAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZmMTIwMTNjNjQ4Li5mNDZlMTE5
NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVz
LmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDAKKyNkZWZpbmUg
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VT
Nl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2
OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7
CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5B
QkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFU
RV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBF
TkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQu
LjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVO
QUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVf
RVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dF
TkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJ
VEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJM
RV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
IGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
aW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1
MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3
LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9
IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5U
QVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19T
WU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9
IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJM
RV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBF
TkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVS
SU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCA5
Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNjLi4wMmNjNzk4YjIwYmQ2ZTQ2
MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMzQsNyAr
MzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREVWSUNFX09S
SUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElD
IE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFU
T1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
RVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJQyBPTikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBQVUJM
SUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGQ5NjIyNGQ0MTcxYmRiYTcx
NzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2ZjdhMDNmZGQyOWI2MzFmNDYy
NTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3LDcgQEAg
bWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCAiVG9n
Z2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xlIEVTNiBj
bGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZf
VEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJhbCBzeW50
YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBP
RkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
Y2UwYTNjMmE3OTYwOTAyYmY5Y2M1MmJjYWUzYjVhOTdmN2NjYmU4Ny4uMzJmY2QzYjZjMWExNWEz
OGQwMWY4OTAzMGY1NzRjYWQ4OGRhZGI4OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTEyLTAxICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVu
dCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRo
aXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTUtMTEtMzAgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtl
IFByb2Nlc3NNb2RlbCBhbHdheXMgTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjZGViNTI1Y2Y5NGI1YThlMTIxYmEy
NGUzNzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNjNTMyOTliYzI3MWQ5Yjc3Zjc0OGFkMzA3
MDVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xODUsNyAr
MTg1LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgi
LCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0aW9u
ID0+ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDAs
IHZhbHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNTdXBw
b3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYg
bW9kdWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVTIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTkxYTE3N2NlM2QzZjBlYTk0ZTZhZDRjNjQwM2Vi
Mzk5ZGNjOWMzNC4uN2EyNzQyNjQyYjE0NWFhMjQxMDc0ODg0N2RkODdkZTA2MThkN2RiOSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1
LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9y
cyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMjMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjExLjIgcmVsZWFz
ZS4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJp
ZXMvQ2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJhMWZhMDgzYjkzMjI5N2MyN2M0Mjgw
YjUuLjM0MzA0MTg1MGYyN2RmMzUwNjM5MWU4ZmNmNWM3NDNiNjMyYTgxZjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBT
dXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTExLTA1ICBOaWtvcyBBbmRyb25pa29z
ICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAg
IEFkZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3MgZm9yIGVuYWJsaW5nIFdlYiBBbmlt
YXRpb25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4ZjdlZTUyMWUwNGY5
ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQxNjZiZjVl
NzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0Zl
YXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9w
cy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+RU5B
QkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFU
T1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVSQVRPUlM8
L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAg
PEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8
RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rv
b2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDkxZWU4MGZk
ZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2MWI3Y2VjNmFj
NWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93
aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3ICszMiw3
IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VW
RU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAv
PgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFU
T1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxF
TkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZ
TlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBM
QVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266346</attachid>
            <date>2015-12-01 01:33:36 -0800</date>
            <delta_ts>2015-12-01 18:40:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151201183312.patch</filename>
            <type>text/plain</type>
            <size>340848</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MDgwZGVmYjlmYzU3OTFmY2JkYTQyYzk5OTk3OWJkOWRjM2EwNzI3Li45MzE2YjgxYTI4NGRjMDdm
ZGM3ZWU4NzFhYTE1Njc0MDc5MjlhNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MDggQEAKKzIwMTUtMTItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIGFjdHVhbGx5ICpkZWYqaW5l
ZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAgICAgICAgMy4gR2VuZXJhdG9y
RnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5lcmF0aW5nIEdlbmVy
YXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQgYmUgZXZhbHVhdGVk
IGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBsZSwKKworICAgICAg
ICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHlpZWxkIGI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7ICAvLyBOb3csIGhl
bGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHdlIGV2YWx1
YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRlciB0aGF0LCB3ZSBj
cmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhpcyBjYW4gYmUgZXhw
bGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIDQu
IG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBqdW1wCisKKyAgICAgICAgV2Ug
d29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFjdHVhbGx5LiBCdXQgd2UgYWRk
IGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9zYXZlIHRvIHRoZSBwb2ludCBz
byBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29uc3RydWN0IHRoZSBDRkcgYXMg
Zm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0b3Igc3dpdGNoKSAtPiAoaW5p
dGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1lcmdlIHBvaW50KSAtPiAobmV4
dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
fAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4o
b3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGluZyBzdWNoIGEgZ3JhcGgsCisK
KyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZyb20gKG9wX3NhdmUpIHRvICht
ZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVzZSogbG9jYWxzIHRoYXQgYXJl
IGRlZmluZWQgYmVmb3JlIChvcF9zYXZlKQorICAgICAgICAgICAgMi4gb3Bfc2F2ZSBzaG91bGQg
Y2xhaW0gdGhhdCBpdCBkb2VzIG5vdCBkZWZpbmUgYW55dGhpbmcuIEFuZCBjbGFpbSB0aGF0IGl0
ICp1c2UqcyBsb2NhbHMgdGhhdCBhcmUgdXNlZCBpbiAobWVyZ2UgcG9pbnQpLgorICAgICAgICAg
ICAgMy4gYXQgb3BfcmVzdW1lLCB3ZSBzZWUgKnVzZSpkIGxvY2FscyBhdCBtZXJnZSBwb2ludCBh
bmQgZGVmaW5lIGFsbCBvZiB0aGVtLgorCisgICAgICAgIFdlIGNhbiBkbyB0aGUgYWJvdmUgdGhp
bmdzIGluIHVzZS1kZWYgYW5hbHlzaXMgYmVjYXVzZSB1c2UtZGVmIGFuYWx5c2lzIGlzIGJhY2t3
YXJkIGFuYWx5c2lzLgorICAgICAgICBBbmQgYWZ0ZXIgYW5hbHl6aW5nIHVzZS1kZWYgY2hhaW5z
LCBpbiBvcF9zYXZlIC8gb3BfcmVzdW1lLCB3ZSBvbmx5IHNhdmUgLyByZXN1bWUgbGl2ZSByZWdp
c3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgKiBBUEkvSlNTY3Jp
cHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUlu
dGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6IEFkZGVk
LgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAo
cmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6
OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8p
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZv
Ojppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omdl
bmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVy
QmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1l
dGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3Rl
ckZvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpU
aGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JD
YWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJ
bkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRs
L0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50
cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAqIGZ0bC9GVExGb3JP
U1JFbnRyeUpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5j
X2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpw
cm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlND
OjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNv
dXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAg
ICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5n
dGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JUaGlzTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzOgor
ICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0
b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzOgorICAgICAgICAo
aXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAg
ICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qczoKKyAgICAgICAg
KGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAg
ICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50
YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3Vs
ZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRv
cik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
dHVybi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAg
ICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoY2F0Y2gpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVJdGVyYXRvclJlc3VsdCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQik6Cisg
ICAgICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQSk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci15aWVsZC1zdGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHByb3RvdHlwZS5jYWxsKToKKyAg
ICAgICAgKEFycmF5cyk6CisgICAgICAgIChBcnJheXMucHJvdG90eXBlLlN5bWJvbC5pdGVyYXRv
cik6CisgICAgICAgIChJdGVyYXRvci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChJdGVyYXRv
ci5wcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoSXRlcmF0b3IucHJv
dG90eXBlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChJdGVyYXRvcik6CisgICAgICAgIChn
ZW4pOgorCiAyMDE1LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBzdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0
bHkgdXNlIE51bWJlciBhbmQgcmVsYXRlZCBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyZjI0M2M0NTgwMzYxYzNm
YWIwY2JlMDBhMjFiMDYxMmEwNTM5YzYuLjY1YmRiNjJkYTNmYmRlNDYzZjg2MDU4N2VkYTI1N2Y1
NWU0YTIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTItMDEgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50
L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmZvckVhY2hT
ZXRCaXQpOgorICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE1LTExLTMwICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGEgYmV0dGVy
IFJORyBmb3IgTWF0aC5yYW5kb20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcxMWU2M2MwZmZhZDdjNTgyMjlj
MDkxZTMzY2Q3ZDA5NjU1ZTFmMmUuLmQ2NjljZjIyMTNhNGFlNzU2ZjgwYTllMWI0MmQ4ZjA4ZjQ1
YmYxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMi0wMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQg
TExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlz
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTItMDEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBb
U3RyZWFtcyBBUEldIHN0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgTnVtYmVyIGFuZCBy
ZWxhdGVkIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4ODNlYjQxZDIzMzA1MTMzNGFmYmZm
NGM5M2VkNDdiYjY0N2U3NDg0Li5lNWYyYTMzYTk2YjA0ZmVjNGQwMDIxYjZmYjA0NjcxOWFmNGY5
NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMDEgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVt
ZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUg
dGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE1LTEx
LTMwICBLYXRseW4gR3JhZmYgIDxrZ3JhZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBB
Y3RpdmVET01PYmplY3QvRE9NV2luZG93IFBhZ2VDYWNoZVN1c3BlbnNpb24gY29kZSB0byBzdXBw
b3J0IG1vcmUgcmVhc29ucyBmb3Igc3VzcGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlhNDFjMTU4OGUz
ZmMyNDI1MzdiODc5NDExNzM1M2U2YWI4ZjRjNDYuLjIwNDQ3OTJlM2VkNGRiMDAxYWRiMWU3MDhm
MWMyNTAxY2FkYzc2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0xMi0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJ
bXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVu
YWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIw
MTUtMTEtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbGQgZml4IGZvciBzb21lIGNvbXBpbGVyIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCAzYjdiNzZiZjNhNDQ0YzkyMWJlOTczYzU3NmMx
OWY2OTJlOGQyMzJkLi4yZjM3NDIzMDA5N2I1MDgyNTgzZjg0NDI3YjkyNTc5MzdkMzA5MzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFyc2U8SlND
OjpQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJz
ZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIAorICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFlYTkyNDM2OGM3Zjg0MmMwNTJjYjhlYjY4YTZjZWYz
NmRiZWFkMzguLjc3ODY2YTA5OTBhMDk0MTA4ZDk3MTg4YTgyZmM1YjI0ZmNlN2Y3N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU3Niw2ICs1NzYsMTAgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
CisgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCiAgICAgcnVudGltZS9J
ZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcApAQCAtNjE1LDYgKzYx
OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pT
RGF0ZU1hdGguY3BwCiAgICAgcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
CiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmNwcApAQCAtNzUwLDYgKzc1NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NP
VVJDRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAog
ICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTIwOCw2ICsxMjE0LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5q
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjll
ZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZB
U19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2
X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VO
RVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsK
IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAzNzU4YTM2MzY0ZDk3YzM1ODNjOTE2ZjNmM2Q5ODVhNDg3N2Y5MmM2Li43NjhlYmFhNjI5
NzcyZjZkZWQ3OThhN2U2ZDdmODFkZWUwZWI2ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNiArODQsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HbG9iYWxPYmplY3Qu
anMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IuanMgXApAQCAtMTE5LDYgKzEyMCw3IEBAIE9CSkVDVF9MVVRfSEVB
REVSUyA9IFwKICAgICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQcm90b3R5cGUu
bHV0LmggXAogICAgIEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggXAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBcCiAg
ICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxDb2xsYXRvclByb3Rv
dHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA0
OTUwYjdkMWE2YzI3MTRhOGRhOTNhMDdiNWY1YzBkZGIxYzkwYjFhLi4xOGJlYjY4OWM2MzMwYjI5
MDg4MGM4NmEyOWU1OGMxMGEwMzI5MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKQEAgLTc1Nyw2ICs3NTcsMTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW5kZXhpbmdUeXBlLmNwcCIgLz4KQEAgLTc5Niw2ICs4MDAsNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRlTWF0aC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KQEAgLTk0Niw2ICs5NTEsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXERhdGVDb25zdHJ1Y3Rv
ci5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xEYXRlUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEVycm9yUHJvdG90eXBlLmx1dC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEdlbmVyYXRvclByb3RvdHlw
ZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xIZWFkZXJEZXRlY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIiAvPgpAQCAtMTUxOCw2ICsxNTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXJUb2tlbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxSZXN1bHRUeXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFNvdXJjZUNvZGVLZXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNl
clxTb3VyY2VQcm92aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIiAvPgpAQCAtMTYwNCw2ICsxNjExLDExIEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblBy
b3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlv
blJhcmVEYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHMuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY09mZnNldC5oIiAv
PgpAQCAtMTY2Myw2ICsxNjc1LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNGbG9hdDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNGbG9hdDY0QXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNGdW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmMzkxZjIyZjhmNzM5MWMwNzI1YzQ0ZDU0YTc0NjA2
MGU4NThhODNkLi5lMzI1NTZhMzU0Yzc0NTIzOTc0ZTNjYTk4MWQ5MWNhNjU1Yjk5MjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02
NjksNiArNjY5LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0
aW9uUmFyZURhdGEuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JG
cmFtZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVy
YXRvclByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldHRlclNl
dHRlci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC03NTAsNiArNzYyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2VuZXJh
dG9yRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9i
amVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0yNjIxLDYgKzI2MzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFy
c2VyXFNvdXJjZUNvZGUuaCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGVL
ZXkuaCI+CisgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiPgogICAg
ICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI4MjIsNiAr
Mjg0MCwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJh
cmVEYXRhLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZyYW1lLmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBl
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdldFB1dEluZm8uaCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI5MjcsNiArMjk2MCw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzI5MSw2ICszMzI3LDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJvclByb3Rv
dHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhlYWRlckRldGVjdGlvbi5oIj4KICAgICAgIDxG
aWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzODVjOWMwNDQyYWY3OGZmNjEwYWMyNDE3ZjQ0NTVj
NjJhYzNlMjQuLjQzZWQwMjNhYTNmMDM1NjkxOGNiNTIzZjZiY2E0YzVhYzAwZTFhMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjA4LDYgKzEyMDgsMTkgQEAKIAkJNzA5RkI4
NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQw
NjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEg
LyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMw
MjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87
IH07CisJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OworCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg5
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQk3MEI3
OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QTFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clRoaXNNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5QjFDMDI0
QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyog
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi87IH07CisJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFF
MiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JG
dW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE5MDFD
MDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREMzRTA5MUIyREYyQzcwMDA1
NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQ
cm90b3R5cGUuY3BwICovOyB9OwogCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0
b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwREU5QTA5MUJF
N0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRB
c3NlbWJseS5oICovOyB9OwpAQCAtMzI4NCw2ICszMjk3LDIwIEBACiAJCTcwOUZCODY1MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBS
dW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZs
YWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NzFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4QTFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yVGhpc01vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJj
ZUNvZGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQ29kZUtl
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5cGUu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1
NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJ
bnRBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludEFzc2Vt
Ymx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTA3LDYgKzUxMzQsNyBAQAog
CQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8s
CiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8s
CiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICov
LAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNt
ICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oICovLAogCQkJCUE1RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKQEAgLTUyMzUsNiArNTI2Myw3IEBACiAJCQkJODY5
RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLywKIAkJCQkwRjhGMkI5RDE3
MzA2QzhCMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJNjVFODY2RUUwREQ1OUFG
QTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLywKKwkJCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgx
RTIgLyogU291cmNlQ29kZUtleS5oICovLAogCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAv
KiBTb3VyY2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8q
IFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovLApAQCAtNTM2NCw2ICs1MzkzLDE1IEBACiAJCQkJRjY5
MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJE
MkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYy
RDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJNzBC
NzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKKwkJCQk3MEI3
OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKKwkJCQk3MEI3OTE4
NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8s
CisJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLywKKwkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwQjc5MThBMUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQk3MEI3OTE4QjFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAxMTFBQTkwOTEx
MDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEyMUFBOTA5MTEw
MEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBGRTA1MDEzMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC01NDYzLDYgKzU1MDEsOCBA
QAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJ
CQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAy
OEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCTcwQjc5
MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk3
MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAogCQkJ
CTBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICov
LAogCQkJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi8sCkBAIC02NTc3LDYgKzY2
MTcsNyBAQAogCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAq
LywKIAkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi8sCiAJ
CQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmpzICovLAor
CQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuanMgKi8s
CiAJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEdsb2JhbE9iamVjdC5qcyAqLywKIAkJ
CQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5qcyAqLywKQEAgLTY5OTEsNiArNzAzMiw3IEBACiAJCQkJQTczNzgxMEUx
Nzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxh
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdO
b2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkg
LyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzA0MSw2ICs3MDgzLDcgQEAKIAkJ
CQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZGMThBNjAw
NzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5
OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkExN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAg
LTcyNjIsNiArNzMwNSw3IEBACiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkw
RUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3
OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3QThBRjNDMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0E4QUYzQTE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVh
ZGVycyAqLywKQEAgLTcyODksNiArNzMzMyw3IEBACiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0
OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBEQzNFMEEx
QjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAw
QjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNTBF
MTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCBpbiBIZWFkZXJzICovLApA
QCAtNzQzMiw2ICs3NDc3LDcgQEAKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNT
dHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2
MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVk
QXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZEMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc0
NjgsNiArNzUxNCw3IEBACiAJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2NUU3IC8q
IExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk1MUMwMjRB
MjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVPYmplY3REYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEgLyogTGl2ZU9i
amVjdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzY0MSw2ICs3Njg4LDcgQEAKIAkJCQlBNTVE
OTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBNjE3RDEyODU4MDA1RjVG
RjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OTBERDZFMTgyRjQ5
OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NjczLDYgKzc3MjEsNyBAQAogCQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBT
dHJpbmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM4NzhFMUJGQkM0NEQwMEUz
QUIxRSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzQjEz
NEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5QTFD
MDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBp
biBIZWFkZXJzICovLApAQCAtODY5Myw2ICs4NzQyLDcgQEAKIAkJCQlBMUI5RTIzRDFCNEUwRDY3
MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQjc5MTlCMUMwMjRBNDYw
MDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
NTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg3
MTksNiArODc2OSw3IEBACiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAv
KiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQyMzg5MDFCRTE4
QzNDMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcw
Qjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTg4NTYsNiArODkwNyw3IEBACiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAy
RTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RDJGM0RBMTM5RjRC
RTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYx
MTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcw
Qjc5MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzNzMwOEMxQzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRy
ZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1h
dGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDA0LDYgKzkwNTYsNyBAQAogCQkJCTBG
RjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMg
aW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3MzIxNThFQkQ1
ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzZGMjc5NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQxNDJFNTUxQjc5NzNDMDAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTAxMiw2ICs5MDY1LDcgQEAKIAkJCQk3
OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZp
cmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMz
IC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5MjFDMDI0QTIzMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkx
QTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKaW5kZXggODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBh
My4uYTllNjliZWE2ZWVhZTU3OGI5MmQ5ODllMWU4OTE5MWEzMzQ4OTllZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8U291
cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwKICAgICAgICAgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0p
IHsKQEAgLTExNSw3ICsxMTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAg
ICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
ZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBz
b3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxl
cywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5l
cmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGR1bW15VERaVmFyaWFibGVzLCBXVEY6Om1vdmUoc291
cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5hbWVWYWx1ZSh2bSwg
anNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0
YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYmJjMzUzNGFlMDUyZjRkNmZhMjViZGU3MDNj
OTNkM2E3OTVlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gMjUuMy4zLjMgR2Vu
ZXJhdG9yUmVzdW1lICggZ2VuZXJhdG9yLCB2YWx1ZSApCisvLyAyNS4zLjMuNCBHZW5lcmF0b3JS
ZXN1bWVBYnJ1cHQoZ2VuZXJhdG9yLCBhYnJ1cHRDb21wbGV0aW9uKQorZnVuY3Rpb24gZ2VuZXJh
dG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIEdlbmVyYXRvclN0YXRlLgorICAgIGNvbnN0IENvbXBsZXRlZCA9
IC0xOworICAgIGNvbnN0IEV4ZWN1dGluZyA9IC0yOworCisgICAgLy8gUmVzdW1lTW9kZS4KKyAg
ICBjb25zdCBOb3JtYWxNb2RlID0gMDsKKyAgICBjb25zdCBSZXR1cm5Nb2RlID0gMTsKKyAgICBj
b25zdCBUaHJvd01vZGUgPSAyOworCisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZTsKKyAgICBsZXQgZG9uZSA9IGZhbHNlOworICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5l
ZDsKKworICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICdudW1iZXInKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOworCisgICAgaWYg
KHN0YXRlID09PSBFeGVjdXRpbmcpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJHZW5l
cmF0b3IgaXMgZXhlY3V0aW5nIik7CisKKyAgICBpZiAoc3RhdGUgPT09IENvbXBsZXRlZCkgewor
ICAgICAgICBpZiAocmVzdW1lTW9kZSA9PT0gVGhyb3dNb2RlKQorICAgICAgICAgICAgdGhyb3cg
c2VudFZhbHVlOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICBpZiAocmVzdW1lTW9k
ZSA9PT0gUmV0dXJuTW9kZSkKKyAgICAgICAgICAgIHZhbHVlID0gc2VudFZhbHVlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0
YXRlID0gRXhlY3V0aW5nOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRv
ck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPT09IEV4ZWN1dGluZykgeworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICBnZW5l
cmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAgICAgICAgICAgdGhyb3cgZXJy
b3I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHsgZG9uZSwgdmFsdWUgfTsKK30KKwor
ZnVuY3Rpb24gbmV4dCh2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
QGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2YWx1ZSwgLyogTm9ybWFsTW9kZSAqLyAwKTsKK30KKwor
ZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHZhbHVlLCAvKiBSZXR1cm5Nb2RlICovIDEpOworfQor
CitmdW5jdGlvbiB0aHJvdyhleGNlcHRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
cmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgZXhjZXB0aW9uLCAvKiBUaHJvd01vZGUgKi8g
Mik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDU0ZGZkMTY4Y2E2MDBlYmVmMTM1ODA0MzJjNzdlMjVhZDQ0
NGFkMGMuLjU5NjA2NGM0MDY4MjQ5NzgwODljNDY0M2YxYzNkZmJkMDUzNGI5OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29k
ZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OgogICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmlu
ZGV4IGY2Yzg5YTlkNGFkMmY2Mzc4NTg3MzQ3MDE2NTEzYjE0NzMwZTUzNzIuLjQzZDcwMTI0MTk2
ZGQzNjJjYzY0NGY5M2EyMWY5ZjgxZTg3YmIzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTkwLDYgKzkwLDggQEAKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3N3aXRjaF9zdHJpbmciLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDog
NCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIs
ICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fycm93X2Z1
bmNfZXhwIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxs
IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwi
LCAibGVuZ3RoIiA6IDkgfSwKQEAgLTEzMCw3ICsxMzIsOSBAQAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXMiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKLSAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0KKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAg
fSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IGM3N2FiZWFhMjkyMDllMzI5OTEz
Y2Q5NGNmYWQ3NTE1MTliZDk5ZjEuLjcyMjhiMDMzMzY2YzdhNjdiNTEwNDg4ZGZlNDVmM2RkM2Nm
YTQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0CiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2Uv
ZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1
ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3Rv
ciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5
IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2Fs
bHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBU
aGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNl
IGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxOSArMTE2LDE5IEBAIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5k
IHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewog
ICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3Bl
cmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
Ci0gICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywg
YmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYg
KGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAg
ICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
LCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9u
IGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0
aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewpAQCAtMTM4LDEw
ICsxMzgsMTAgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICB9CiB9CiAKLXN0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAg
c3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAg
ICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIHZvaWQg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGUKICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9u
KGNvZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBz
dGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CkBAIC0xODAsNyAr
MTgwLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2MKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKICAgICBVbmxpbmtlZENvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAg
ICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVyczsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2Vk
Q29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxC
eXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsK
LSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQp
OwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAg
ICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQo
aW5kZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAppbmRleCBjYmI4OTQ4NmUxNGMwNWYyODQ3NGNmZDJhYmRhNzRlOTEwY2EyOGRiLi5mZTAy
NmZhYWY5ZWNiOTIyNGFlM2RhYTBjYTYyNTVhNWY5YWZhZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIsNyArMzIsNyBAQAog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC03MSw3ICs3MSw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2plcV9udWxs
OgogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgotICAgIGNhc2Ugb3Bf
aW5jOiB7CisgICAgY2FzZSBvcF9pbmM6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNSw2ICsxMjYsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9nZXRfcHJvcGVy
dHlfZW51bWVyYXRvcjoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBj
YXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9z
dHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE1Myw2
ICsxNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBv
cF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5j
OgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVu
dF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CkBAIC0yMzQsNiArMjM3LDIyIEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgdW5z
aWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2lu
dEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzb3It
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVChtZXJn
ZVBvaW50QmxvY2spOworICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJp
dChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZz
ZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjQxLDcgKzI2MCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwpAQCAtMjU2LDYgKzI3NSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAg
Y2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBv
cF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNz
ZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMTYsNiArMzM2
LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjYXNlIG9wX25ld19yZWdleHA6CiAg
ICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKKyAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3Zh
cmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKQEAgLTM5Miw3ICs0MTQsMTUg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29k
ZUJsb2NrLT5tX251bVZhcnM7IGktLTspCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQo
KSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisgICAgY2FzZSBvcF9yZXN1bWU6
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0g
MSk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChb
Jl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQo
KSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDllMTM4NmUzZDMyZDYxZGJhOWY4MTljZWM5N2E3MDAyM2M5YjhmM2YuLjNl
MmU2ZWNiZmJjOTFmYWE1M2JiODljNmI3MTZkOThlNTBhOTM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAiOiAl
bHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlczsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUg
cmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSks
Ci0gICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFy
cyk7CisgICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVMb2NhbHMsIG1fbnVtVmFy
cyk7CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKQogICAgICAgICBvdXQucHJpbnRmKCI7IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVkIiwg
YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CkBA
IC02ODAsNiArNjgwLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAorICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgeworICAgICAgICBv
dXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOworICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7CisgICAgICAgICAgICBsaXZlbmVz
cy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOworICAgICAgICAgICAg
KytpOworICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZC5zaXplKCkpOworICAgIH0KKwogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAg
LTEzMDMsNiArMTMxNSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOiB7CisgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdf
Z2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJvd19m
dW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEzMjAsNiArMTM0MCwxNCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5j
X2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewogICAgICAgICAgICAg
cHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywg
aGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1MDgsNiArMTUzNiwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCks
IGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
KCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5h
bWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGlu
dCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50
IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKQEAgLTE2NzIsNyArMTcyMSw3IEBAIGNsYXNzIFB1dFRvU2NvcGVG
aXJlRGV0YWlsIDogcHVibGljIEZpcmVEZXRhaWwgewogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9nbG9iYWxPYmplY3Qob3RoZXIubV9nbG9iYWxPYmplY3QpCiAgICAgLCBt
X2hlYXAob3RoZXIubV9oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdpc3RlcnMob3RoZXIubV9u
dW1DYWxsZWVSZWdpc3RlcnMpCisgICAgLCBtX251bUNhbGxlZUxvY2FscyhvdGhlci5tX251bUNh
bGxlZUxvY2FscykKICAgICAsIG1fbnVtVmFycyhvdGhlci5tX251bVZhcnMpCiAgICAgLCBtX2lz
Q29uc3RydWN0b3Iob3RoZXIubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9zaG91bGRBbHdheXNC
ZUlubGluZWQodHJ1ZSkKQEAgLTE3MjksNiArMTc3OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
OwogICAgIH0KICAgICAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0x
NzM5LDcgKzE3ODksNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgOiBKU0NlbGwoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChzY29wZS0+Z2xvYmFsT2JqZWN0KCktPnZt
KCksIHRoaXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKSkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKHVubGlua2VkQ29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKICAgICAsIG1fbnVtVmFycyh1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1WYXJzKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKHVubGlua2Vk
Q29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5l
ZCh0cnVlKQpAQCAtMTkwOSw2ICsxOTU5LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRz
LgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1v
ZHVsZUVudmlyb25tZW50czsKIAorICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRl
Y29kZSBvZmZzZXRzLgorICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dHM7CisKICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0
cnVjdGlvbkNvdW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJl
YWRlci5hdEVuZCgpOyApIHsKQEAgLTIxOTcsNiArMjI1MCwxNSBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjIwOCw2ICsyMjcwLDIwIEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURjo6bW92ZShpbnN0cnVj
dGlvbnMpOwogCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVu
IGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGUpIHsKKyAgICAgICAgaWYgKHNp
emVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAg
ICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworICAgICAgICAgICAgc2l6ZV90
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBieXRl
Y29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKKyAgICAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhy
ZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0
aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRo
ZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0
cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTIy
MzEsNyArMjMwNyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgOiBKU0NlbGwoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIHRo
aXMsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faGVhcCgmbV9nbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisgICAgLCBtX251bUNhbGxlZUxvY2Fs
cygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoZmFsc2UpCiAg
ICAgLCBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZChmYWxzZSkKQEAgLTMwNTgsNiArMzEzNCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAg
ICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1
bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAg
fSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVh
ZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQwMjksNyArNDEw
Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiAgICAgCiAgICAgRmFzdEJpdFZlY3Rv
ciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgw
KTsKICAgICAKLSAgICBpZiAobGl2ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX251bUNhbGxlZVJlZ2lzdGVycykpIHsKKyAgICBpZiAobGl2ZUF0SGVhZC5udW1CaXRz
KCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZUxvY2FscykpIHsKICAgICAgICAg
YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICBkYXRhTG9nKCIgICAgV3JvbmcgbnVt
YmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBSZXN1bHQ6
ICIsIGxpdmVBdEhlYWQsICJcbiIpOwpAQCAtNDAzNyw3ICs0MTE0LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZhbGlkYXRlKCkKICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAgICB9CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9udW1DYWxsZWVSZWdpc3RlcnM7IGktLTspIHsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX251bUNhbGxlZUxvY2FsczsgaS0tOykgewogICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7CiAgICAg
ICAgIAogICAgICAgICBpZiAobGl2ZUF0SGVhZC5nZXQoaSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjMWRmMTg3YzEyMjBkMmY3ZjAzMjRhMmQy
NWY5YjgzYzA1MmQ4MmVjLi4zY2JlNzVjNDk3ODEwMTkzODgwYzNhNWIxYjk5NTkzMDUwMGFhOTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02OSw2
ICs2OSw3IEBACiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hw
b2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTE0MSw2ICsxNDIsOCBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBpbnQgbnVtUGFyYW1ldGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgIHZvaWQgc2V0TnVtUGFyYW1l
dGVycyhpbnQgbmV3VmFsdWUpOwogCisgICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQqIGFkZHJlc3NPZk51bVBhcmFt
ZXRlcnMoKSB7IHJldHVybiAmbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJs
b2NrLCBtX251bVBhcmFtZXRlcnMpOyB9CiAKQEAgLTY1NCw2ICs2NTcsMTggQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdT
d2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAg
U3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsg
UkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAorICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lz
dGVycyBhdCB5aWVsZCBwb2ludHMuCisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOworICAgIH0KKyAgICBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07CisgICAgfQorCiAgICAgRXZhbENvZGVDYWNo
ZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpA
QCAtODU1LDcgKzg3MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IC8vIEZJWE1FOiBNYWtlIHRoZXNlIHJlbWFpbmluZyBtZW1iZXJzIHByaXZhdGUuCiAKICAgICBp
bnQgbV9udW1Mb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzOwotICAgIGludCBtX251bUNhbGxl
ZVJlZ2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CiAgICAgaW50IG1fbnVtVmFy
czsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgCkBAIC05MDAsNiArOTE1LDgg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1w
bGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxGYXN0
Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOworCiAgICAgICAgIEV2YWxDb2Rl
Q2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDYyNTIxZmM2NTI4YzVhMmU3ZDRlYWY0
Mzg1OGMwNmNlZTdjN2FlZGQuLjgzNzAzY2ZhOTIyY2M2MjcxMjg1ZjU5MzhlMmE4MjBmOGJlZGIw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUu
aApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXku
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwyMyArNDUsMjkgQEAKIAogICAg
IGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEV4ZWN1dGFi
bGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNl
LCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIHRyeUdldChib29sIGlu
U3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
aXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBzY29wZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKS5nZXQoKTsK
LSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGlzQ2FjaGVhYmxlKGluU3Ry
aWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCFpblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNl
Q29kZUtleShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCB0aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0
KHNvdXJjZUNvZGVLZXkpLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBn
ZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRl
eHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpT
U2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0
aGlzVERaTW9kZSwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5k
ZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2Nv
cGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
RXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFs
U291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgJnZhcmlhYmxlc1VuZGVyVERa
KTsKKyAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoZXhlYywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERa
TW9kZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFi
bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2
YWxTb3VyY2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykK
LSAgICAgICAgICAgICAgICBtX2NhY2hlTWFwLnNldChldmFsU291cmNlLmltcGwoKSwgV3JpdGVC
YXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUp
KTsKKyAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRleHQsIGV2YWxTb3Vy
Y2UsIHNjb3BlKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50cmllcykgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCghaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBT
b3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXkoZXZhbFNvdXJjZSwgU3RyaW5nKCksIFNvdXJjZUNv
ZGVLZXk6OkV2YWxUeXBlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgdGhpc1REWk1vZGUpOworICAgICAgICAgICAgICAgIG1f
Y2FjaGVNYXAuc2V0KHNvdXJjZUNvZGVLZXksIFdyaXRlQmFycmllcjxFdmFsRXhlY3V0YWJsZT4o
ZXhlYy0+dm0oKSwgb3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBldmFsRXhlY3V0YWJsZTsKICAgICAgICAgfQpA
QCAtODAsMTcgKzg3LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2NvcGUtPmlzR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50KCkgfHwgc2NvcGUtPmlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKSB8
fCBzY29wZS0+aXNWYXJTY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzQ2FjaGVhYmxlKGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTdHJpbmcmIGV2
YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXND
YWNoZWFibGUoYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3Vy
Y2UsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJZiBldmFsKCkg
aXMgY2FsbGVkIGFuZCBpdCBoYXMgYWNjZXNzIHRvIGEgbGV4aWNhbCBzY29wZSwgd2UgY2FuJ3Qg
c291bmRseSBjYWNoZSBpdC4KICAgICAgICAgICAgIC8vIElmIHRoZSBldmFsKCkgb25seSBoYXMg
YWNjZXNzIHRvIHRoZSAidmFyIiBzY29wZSwgdGhlbiB3ZSBjYW4gY2FjaGUgaXQuCiAgICAgICAg
ICAgICByZXR1cm4gIWluU3RyaWN0Q29udGV4dCAKLSAgICAgICAgICAgICAgICAmJiBldmFsU291
cmNlLmxlbmd0aCgpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgo
KSAKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGV2YWxTb3VyY2UubGVu
Z3RoKCkpIDwgT3B0aW9uczo6bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKQogICAg
ICAgICAgICAgICAgICYmIGlzQ2FjaGVhYmxlU2NvcGUoc2NvcGUpOwogICAgICAgICB9CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRh
YmxlPj4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlQ29kZUtl
eSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPiwgU291cmNlQ29kZUtleUhhc2gsIFNvdXJj
ZUNvZGVLZXlIYXNoVHJhaXRzPiBFdmFsQ2FjaGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBt
X2NhY2hlTWFwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggOTIxNDRmODlmYmQ0NTBmZTgyMDUwMGMyYTA5NjliNTBi
MTAyYTE1ZC4uMjYwMmJlN2M0ZmJlY2U5ZGVhNTAyMThmZTE0YjU2NTFmYjQ3YjhiZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI2
LDIxICsyNiwyOCBAQAogI2lmbmRlZiBFeGVjdXRhYmxlSW5mb19oCiAjZGVmaW5lIEV4ZWN1dGFi
bGVJbmZvX2gKIAorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8vIEZJWE1FOiBUaGVzZSBmbGFncywg
UGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJl
b3JnYW5pemVkLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5l
ZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXND
b25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgRXhlY3V0YWJsZUluZm8oYm9v
bCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29s
IGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAg
ICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNF
dmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAg
ICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVp
bHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAsIG1fZ2VuZXJhdG9yVGhp
c01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSkKICAgICAgICAg
LCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAg
ICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCisg
ICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
Y29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQp
KTsKKyAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdXBlckJpbmRpbmcpKTsKKyAgICAgICAgQVNTRVJUKG1fZ2VuZXJhdG9yVGhpc01vZGUgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNNb2RlKSk7CiAgICAgfQogCiAgICAg
Ym9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsg
fQpAQCAtNDgsOCArNTUsMTAgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBp
c0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXNNb2RlPihtX2dlbmVyYXRvclRoaXNNb2RlKTsg
fQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0K
KyAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KKyAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC01Nyw4ICs2NiwxMCBAQCBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAg
ICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOwogICAg
IHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOworICAgIFNvdXJj
ZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cAppbmRleCBkNjBmZGY3ZDNjZjM2MGUzZWMxNjk4Nzc5YWJlNmI5ZWI5MDZkNTE0Li45ODk5Mzli
MjMzMjE0Y2ZkNDViZTA3YmFlODYwOWZjODRjN2ViMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNiAr
NTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICBjYXNl
IG9wX3NhdmU6CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNd
LnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCmluZGV4IGMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYuLjg3ZTgy
MzNmMWZlM2E4YmVjNDAyMzBkMjk4YjA5ZTZkZmY5YTM4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5m
byYgaW5mbykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bVZhcnMoMCkK
LSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCisgICAgLCBtX251bUNhbGxlZUxvY2Fscygw
KQogICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9nbG9i
YWxPYmplY3RSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKQEAgLTY1LDEwICs2NSwxMiBAQAog
ICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQotICAgICwgbV9p
c0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24oKSkKKyAgICAsIG1fZ2VuZXJhdG9y
VGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkp
CisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJp
bmRpbmcoKSkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAg
ICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQorICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1v
ZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAg
ICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGZhNTE0YzE1NmE3Y2I3Y2VmNzRh
OWYxMDAwMTY1Yjg2MWYwZjgzY2YuLmJjYTJjMDRhY2E0MzgyOTIxNzU2OTU4YmFhNjhkYjMwZThm
MTM1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNp
bmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5m
by5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlcklu
Zm8uaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC00
MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNp
bmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0xMTYsNyArMTE4LDcg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CisgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAK
ICAgICBib29sIG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVs
bFNjb3BlQ2hhaW47IH0KIApAQCAtMjAyLDYgKzIwNCw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rvcktp
bmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRv
clRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhpc01vZGU+
KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcp
OyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CkBAIC0yMzIsNyArMjM2LDcgQEAg
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGludCBtX251
bVZhcnM7CiAgICAgaW50IG1fbnVtQ2FwdHVyZWRWYXJzOwotICAgIGludCBtX251bUNhbGxlZVJl
Z2lzdGVyczsKKyAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CiAKICAgICAvLyBKdW1wIFRhYmxl
cwogCkBAIC0zODcsMTIgKzM5MSwxNCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKLSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAg
dW5zaWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJp
bmRpbmcgOiAxOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAKKyAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgQ29kZVR5
cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNmRhMTg1OWIz
YWQyZDFjNjVkOGE1M2ZmMTEzN2UxZTQ3ZTlkNTliNi4uM2Y0OTQ4ODVhZjQ5YzI4ZTI2ZjQ5N2Q2
NzVmNjRhMTZjOWI5YWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01MCwxMyAr
NTAsMTMgQEAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQs
IFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgVW5saW5rZWRG
dW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9
IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpC
dWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
OwogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgp
KSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxG
dW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGVycm9yLCBu
dWxscHRyKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewog
ICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwg
ZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0
ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5l
ZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0
TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGlzQXJyb3dG
dW5jdGlvbikpOworICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0
aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJh
dG9yVGhpc01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSkpOwog
ICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhl
Y3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC03NSw3ICs3NSw3
IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+
aW5mZXJyZWROYW1lKCkpCkBAIC05OSw3ICs5OSw4IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgLCBtX2Nv
bnN0cnVjdEFiaWxpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdEFiaWxpdHkpKQog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0
cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgp
KQotICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCisgICAg
LCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlz
TW9kZSkpCisgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
c3VwZXJCaW5kaW5nKCkpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBtX3BhcmVu
dFNjb3BlVERaVmFyaWFibGVzLnN3YXAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtMTgw
LDcgKzE4MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAKIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBz
cGVjaWFsaXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24pCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQog
ewogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2Fs
bDoKQEAgLTE5Niw3ICsxOTcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAg
IGVycm9yLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAg
ICAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDhlODIyOTM5MGU1NzdjYjQ4MGZiMGU5MjkzZjQxYmE0
MmQ5YzFmOC4uYzhiYmEwYWMzMmJlNDM3ZmZiNWRmM2UzZjllMDViMDQ3OGE1MzYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlVHlwZS5o
IgogI2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFu
Z2VJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5k
bGVySW5mby5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
QEAgLTY1LDEwICs2NiwxMCBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJj
ZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdl
bmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikK
ICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+
aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlu
a2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
KnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTgyLDYgKzgzLDggQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0
Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQorICAgIEdlbmVyYXRvclRoaXNN
b2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJh
dG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CisgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9z
dXBlckJpbmRpbmcpOyB9CiAKICAgICB1bnNpZ25lZCB1bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0OyB9CiAgICAgdW5z
aWduZWQgdW5saW5rZWRCb2R5U3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
Qm9keVN0YXJ0Q29sdW1uOyB9CkBAIC05NSw3ICs5OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgVk0mLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUsIAotICAgICAgICBQYXJzZXJFcnJvciYsIGJvb2wpOworICAgICAgICBQYXJzZXJFcnJv
ciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0
YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKQEAgLTEyNSwx
MCArMTI4LDkgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxp
dHkpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3Qg
eyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9CiAKIHByaXZhdGU6
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBWYXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBt
X3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTU4
LDcgKzE2MCw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOwogICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9k
ZSA6IDE7IC8vIEZ1bmN0aW9uTW9kZQotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDog
MTsKKyAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsKKyAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMWFiYmJhNGNkMTdkMDM1NTQ0ZGQ2Nzg3Njhk
NjgwOTMzOTg1NGJlYS4uM2NkMTcxNzE2ZWUxODdlM2Y0YWJiNGYwZDE5YTVkZGYxYzc4MDEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKQEAgLTIyNyw5
ICsyMjksMzMgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICAgICAgfQogICAgIH0KIAorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBjb2RlQmxv
Y2stPnBhcnNlTW9kZSgpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9
IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKTsKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1
bWVudHMgPSBmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNF
dmFsKCk7CisKKyAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJh
cmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRv
ciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yTW9kZSkKKyAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKKworICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYg
bmVlZHNBcmd1bWVudHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUg
ImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVz
ICJhcmd1bWVudHMiLgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEg
Z2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAg
ICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJn
dW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0
IGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpn
ZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJl
dHVybiB7CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAg
ICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8g
dGhlIGdlbidzIGFyZ3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAg
ICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9
CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwog
ICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9k
ZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAK
QEAgLTI1NCwxNCArMjgwLDMzIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXpl
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3Bl
IGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBi
YXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIg
PSAmbV9wYXJhbWV0ZXJzWzFdOworICAgICAgICBpZiAoZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBH
ZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUo
Jm1fdGhpc1JlZ2lzdGVyKTsKKworICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNl
ZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQg
Z2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQo
KWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBq
dW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgorICAgICAgICAv
LyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUg
YG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGJlZ2luR2VuZXJhdG9y
KGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4K
KyAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKyAgICB9CisKICAgICBpZiAoZnVu
Y3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5m
dW5jdGlvbk1vZGUoKSkpIHsKKyAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0g
Y2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFy
a0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwog
ICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwg
Jm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykgewogICAgICAgICBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0
aGUgInZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBl
eHByZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtMjcxLDE5ICszMTYsNiBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5pdGlhbGl6ZVZhckxl
eGljYWxFbnZpcm9ubWVudChzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgIH0KIAotICAg
IC8vIE1ha2Ugc3VyZSB0aGUgY29kZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFt
ZXRlcnMsIGFuZCBtYWtlIHN1cmUgdGhhdCBwYXJhbWV0ZXJzCi0gICAgLy8gbmVlZGluZyBkZXN0
cnVjdHVyaW5nIGFyZSBub3RlZC4KLSAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNp
emUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKLSAgICBtX3RoaXNSZWdpc3Rl
ci5zZXRJbmRleChpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7Ci0gICAgICAgIGlm
IChwYXR0ZXJuLT5pc1Jlc3RQYXJhbWV0ZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fcmVzdFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0
aWNfY2FzdDxSZXN0UGFyYW1ldGVyTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7Ci0gICAgfQotICAgIAogICAgIC8v
IEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIgYXJndW1lbnRzLgog
ICAgIGJvb2wgY2FwdHVyZXNBbnlBcmd1bWVudEJ5TmFtZSA9IGZhbHNlOwogICAgIGlmIChmdW5j
dGlvbk5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKQEAgLTQ3Niw3ICs1MDgsMzYgQEAg
UGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAKICAgICBt
X25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmlzQXJy
b3dGdW5jdGlvbigpKSB7CisgICAgc3dpdGNoIChwYXJzZU1vZGUpIHsKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9k
ZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCisgICAgICAgICAgICBlbWl0
TG9hZEFycm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6
IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAgIC8v
IEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2CisgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
KworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rl
cik7CisgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZTogeworICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9y
ZSBoZXJlLgorICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDogewogICAgICAgICBp
ZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgICAgICBlbWl0TW92ZShtX25ld1RhcmdldFJl
Z2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwogICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKQEAgLTQ5Miw5ICs1NTMsOCBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpCi0gICAgICAgICAgICBlbWl0TG9hZEFy
cm93RnVuY3Rpb25UaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAi
aW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFj
aygpIiBpcyBjYWxsZWQKQEAgLTc5OSw2ICs4NTksMjIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkKICAgICByZXR1cm4gJnBhcmFtZXRl
cjsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVu
Y3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29k
ZSBibG9jayBrbm93cyBhYm91dCBhbGwgb2Ygb3VyIHBhcmFtZXRlcnMsIGFuZCBtYWtlIHN1cmUg
dGhhdCBwYXJhbWV0ZXJzCisgICAgLy8gbmVlZGluZyBkZXN0cnVjdHVyaW5nIGFyZSBub3RlZC4K
KyAgICBtX3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZl
IHNwYWNlIGZvciAidGhpcyIKKyAgICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChpbml0aWFsaXpl
TmV4dFBhcmFtZXRlcigpLT5pbmRleCgpKTsgLy8gdGhpcworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gcGF0dGVybiA9
IHBhcmFtZXRlcnMuYXQoaSkuZmlyc3Q7CisgICAgICAgIGlmIChwYXR0ZXJuLT5pc1Jlc3RQYXJh
bWV0ZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVzdFBhcmFtZXRlcik7
CisgICAgICAgICAgICBtX3Jlc3RQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxSZXN0UGFyYW1ldGVy
Tm9kZSo+KHBhdHRlcm4pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVO
ZXh0UGFyYW1ldGVyKCk7CisgICAgfQorfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0
aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CkBA
IC04MjYsMTcgKzkwMiwxNyBAQCBVbmlxdWVkU3RyaW5nSW1wbCogQnl0ZWNvZGVHZW5lcmF0b3I6
OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJpbmdQYXR0ZQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3UmVnaXN0ZXIoKQogewotICAgIG1fY2FsbGVlUmVnaXN0
ZXJzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lzdGVycy5zaXpl
KCkpKTsKLSAgICBpbnQgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gbWF4PGludD4obV9jb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpOwotICAgIG51
bUNhbGxlZVJlZ2lzdGVycyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBudW1DYWxsZWVSZWdpc3RlcnMpOwotICAgIG1fY29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycyA9IG51bUNhbGxlZVJlZ2lzdGVyczsKLSAgICByZXR1cm4gJm1fY2Fs
bGVlUmVnaXN0ZXJzLmxhc3QoKTsKKyAgICBtX2NhbGxlZUxvY2Fscy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7CisgICAgaW50IG51bUNhbGxl
ZUxvY2FscyA9IG1heDxpbnQ+KG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscywgbV9jYWxs
ZWVMb2NhbHMuc2l6ZSgpKTsKKyAgICBudW1DYWxsZWVMb2NhbHMgPSBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVlTG9jYWxzKTsKKyAg
ICBtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgPSBudW1DYWxsZWVMb2NhbHM7CisgICAg
cmV0dXJuICZtX2NhbGxlZUxvY2Fscy5sYXN0KCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnJlY2xhaW1GcmVlUmVnaXN0ZXJzKCkKIHsKLSAgICB3aGlsZSAobV9jYWxsZWVSZWdpc3Rl
cnMuc2l6ZSgpICYmICFtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCkucmVmQ291bnQoKSkKLSAgICAg
ICAgbV9jYWxsZWVSZWdpc3RlcnMucmVtb3ZlTGFzdCgpOworICAgIHdoaWxlIChtX2NhbGxlZUxv
Y2Fscy5zaXplKCkgJiYgIW1fY2FsbGVlTG9jYWxzLmxhc3QoKS5yZWZDb3VudCgpKQorICAgICAg
ICBtX2NhbGxlZUxvY2Fscy5yZW1vdmVMYXN0KCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdCbG9ja1Njb3BlVmFyaWFibGUoKQpAQCAtMTkxNSw3ICsxOTkxLDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlVmFyaWFibGUoCiAgICAgICAgIHZhck9mZnNl
dCA9IFZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsK
ICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOwot
ICAgICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9j
YWxsZWVSZWdpc3RlcnMuc2l6ZSgpKSk7CisgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZUxvY2Fscy5zaXplKCkpKTsKICAgICB9CiAg
ICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIDApOwogICAgIHN5bWJvbFRh
YmxlLT5hZGQobG9ja2VyLCBwcm9wZXJ0eS5pbXBsKCksIG5ld0VudHJ5KTsKQEAgLTIzMTIsMTIg
KzIzODgsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRBc3NlcnQoUmVn
aXN0ZXJJRCogY29uZGl0aW9uLCBpbnQgbGluZSkKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgc2l6ZV90IGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5j
cmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCksIGJlZ2luICsgMyk7CisgICAgbV9zdGF0
aWNQcm9wZXJ0eUFuYWx5emVyLmNyZWF0ZVRoaXMoZHN0LT5pbmRleCgpLCBiZWdpbiArIDMpOwog
CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI0ODEsMjAgKzI1NTcsNiBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5V2l0aFNpemUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCi17Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlv
bkludGVybmFsKGRzdCwgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24o
ZnVuY3Rpb24pKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4KQotewotICAg
IGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmlu
ZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7Ci0gICAgcmV0dXJuIGRz
dDsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVn
aXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX25ld19y
ZWdleHApOwpAQCAtMjUwMywxMyArMjU2NSwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCogcmVnRXhwKQogICAg
IHJldHVybiBkc3Q7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMsIE9wY29kZUlE
IG9wY29kZUlEKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0K
LSAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwIHx8IG9wY29kZUlEID09IG9w
X25ld19hcnJvd19mdW5jX2V4cCk7Ci0gICAgCiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1
bmN0aW9uID0gZnVuYy0+bWV0YWRhdGEoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJs
b2NrLT5hZGRGdW5jdGlvbkV4cHIobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisKKyAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IG9wX25ld19mdW5jX2V4cDsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uLT5w
YXJzZU1vZGUoKSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVu
Y3Rpb25Nb2RlOiB7CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2Fycm93X2Z1bmNfZXhwOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgfQogICAgIAogICAgIGVtaXRPcGNvZGUob3Bjb2RlSUQpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMjUyMiwxNyArMjU5NiwxOCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0
LCBCYXNlRnVuY0V4cHJOb2RlKgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVu
YykKIHsKLSAgICBlbWl0TmV3RnVuY3Rpb25Db21tb24oZHN0LCBmdW5jLCBvcF9uZXdfZnVuY19l
eHApOworICAgIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jKTsKICAg
ICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5v
ZGUqIGZ1bmMpCiB7CisgICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogICAgIGJvb2wgaXNDbGFzc0Nv
bnN0cnVjdG9yID0gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rvcktp
bmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7Ci0gICAgaWYgKGlzQ2xhc3NDb25zdHJ1Y3Rv
cikKKyAgICBpZiAoaXNDbGFzc0NvbnN0cnVjdG9yIHx8IGdlbmVyYXRvclRoaXNNb2RlKCkgPT0g
R2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lz
dGVyKCkpOwogICAgIAotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMsIG9wX25l
d19hcnJvd19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihk
c3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTI1NTAsNiArMjYyNSwxOSBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihS
ZWdpc3RlcklEKiBkc3QsIENvbnN0cgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24pCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgIGlm
IChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAg
ICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29w
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpbmRleCk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlv
biBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9w
X2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NzMsNiArMzg2MSwyNCBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLCBwcm9wZXJ0eU5hbWVz
KCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVs
bHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lz
dGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0
YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxM
YWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUo
ZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOwor
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQg
aW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlz
T2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9u
ZSA9IG5ld0xhYmVsKCk7CkBAIC0zODU1LDQgKzM5NjEsMjI4IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdFBhcmFtZXRlcihSZWdpc3RlcklEKiByZXN1bHQsIHVuc2ln
bmVkIG51CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAgUmVmUHRyPExhYmVs
PiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKKyAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0g
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNo
YW5nZSh5aWVsZFBvaW50SW5kZXgpOworICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQg
Zm9yIGluaXRpYWwgc2VxdWVuY2UuCisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0geWllbGRQb2ludEluZGV4IC0gMTsKKyAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOworICAgIGVt
aXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKK3sKKyAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7CisgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwor
fQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCit7CisgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGVtaXRMYWJlbChtZXJnZVBv
aW50KTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdp
c3RlcklEKiBhcmd1bWVudCkKK3sKKyAgICBlbWl0WWllbGRQb2ludChhcmd1bWVudCk7CisKKyAg
ICBSZWZQdHI8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgZW1pdEVxdWFsaXR5T3Ao
b3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOworCisg
ICAgUmVmUHRyPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKKyAgICBlbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsK
KyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwor
ICAgIC8vIFJldHVybi4KKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5S
ZWdpc3RlciA9IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKTsKKyAgICAgICAgaWYgKGlzSW5GaW5h
bGx5QmxvY2soKSkgeworICAgICAgICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBlbWl0TW92ZShuZXdU
ZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICAgICAgZW1pdFBvcFNj
b3BlcyhzY29wZVJlZ2lzdGVyKCksIDApOworICAgICAgICB9CisgICAgICAgIGVtaXRSZXR1cm4o
cmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIH0KKworICAgIC8vIFRocm93LgorICAgIGVtaXRM
YWJlbCh0aHJvd0xhYmVsLmdldCgpKTsKKyAgICBlbWl0VGhyb3coZ2VuZXJhdG9yVmFsdWVSZWdp
c3RlcigpKTsKKworICAgIC8vIE5vcm1hbC4KKyAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0
KCkpOworICAgIHJldHVybiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCk7Cit9CisKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpCit7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXRlcmF0b3IgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgYXJndW1lbnQs
IHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0cik7CisgICAgICAgICAgICBlbWl0TW92
ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBhcmd1bWVudCk7CisgICAgICAgICAgICBlbWl0Q2FsbChp
dGVyYXRvci5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcERvbmUgPSBuZXdMYWJlbCgpOwor
ICAgICAgICB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IG5leHRFbGVtZW50ID0gbmV3TGFi
ZWwoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsK
KworICAgICAgICAgICAgZW1pdEp1bXAobmV4dEVsZW1lbnQuZ2V0KCkpOworCisgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IGxvb3BTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0
TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRMb29wSGludCgpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW1pdFlpZWxkUG9pbnQodmFsdWUuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdl
dCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkp
OworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJl
dHVybkxhYmVsLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0
byBUaHJvd01vZGUuCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUmVmUHRy
PExhYmVsPiByZXR1cm5TZXF1ZW5jZSA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPExhYmVsPiByZXR1cm5XaXRoSXRlcmF0b3JSZXN1bHQgPSBuZXdMYWJlbCgpOworICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5JdGVyYXRvclJlc3VsdCA9IG5ld1Rl
bXBvcmFyeSgpOworICAgICAgICAgICAgICAgIC8vIFRocm93LgorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiB0aHJvd01ldGhvZEZvdW5kID0gbmV3
TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93TWV0
aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0
eU5hbWVzKCkudGhyb3dLZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZh
bHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwgdGhyb3dNZXRob2QuZ2V0KCkpLCB0
aHJvd01ldGhvZEZvdW5kLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0SXRlcmF0
b3JDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRU
aHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3Qg
aGF2ZSBhICd0aHJvdycgbWV0aG9kLiIpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFi
ZWwodGhyb3dNZXRob2RGb3VuZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgdGhyb3dBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0TW92ZSh0aHJvd0FyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3IuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZSh0aHJvd0FyZ3VtZW50cy5hcmd1bWVu
dFJlZ2lzdGVyKDApLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0Q2FsbChyZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgdGhyb3dNZXRob2QuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgdGhyb3dBcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5v
ZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wKHJldHVybldpdGhJdGVyYXRvclJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gUmV0dXJuLgorICAgICAgICAgICAgICAgIGVtaXRM
YWJlbChyZXR1cm5MYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVybk1ldGhvZEZvdW5kID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRH
ZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJl
dHVybktleXdvcmQpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmRmFsc2UoZW1pdElz
VW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCByZXR1cm5NZXRob2QuZ2V0KCkpLCByZXR1cm5NZXRo
b2RGb3VuZC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodmFsdWUuZ2V0
KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRK
dW1wKHJldHVyblNlcXVlbmNlLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0TGFi
ZWwocmV0dXJuTWV0aG9kRm91bmQuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIHJldHVybkFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRNb3ZlKHJldHVybkFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgaXRlcmF0b3Iu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHJldHVybk1ldGhv
ZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90
KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gcmV0dXJuV2l0aEl0ZXJhdG9yUmVzdWx0LgorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5XaXRoSXRl
cmF0b3JSZXN1bHQuZ2V0KCkpOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPExhYmVsPiByZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0ID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSksIHJldHVybkl0ZXJhdG9yUmVz
dWx0SXNPYmplY3QuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIikpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbChyZXR1cm5JdGVyYXRvclJl
c3VsdElzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBy
ZXR1cm5Gcm9tR2VuZXJhdG9yID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHJldHVybkl0ZXJhdG9yUmVz
dWx0LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIHJldHVybkZyb21HZW5lcmF0b3IuZ2V0
KCkpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1
cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwocmV0dXJuRnJvbUdlbmVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBGYWxs
dGhyb3VnaCB0byByZXR1cm5TZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwocmV0dXJuU2VxdWVuY2UuZ2V0KCkpOworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5GaW5hbGx5QmxvY2soKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdFJldHVybih2YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsLgorICAgICAgICAgICAgICAgIGVtaXRMYWJl
bChub3JtYWxMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgZW1pdE1vdmUodmFsdWUuZ2V0
KCksIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGVtaXRMYWJlbChuZXh0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZW1pdEl0ZXJhdG9yTmV4dFdpdGhWYWx1ZSh2YWx1ZS5nZXQoKSwgaXRlcmF0b3Iu
Z2V0KCksIHZhbHVlLmdldCgpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMo
KS5kb25lKSwgbG9vcERvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZh
bHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVtaXRMYWJlbChsb29wRG9uZS5nZXQoKSk7CisgICAgfQorCisgICAgZW1p
dEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUp
OworICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKK30KKworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSkKK3sKKyAgICBSZWdpc3Rl
cklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7
CisgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIGNvbXBsZXRlZFN0YXRlKTsKK30KKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKQoreworICAgIFJlZlB0cjxM
YWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgpOworICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFw
cGVuZChsYWJlbC5nZXQoKSk7CisgICAgZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKK30KKwordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3RhdGUpCit7
CisgICAgYmVnaW5Td2l0Y2goc3RhdGUsIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExh
YmVsKQoreworICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNr
Lmxhc3QoKTsKKyAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBp
bnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9j
ay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8u
Ynl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKKworICAgIFVu
bGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNo
SnVtcFRhYmxlKCk7CisgICAgaW50MzJfdCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldDsKKyAgICBqdW1wVGFibGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJhbmNo
T2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7CisgICAg
anVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgLy8g
V2UncmUgZW1pdHRpbmcgdGhpcyBhZnRlciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBi
ZWVuIGZpeGVkLCBzbworICAgICAgICAvLyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndh
cmQiIHJlZmVyZW5jZXMKKyAgICAgICAgQVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tp
XS0+aXNGb3J3YXJkKCkpOworICAgICAgICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7Cisg
ICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAwNzMxNmIxYTc0
NDMxMGQxYjgyYjRlZTdiYmJiODVkNjRmNGMzY2RmLi5mMDE2OTc4ZTFhMTA5N2U0ODU5NmIyNzJk
MjcxY2FiMjQ5ZDRmZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5l
IEJ5dGVjb2RlR2VuZXJhdG9yX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCkBAIC0yODAsNiArMjgxLDgg
QEAKIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7
IH0KKyAgICAgICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUoKTsgfQorICAgICAgICBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVy
QmluZGluZygpOyB9CiAKICAgICAgICAgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoKTsKIApAQCAtMjk3
LDYgKzMwMCw4IEBACiAKICAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGVSZWdpc3RlcigpIHsgcmV0
dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQogCisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJl
Z2lzdGVyKCkgeyByZXR1cm4gbV9nZW5lcmF0b3JSZWdpc3RlcjsgfQorCiAgICAgICAgIC8vIFJl
dHVybnMgdGhlIG5leHQgYXZhaWxhYmxlIHRlbXBvcmFyeSByZWdpc3Rlci4gUmVnaXN0ZXJzIHJl
dHVybmVkIGJ5CiAgICAgICAgIC8vIG5ld1RlbXBvcmFyeSByZXF1aXJlIGEgbW9kaWZpZWQgZm9y
bSBvZiByZWZlcmVuY2UgY291bnRpbmc6IGFueQogICAgICAgICAvLyByZWdpc3RlciB3aXRoIGEg
cmVmY291bnQgb2YgMCBpcyBjb25zaWRlcmVkICJhdmFpbGFibGUiLCBtZWFuaW5nIHRoYXQKQEAg
LTUwMCwxMCArNTA1LDggQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5V2l0aFNp
emUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBsZW5ndGgpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lz
dGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKiBmdW5jKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklE
KiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7Ci0gICAgICAg
IHZvaWQgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBCYXNlRnVuY0V4cHJOb2Rl
KiwgT3Bjb2RlSUQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIApAQCAtNTk3
LDYgKzYwMCw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5lZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0
ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJ
dGVyYXRvck5leHRXaXRoVmFsdWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRv
ciwgUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
KTsKICAgICAgICAgdm9pZCBlbWl0SXRlcmF0b3JDbG9zZShSZWdpc3RlcklEKiBpdGVyYXRvciwg
Y29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRSZXN0UGFyYW1ldGVyKFJlZ2lzdGVySUQqIHJlc3VsdCwgdW5zaWduZWQgbnVtUGFy
YW1ldGVyc1RvU2tpcCk7CkBAIC02NDUsMTIgKzY0OSwyOCBAQAogICAgICAgICB2b2lkIGJlZ2lu
U3dpdGNoKFJlZ2lzdGVySUQqLCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlKTsKICAgICAgICAgdm9p
ZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNz
aW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5n
ZSk7CiAKKyAgICAgICAgdm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKik7CisgICAgICAg
IHZvaWQgZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICB2b2lkIGVtaXRHZW5lcmF0
b3JTdGF0ZUxhYmVsKCk7CisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGlu
dDMyX3Qgc3RhdGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCog
YXJndW1lbnQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKKyAgICAgICAgdm9pZCBi
ZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExh
YmVsKiBkZWZhdWx0TGFiZWwpOworICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQorICAgICAgICBSZWdpc3RlcklE
KiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzRdOyB9CisKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzOyB9CiAgICAgICAgIGJv
b2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
OyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorCisgICAgICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKQEAgLTY2OCw2ICs2ODgsNyBAQAogICAgICAgICB2
b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBhcmVudFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBib29sIGlzQ2Fw
dHVyZWQpOworICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVn
aXN0ZXJJRCosIEJhc2VGdW5jRXhwck5vZGUqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9p
ZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiwgYm9vbCBjYW5PcHRp
bWl6ZVREWkNoZWNrcywgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFibGVSZXN1bHQgPSBu
dWxscHRyKTsKQEAgLTczMSw3ICs3NTIsNyBAQAogICAgICAgICBSZWdpc3RlcklEJiByZWdpc3Rl
ckZvcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVn
LmlzTG9jYWwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcnNbcmVn
LnRvTG9jYWwoKV07CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlTG9jYWxzW3JlZy50
b0xvY2FsKCldOwogCiAgICAgICAgICAgICBpZiAocmVnLm9mZnNldCgpID09IEpTU3RhY2s6OkNh
bGxlZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcjsKQEAgLTc1Mywx
MiArNzc0LDIyIEBACiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1Vu
ZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJU
RFopOwogCisgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFu
ZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KKyAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
NDcKICAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBtZXRhZGF0YS0+cGFy
c2VNb2RlKCk7CiAgICAgICAgICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkg
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAgICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUpKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRl
ck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAg
ICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lKQorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUgJiYgbWV0YWRhdGEtPnN1cGVy
QmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQorICAgICAgICAgICAgICAgIGNvbnN0
cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisKKyAgICAg
ICAgICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhp
c01vZGU6Ok5vbkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvck1vZGUgJiYgaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAg
IGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5OwogCi0gICAgICAg
ICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Nj
b3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmls
aXR5LCB2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFk
YXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwg
dmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJs
ZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC03NjYsNiArNzk3LDcgQEAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFy
Z3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFy
YXJncyhPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3Rl
cklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmly
c3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHBy
b2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnMm
KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KGludCBzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgpOwogICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0UGFy
YW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soRnVuY3Rpb25QYXJhbWV0ZXJz
JiwgRnVuY3Rpb25Ob2RlKiwgU3ltYm9sVGFibGUqLCBpbnQgc3ltYm9sVGFibGVDb25zdGFudElu
ZGV4LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFVuaXF1ZWRTdHJpbmdJbXBsKik+JiBjYXB0
dXJlcyk7CiAKQEAgLTgwNSw2ICs4MzcsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBtX3RvcE1v
c3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hcmd1bWVudHNSZWdp
c3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9sZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9nZW5lcmF0b3JS
ZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVn
aXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVn
aXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0
ZXIgeyBudWxscHRyIH07CkBAIC04MTIsNyArODQ1LDcgQEAKIAogICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmVnaXN0ZXJJRCosIDE2PiBtX2xvY2FsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZVJlZ2lz
dGVyczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX2NvbnN0YW50
UG9vbFJlZ2lzdGVyczsKLSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBt
X2NhbGxlZVJlZ2lzdGVyczsKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMy
PiBtX2NhbGxlZUxvY2FsczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMy
PiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMYWJlbCwgMzI+IG1fbGFi
ZWxzOwogICAgICAgICBMYWJlbFNjb3BlU3RvcmUgbV9sYWJlbFNjb3BlczsKQEAgLTgyOCw2ICs4
NjEsNyBAQAogICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNv
bnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNr
OworICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7
CiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVu
Y3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8
c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBt
X2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVB
cmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDI0MjczOGUzYWRlMzQyYjIwMGE5ZmQ0YWNj
MTUyYjI5NzgyYjgwMzIuLjQ4OGE3Y2ZkZDc2ZTFkNTY4YmY2YzAwOTllOTdhNWQ5YzA4NjIzMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTQ1LDcgKzE0Niw3IEBAIFJl
Z2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQorICAgIGlmIChtX3Nob3VsZEFsd2F5
c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5nZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVy
YXRvclRoaXNNb2RlOjpFbXB0eSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKQpAQCAtMTcwLDEyICsxNzEsMTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVBy
b3RvKTsKIH0KIAotc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9i
amVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIFJlZ2lz
dGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAm
Y2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7
Cit9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKK3N0YXRpYyBSZWdpc3RlcklEKiBl
bWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShnZW5lcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKQEAgLTI1ODQsNiArMjU4OSw3IEBAIHZvaWQgUmV0
dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKICAgICAgICAgZHN0ID0gMDsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlv
bihkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7
CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci5pc0luRmluYWxseUJsb2NrKCkpIHsKICAg
ICAgICAgcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCByZXR1cm5SZWdpc3Rlci5nZXQoKSk7CkBAIC0yOTY2LDI2ICsyOTcyLDk1IEBA
IHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVu
dGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVT
dGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0
ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBSZXR1cm5Ob2RlKiByZXR1cm5O
b2RlID0gMDsKKyAgICBzd2l0Y2ggKGdlbmVyYXRvci5wYXJzZU1vZGUoKSkgeworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVt
ZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAg
ICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAg
RXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVt
ZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHBy
ID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhw
ck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihleHByKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5l
eHQuZ2V0KCksIGZ1bmNFeHByKTsKKworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGlu
ZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7Cisg
ICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVP
YmplY3QuZ2V0KCkpOworICAgICAgICB9CiAKLSAgICAvLyBDaGVjayBmb3IgYSByZXR1cm4gc3Rh
dGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBvZiBhIHNpbmdsZSBibG9j
ay4KLSAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+aXNCbG9jaygp
KSB7Ci0gICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnRJbkJsb2NrID0gc3RhdGlj
X2Nhc3Q8QmxvY2tOb2RlKj4oc2luZ2xlU3RhdGVtZW50KS0+bGFzdFN0YXRlbWVudCgpOwotICAg
ICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlz
UmV0dXJuTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuTm9kZSA9IHN0YXRpY19jYXN0PFJldHVy
bk5vZGUqPihsYXN0U3RhdGVtZW50SW5CbG9jayk7Ci0gICAgfQorICAgICAgICAvLyBGSVhNRTog
Q3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciBy
ZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAgICAgLy8gQnV0
IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFz
cywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVh
ZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKworICAgICAgICBnZW5lcmF0b3IuZW1p
dERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lLCBuZXh0LmdldCgpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1
dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCks
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRp
YWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
LCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdl
bmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKIAotICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2Fs
bHkgaW5zZXJ0IG9uZS4KLSAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgUmVnaXN0ZXJJ
RCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1
cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJv
ZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAg
IEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFy
dE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0
dXJuKHIwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOiB7CisgICAgICAgIFJlZlB0
cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Ao
b3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9uLmdldCgp
LCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRo
cm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhnZW5lcmF0
b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAgICBlbWl0
U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7
CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAgICAgIFN0
YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwor
ICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBDaGVjayBm
b3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21wb3NlZCBv
ZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBzaW5nbGVT
dGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0
YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQp
LT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudEluQmxvY2sg
JiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVudEluQmxv
Y2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11
c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsK
KyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2Zp
bGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4
cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVz
ZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxp
bmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zm
c2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAK
QEAgLTMwMTMsMTEgKzMwODgsMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogUmVnaXN0
ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEg
c3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGltcGxlbWVu
dCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90
IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnQoKSkg
eworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVl
LmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBhcmd1bWVu
dCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERlbGVn
YXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBD
bGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA0MzllNjIw
MDM0YjdmY2RjODE1MDNhNTkxNmUxYjQ0N2Y2YzA2MmFiLi5hMjAyMGE0NGEwMjBkMjg0ZjU2OWI3
ZmQ2NzU1MDA3NDUzOTRlMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFy
c2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TmFOKGdyYXBoLmZyZWV6ZShqc051bWJlcihQTmFO
KSkpCiAgICAgICAgICwgbV9jb25zdGFudE9uZShncmFwaC5mcmVlemUoanNOdW1iZXIoMSkpKQog
ICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCi0g
ICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQor
ICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKICAg
ICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9udW1QYXNzZWRWYXJBcmdz
KDApCiAgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQpAQCAtMTQxMyw3ICsxNDEzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50
IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAKICAgICBlbnN1cmVMb2NhbHMoCiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgMSArCi0g
ICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIAogICAgIHNpemVfdCBhcmd1bWVudFBv
c2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCkBAIC0y
OTI3LDcgKzI5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAg
IAogICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0
byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9m
ZnNldCgpOwogICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKICAgICBy
ZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIApAQCAt
MzA5Niw3ICszMDk2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAg
ICAKICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3Bv
bmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSkub2Zmc2V0KCk7
CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2Fs
bGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJl
ck9mUGFyYW1ldGVyczsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxs
S2lsbHMuaAppbmRleCA1MWFjNTVkNGNhNWY5ZWQ0OThhYjg4OTdjOTZlZDI1OTMzM2Q2Mjg3Li5m
NWY0Y2I1MjM4MGVkYmIzYzlmODk3MTAzMjExMGEwODhjZmQxMjkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgZm9y
QWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBOb2RlKiBu
b2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVCZWZvcmUg
PSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYmVmb3JlLmJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQWZ0ZXIgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5l
c3MoYWZ0ZXIuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2
ZUxvY2FsLS07KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAgICAgICAg
IGlmIChsaXZlQmVmb3JlLmdldChyZWxhdGl2ZUxvY2FsKSAmJiAhbGl2ZUFmdGVyLmdldChyZWxh
dGl2ZUxvY2FsKSkKICAgICAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKHJlbGF0aXZlTG9jYWwpICsgc3RhY2tPZmZzZXQpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNDI4ODcwYjFjMmEyNTg3MTVjZDcxNTNiOGU3OTli
ZWFlOTJjNGU1Zi4uMTkxMWNmZWVkNjQxOTAzOTZjOGFlNjVmM2E3ZWM0OTc4YTc2NmZhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzM4LDcgKzczOCw3IEBAIGNsYXNz
IEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBmdWxsTGl2ZW5lc3MgPSBsaXZlbmVzc0Zv
cihjb2RlQmxvY2spOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3Mg
PSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOyBy
ZWxhdGl2ZUxvY2FsLS07KSB7CiAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9
IHN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwocmVsYXRpdmVMb2NhbCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVwb3J0IGlmIG91ciBj
YWxsZWUgYWxyZWFkeSByZXBvcnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKaW5kZXggZTZjNDIz
NWVjNGNhNjgxN2NkMzdlNjk5ODM0Nzg2MDg5ZjJiNmVmYS4uNWU1YTE1MDRjMjRkMDY0MDRmNzg2
YjE3MjJlMmY2MTUwZjhmYWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKQEAgLTkzLDggKzkz
LDggQEAgY2xhc3MgT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAvLyBXZSdkIHJlYWxseSBsaWtlIHRvIHVzZSBhbiB1bnNldCBvcmlnaW4sIGJ1dCBU
aHJlYWRlZENQUyB3b24ndCBhbGxvdyB0aGF0LgogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9
IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgZmFsc2UpOwogICAgICAg
ICAKLSAgICAgICAgVmVjdG9yPE5vZGUqPiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKTsKLSAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5t
X251bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+IGxv
Y2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOworICAgICAgICBmb3IgKGludCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CiAg
ICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5s
b2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7
CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxs
ZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVhZCA9IHRh
cmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghcHJl
dmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKaW5kZXggYmU4ZTJh
NzkxNDlmNWEyZTMxNDRhZDQ2NGEzNWM2NTRmYzU5OWUwYy4uNjM5MmYxNGE5ODA0Y2ZiNjkyZTg0
YmMzOTAxMjBkMGJhYjdkYmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCkBAIC0xMjMsOSArMTIzLDkgQEAgdm9pZCBW
YXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXM7CiAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICBu
dW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgVmlydHVhbFJlZ2lz
dGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpICsg
MTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxs
RnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZUxvY2FscyArIFZp
cnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRv
TG9jYWwoKSArIDE7CiAgICAgZWxzZQotICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgICAgIG51bVZhcmlhYmxlcyA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKICAgICAKICAgICAvLyBDcmF6eSBz
cGVjaWFsIGNhc2U6IGlmIHdlJ3JlIGF0IGluZGV4ID09IDAgdGhlbiB0aGlzIG11c3QgYmUgYW4g
YXJndW1lbnQgY2hlY2sKICAgICAvLyBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGFsbCB2YXJpYWJs
ZXMgYXJlIGFscmVhZHkgc2V0IHVwLiBUaGUgcmVjb3ZlcmllcyBzaG91bGQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcAppbmRleCAy
OWYwNWU1MWQ0NjFmZGY2ZTAxNDM4MzE5OWM5MThmNjQxNWU4Y2VhLi4zMDgwZGMzNDUwOWM3MzMz
MjRiODE0M2QyYTk1NGYwOGVkYWYxM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCkBAIC00NSw5ICs0NSw5IEBAIEZvck9T
UkVudHJ5SklUQ29kZSogRm9yT1NSRW50cnlKSVRDb2RlOjpmdGxGb3JPU1JFbnRyeSgpCiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgRm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFsaXplRW50
cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25lZCBudW1DYWxsZWVSZWdpc3RlcnMpCit2b2lkIEZvck9T
UkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5zaWduZWQgbnVt
Q2FsbGVlTG9jYWxzKQogewotICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9y
U2l6ZShudW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKKyAgICBt
X2VudHJ5QnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUobnVtQ2FsbGVlTG9jYWxzICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5o
CmluZGV4IDQ0YWY4Zjk1NzkxYWFhNzhlNmU4MWRmYTY0OWM4NmExNWVhMzQ0ODEuLjlhZTk3M2Y0
MGQxMmMxNmI4MDljMGM4Y2ExZTM2ZWJhYThlZTM2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaApAQCAtNDYsNyArNDYsNyBAQCBj
bGFzcyBGb3JPU1JFbnRyeUpJVENvZGUgOiBwdWJsaWMgRlRMOjpKSVRDb2RlIHsKICAgICBGb3JP
U1JFbnRyeUpJVENvZGUoKTsKICAgICB+Rm9yT1NSRW50cnlKSVRDb2RlKCk7CiAgICAgCi0gICAg
dm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBudW1DYWxsZWVSZWdpc3Rl
cnMpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWduZWQgbnVtQ2Fs
bGVlTG9jYWxzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBlbnRyeUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cnlCdWZmZXI7IH0KICAgICAKICAgICB2b2lkIHNldEJ5dGVjb2RlSW5kZXgodW5z
aWduZWQgdmFsdWUpIHsgbV9ieXRlY29kZUluZGV4ID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXggYWM3MTcxNGY5M2Y1NWFmMjYxOGM3ZTQy
MGE3MWI2NmRlMjExNzY2Ni4uNjAxYjQ2MDk0MDY0YWM2MTNhOThmYTljMjI5Mzg2ZmE2ZWFkZjA1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIH0KICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMo
KSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVl
TG9jYWxzKTsKICAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHN0YXRpY19jYXN0
PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAgICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZmZXIoKS0+ZGF0
YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3Rh
dGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggMDMw
N2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBlYi4uNTVkODI5YTJhNjZiNjI2MDkx
NTg0YTczZTExZGJhMDNjMjU2ZWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICAgICB9CiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1v
ZGU6IHsKICAgICAgICAgUmVmUHRyPEZvck9TUkVudHJ5SklUQ29kZT4gY29kZSA9IGFkb3B0UmVm
KG5ldyBGb3JPU1JFbnRyeUpJVENvZGUoKSk7Ci0gICAgICAgIGNvZGUtPmluaXRpYWxpemVFbnRy
eUJ1ZmZlcihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKTsKKyAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdyYXBoLm1fdm0s
IGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgICAgICBjb2Rl
LT5zZXRCeXRlY29kZUluZGV4KGdyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpOwog
ICAgICAgICBqaXRDb2RlID0gY29kZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2NTUxOWM1NzJl
YjYxZWViMzllMzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2MTU0ZTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw2ICsxNTUs
NyBAQAogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAg
ICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNv
bnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgICAgICBi
b29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgdm9p
ZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0
IHZvaWQqKTsKQEAgLTM4OCw3ICszODksNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCog
cCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiAg
ICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwogICAg
ICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1iZXIocCk7CkBAIC0zOTksNyAr
NDAwLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdG9tTnVt
YmVyID49IG1fZW5kQXRvbSkgLy8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFsaWQgY2VsbHMg
b3V0IG9mIHRoZSByYW5nZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNl
bGwoY29uc3Qgdm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICghaXNBdG9tKHApKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNv
bnN0IEpTQ2VsbCo+KHApKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM1NDc1MWNkNzIwZmZmYzExZTE1ZDM1
MjU2YjA2Mzc1YzBiNmU4YWMuLjY0ZTc0Y2Y2NTBiMDBkNDg1YTgzMWNkNTIzNzFlYzQyZGQ0ZGRl
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMTUzLDcgKzE1MywxNiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJh
bWUoKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2Rl
QmxvY2soKTsKICAgICBKU1Njb3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJhbWUtPnVu
Y2hlY2tlZFIoY2FsbGVyQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpLlJlZ2lz
dGVyOjpzY29wZSgpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2Nr
LT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCks
IHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgIFVubGlua2VkQ29kZUJsb2Nr
KiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKTsKKworICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNo
ZWNrSWZOZWVkZWQ7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgIHRoaXNURFpNb2Rl
ID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVC
bG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlICYmIGNh
bGxlclVubGlua2VkQ29kZUJsb2NrLT5nZW5lcmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRo
aXNNb2RlOjpFbXB0eSkKKyAgICAgICAgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6QWx3YXlz
Q2hlY2s7CisKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUobWFrZVNvdXJjZShwcm9ncmFtU291
cmNlKSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxD
b2RlQ2FjaGUoKS50cnlHZXQoY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgc291cmNl
Q29kZSwgdGhpc1REWk1vZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgaWYgKCFldmFsKSB7
CiAgICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewpAQCAtMTcx
LDggKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAg
Ly8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93
biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24o
KSk7CiAKLSAgICAgICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBjYWxsZXJDb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCA/IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjayA6IFRoaXNURFpNb2RlOjpDaGVj
a0lmTmVlZGVkOwotICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hl
KCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hh
aW4pOworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0
U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSwgdGhpc1REWk1vZGUsIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogICAg
ICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CkBAIC00MTAsNyArNDE4LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAgICAgZGF0YUxvZ0YoIi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4iKTsKIAotICAgIGVuZCA9IGl0IC0gY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIGNvZGVCbG9jay0+bV9udW1WYXJzOworICAgIGVuZCA9IGl0IC0gY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscyArIGNvZGVCbG9jay0+bV9udW1WYXJzOwogICAgIGlmIChpdCAhPSBlbmQp
IHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gKCppdCkuanNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDJkNmYwMmMyYjFmODkwN2YzZGZhN2Y4
OTQwM2FlMDg2MzBkMzFhMmEuLmFiMDVlODA3ZjYxOTcyNzQyMWIxMDhlMzk3ZjVhODMzZTFmYjQ3
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNSw2ICsyMTUsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
cmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERF
RklORV9PUChvcF9hc3NlcnQpCisgICAgICAgIERFRklORV9PUChvcF9zYXZlKQorICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0y
NjEsNiArMjYzLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQorICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJvd19mdW5jX2V4
cCkgCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X3JlZ2V4cCkKQEAgLTc2NCw5ICs3NjgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVFeGNlcHRpb25IYW5kbGVycygpCiAKIHVuc2lnbmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNvdW50
Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykgPT0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkpOworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykgPT0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKSkpOwogCi0gICAgcmV0dXJuIHJv
dW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0
ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJP
ZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscyArIG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiBpbnQgSklUOjpzdGFja1BvaW50ZXJPZmZzZXRG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2ODUw
ZjdhYTUxZTE4ODhlMmU0ODM5YmUxNDVlZmQyNDRmZDg4MzQ2Li4yYjQ2ZTgyNTVkYmQ2M2MyYmQ2
NzU5NmM2YjAyNTEzYzVjNDRmZTY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5NCw2
ICs0OTQsOCBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU0Miw2ICs1NDQsOCBAQAogICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5X2J1ZmZlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
YXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19v
YmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTY2MSw2ICs2NjUsNyBAQAogICAgICAgICB2b2lkIGVtaXRSaWdodFNo
aWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBlbWl0Umln
aHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1v
bihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKTsKICAgICAgICAgdm9pZCBlbWl0UmVzb2x2ZUNsb3N1cmUoaW50
IGRzdCwgaW50IHNjb3BlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBk
ZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBmNjBh
ZTU3YWZkZTM4ZGU2MTZiNmE4OWI4MjZlZjg0OTE1MzRhM2Y1Li4xZjMxMTVhNTljYzk0NjYwYTFj
M2ZlOGRhOTg0NzIwNTUzYzIwYjZkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhw
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdSZWdleHAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1fY29kZUJs
b2NrLT5yZWdleHAoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKQEAgLTk3OCwxNCArOTc4LDI2IEBAIHZvaWQgSklUOjplbWl0X29w
X25ld19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRQ
YXlsb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICNlbmRpZgog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMgPSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKworICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVu
Y0V4ZWMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dl
bmVyYXRvcl9mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIH0KIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAg
IGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9Ci0gICAgCisKK3ZvaWQg
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9
CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKQEAgLTEwMTgsMTEg
KzEwMzAsMjcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogI2Vsc2UgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyb3dGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24sIHJlZ1QzLCByZWdUMik7
CiAjZW5kaWYKLSAgICBlbHNlCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG9w
Y29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICB9CiAgICAgZG9uZS5s
aW5rKHRoaXMpOwogfQotICAgIAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21t
b24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVt
aXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfYXJyb3dfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKQEAg
LTE0MzQsNiArMTQ2MiwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCit2b2lkIEpJVDo6ZW1p
dF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9zYXZlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9v
cF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3Jlc3VtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZDg3M2ExZGRkNjU3YTI4OTY4YTBlNTFmOTA2MzZkMWRl
MmZjZjgxNi4uY2FkOTM0NjljMWJjYmQyYjU3ZGNiNTIwMjNhYmU5ZjcyM2Y3NDQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00NSw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKQEAgLTk4NywyMyArOTg4LDQyIEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUo
RXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJh
eVdpdGhTaXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBzaXplVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBib29s
IGlzSW52YWxpZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJp
dHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUpKTsKKyAgICBpZiAo
aXNJbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5
cGU6OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShGdW5jdGlvblR5cGU6OmNyZWF0ZSh2bSwgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgc2NvcGUp
KTsKK30KKworZXh0ZXJuICJDIiB7CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxs
KiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
Q29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNl
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCiB7Ci0gICAgQVNTRVJU
KGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkp
KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7Cisg
ICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVy
biBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVj
dXRhYmxlLCB0cnVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgc3RhdGljIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlk
YXRlZCkKK0VuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29t
bW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNJbnZhbGlkYXRlZCkKIHsK
ICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFi
bGU6OmluZm8oKSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSk7CkBAIC0xMDE5
LDEyICsxMDM5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlCiAgICAgCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25XaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7
Ci0gICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhp
c1ZhbHVlLCB0cnVlKTsKIH0KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyb3dGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewot
ICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIGZhbHNlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3
QXJyb3dGdW5jdGlvbkNvbW1vbihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlz
VmFsdWUsIGZhbHNlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5NjM4ZjE0NWM5ZDU1NzVmMWM5NTJl
Mjc1ZjU5NGE3NmIzMmE0Yjg4Li4yNTQyNTUwMjI5ZGE0MWUxYWRkNDZiMGIwMjU4ZThlNDk5NWI5
YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzAx
LDYgKzMwMSw4IEBACiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUq
LCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9J
TlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKaW5kZXggYTZjM2QyN2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMy4uZjU5
MThiNzIxNzBhYzVkZTQ3YzJiZWQzNjM3OTY1MzBlMDE5NTQwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTEzNCw5ICsxMzQsOSBA
QCB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIAogdW5z
aWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVycykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNh
bGxlZUxvY2FscykgPT0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzKSkpOwogCi0gICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2lu
dGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKKyAgICByZXR1cm4gcm91bmRMb2NhbFJlZ2lz
dGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQoY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cyArIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsSW5SZWdpc3RlcnMpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc2NWYxOTc5NTBlMzIzZjA1NjZlNzJjNzNiNGVlZDYz
ZTNiMjA4YzUuLjM1MWE0YzhkNDQyZjJkNmM2OGM0YTkyYzMyZjE2ZWM2MDJkYTgyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0yMjQs
OSArMjI1LDkgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOwogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpOwotICAgIGRh
dGFMb2dGKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVt
VmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LCBj
YWxsZXIgPSAlcC5cbiIsCisgICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9u
ICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVt
Q2FsbGVlTG9jYWxzID0gJXUsIGNhbGxlciA9ICVwLlxuIiwKICAgICAgICAgICAgIGNvZGVCbG9j
aywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAotICAgICAgICAgICAgY29kZUJs
b2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzLAorICAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLAog
ICAgICAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CiB9CiAKQEAgLTQ1OCw3ICs0NTksNyBA
QCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5z
dHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZ0YoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4
ZWMpOwogICAgIGRhdGFMb2dGKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygp
KTsKLSAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgZGF0YUxvZ0YoIk51bSBjYWxs
ZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVMb2Nh
bHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbnVtVmFycyk7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTA0MSw2ICsxMDQyLDE4IEBAIGlu
bGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IEpTVmFsdWUgc3Vic2NyaXB0KQogICAgIExMSU5UX1JFVFVSTihKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9
CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25D
b2RlIHx8ICFjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlvbigpIHx8IGV4ZWMtPmhhc0FjdGl2YXRp
b24oKSk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3Bl
cmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAg
ICBkYXRhTG9nRigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JF
VFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTEwNTIs
NiArMTA2NSwxNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5k
KS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworCisgICAgTExJTlRf
UkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUp
KTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4
cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAppbmRleCBlMjQ0ODI5ZmRkMWUyZjE1MDZhMzVkMTBhNGViODFmY2Jl
MzJjNTMxLi4yNzEzMjRiMTg0NTNkNzJkYzhiNzYxODBiYTAzMDRhYjQ1NjU5NTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtOTksNiArOTks
OCBAQAogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5n
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fycm93X2Z1bmNf
ZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
NWFkNWIzZmNkNzM5ZDU2Mzk0OTBjZGFjYWZlY2E2YzE0NzViOTQyOS4uNTY3Y2I1OGMxMjU2OTdi
Y2RlNjE3ZWNlYzBjOGIwNzg2OTVlOTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG1h
Y3JvIHZtRW50cnlSZWNvcmQoZW50cnlGcmFtZVBvaW50ZXIsIHJlc3VsdFJlZykKIGVuZAogCiBt
YWNybyBnZXRGcmFtZVJlZ2lzdGVyU2l6ZUZvckNvZGVCbG9jayhjb2RlQmxvY2ssIHNpemUpCi0g
ICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1tjb2RlQmxvY2tdLCBzaXpl
CisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1tjb2RlQmxvY2tdLCBzaXpl
CiAgICAgbHNoaWZ0cCAzLCBzaXplCiAgICAgYWRkcCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCwgc2l6ZQogZW5kCkBAIC0xMjI3LDYgKzEyMjcsMTIgQEAgX2xsaW50X29wX25ld19mdW5j
OgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X2dlbmVyYXRvcl9mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJh
eToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbmV3X2FycmF5KQpAQCAtMTQ1OCw2ICsxNDY0LDExIEBAIF9sbGludF9vcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogICAg
IGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisKIF9sbGludF9vcF9uZXdfYXJyb3df
ZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19hcnJvd19mdW5jX2V4cCkKQEAgLTE1NzMsNiArMTU4NCwxOCBAQCBfbGxp
bnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3NhdmU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzdW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCisgICAgZGlzcGF0Y2goMykKKwor
CiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjZTk4
NWNhNDVkZTk5ZThkYTVhNTdmOGI5M2EzMDY0Y2E2ZjFkMzI0Li5hOTBkYzFjMWNjMjc5NmRkMTA0
YmY3MWUzZTk3MDkzY2U5MjcyZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtMzQxLDkgKzM0MSwxMSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgbnVs
bHB0ciwgLyogZGVsZWdhdGUgKi8gZmFsc2UpOwogICAgIH0KIAotICAgIFlpZWxkRXhwck5vZGUq
IGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSkKKyAgICBZaWVsZEV4cHJOb2RlKiBjcmVhdGVZ
aWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJn
dW1lbnQsIGJvb2wgZGVsZWdhdGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlv
biwgYXJndW1lbnQsIGRlbGVnYXRlKTsKKyAgICAgICAgWWllbGRFeHByTm9kZSogbm9kZSA9IG5l
dyAobV9wYXJzZXJBcmVuYSkgWWllbGRFeHByTm9kZShsb2NhdGlvbiwgYXJndW1lbnQsIGRlbGVn
YXRlKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBl
bmQpOworICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2RlKiBj
cmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhw
cmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLApAQCAtMzY0LDEyICszNjYsMTIgQEAgY2xhc3MgQVNU
QnVpbGRlciB7CiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpblN0cmljdENvbnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1f
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5k
Q29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29u
c3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQs
IGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKQEAg
LTg5MSw2ICs4OTMsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICB7CiAgICAgICAgIG5vZGUt
PnNldFN0YXJ0T2Zmc2V0KG9mZnNldCk7CiAgICAgfQorCisKKyAgICB2b2lkIHByb3BhZ2F0ZUFy
Z3VtZW50c1VzZSgpIHsgdXNlc0FyZ3VtZW50cygpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0
cnVjdCBTY29wZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGVh
Mzc2MzkzYjY0NjdiNWFkNjNlNjMyYzlmNmQzZDkzOTMzOGNlNTAuLjViNmRjNDkzODVkYTc4MzU4
YzI3OWJjMDgwMGJmODlhMGE2NTc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFy
aWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYKICAgICBQ
YXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24s
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9z
dGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4p
CkBAIC0xNjIsMTAgKzE2MiwxMSBAQCB2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJs
ZXMoVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVgogICAgICAgICAs
IG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCiAgICAgICAgICwgbV9wYXJzZU1vZGUo
bW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQor
ICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRp
bmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5j
dGlvbikKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKQogeworICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJUKG1fY29uc3Ry
dWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVjYTM0NjY0ZmRmMTY0YWEz
OWUxZjYxNGQzZWViZDBkZTA1MTg5ZWEuLjhlOWEyNTJlYWQxZmVlOTE1OWZhZmUxNTNiN2M3OTYx
ZDg3YTJjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTcsNyAr
MTgxNyw3IEBACiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5n
KGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAg
ICAgICAgCkBAIC0xODQyLDggKzE4NDIsOCBAQAogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wg
aXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9
CisgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGlu
ZSwgdW5zaWduZWQgbGFzdExpbmUsIGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNl
dCkKQEAgLTE4NjksOCArMTg2OSw4IEBACiAgICAgICAgIGludCBtX2xhc3RMaW5lOwogICAgICAg
ICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0
cmljdENvbnRleHQgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAg
ICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKLSAgICAgICAgdW5zaWduZWQg
bV9pc0Fycm93RnVuY3Rpb24gOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uIDogMTsKICAgICB9OwogCkBAIC0xOTMyLDcgKzE5MzIsNyBAQAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCi0gICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFlpZWxkRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBhZjJjNWEzNTMzYzZiODY3NjJjNDIy
YTZmZDdhNmFlOTUyNjM0NzMuLmU4MjJjODEyNWViMGU2Y2I5ZWNmM2NlMzBlNDcyNWJmNjdmZmQ2
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE5NCw3ICsx
OTQsNyBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIFBhcnNlcjxMZXhlclR5cGU+
OjpQYXJzZXIoCiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCAKKyAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgVGhp
c1REWk1vZGUgdGhpc1REWk1vZGUpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNv
dXJjZSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxw
dHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluKGJ1
aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCisgICAgLCBtX3N1cGVy
QmluZGluZyhzdXBlckJpbmRpbmcpCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQoZGVm
YXVsdENvbnN0cnVjdG9yS2luZCkKICAgICAsIG1fdGhpc1REWk1vZGUodGhpc1REWk1vZGUpCiB7
CkBAIC0yNDksNyArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsK
ICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAg
ICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwog
ICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgJiYg
IWhhc0Vycm9yKCkpIHsKQEAgLTI3Myw4ICsyNzcsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVt
ZW50cyhjb250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VN
b2RlKSkKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVt
ZW50cyhjb250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RN
b2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgICAgIHNvdXJj
ZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3Ry
aWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZhbGlkRW5kaW5nOwpAQCAt
MzAxLDcgKzMwOSwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9u
cyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBj
YXB0dXJlZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFyYXRpb25zLm1hcmtWYXJpYWJsZUFz
Q2FwdHVyZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVz
OworICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAg
ICAgICAgaWYgKHVzZWRWYXJpYWJsZXMuY29udGFpbnMobV92bS0+cHJvcGVydHlOYW1lcy0+YXJn
dW1lbnRzLmltcGwoKSkpCisgICAgICAgICAgICBjb250ZXh0LnByb3BhZ2F0ZUFyZ3VtZW50c1Vz
ZSgpOworICAgIH0KKwogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVy
ZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0g
U3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0zMTEsMTAgKzMyNiw5IEBACiAgICAgICAgIGZlYXR1cmVz
IHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRBcmd1bWVudHMp
CiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkQXJndW1lbnRzRmVhdHVyZTsKKwogICAgIFZl
Y3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CiAgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW4pIHsKLSAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVz
OwotICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZCBpZiB3ZSB3YW50IHRvIGFsbG93
IGJ1aWx0aW5zIHRvIHVzZSBsZXhpY2FsIGRlY2xhcmF0aW9ucy4KICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKICAgICAgICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgdmFyaWFibGUuZ2V0KCkp
OwpAQCAtNDU4LDYgKzQ3Miw0NSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCit7CisgICAgYXV0byBzb3Vy
Y2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKworICAgIHVuc2ln
bmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24g
c3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CisgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0ID0gbV90b2tlbi5tX2xv
Y2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CisKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+IGluZm87CisgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCk7CisgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKKyAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKKworICAgIHsKKyAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yTW9kZSk7CisgICAgICAgIFN5bnRheENoZWNrZXIgZ2VuZXJhdG9y
RnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Cisg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25D
b250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOwor
ICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JCb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOworICAgIH0KKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVt
biwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBt
X3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JNb2RlLCBmYWxzZSk7CisKKyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAg
ICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlT
dGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0
YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5j
dGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRl
eHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0
dXJuIHNvdXJjZUVsZW1lbnRzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJ
ZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkK
IHsKICAgICAvLyBUaGUgZ3JhbW1hciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNjAwLDE1ICsx
NjUzLDE0IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBl
LCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7
CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExv
Y2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJv
d0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3Ry
dWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYyMCw3
ICsxNjcyLDcgQEAKICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0
aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAg
dW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNv
dW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3Rh
dGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKQEAgLTE2MzYsNiArMTY4OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiAibWV0aG9kIjsK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKICAgICAgICAgcmV0dXJu
ICJnZW5lcmF0b3IiOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlv
bk1vZGU6CisgICAgICAgIHJldHVybiAiZ2VuZXJhdG9yIGZ1bmN0aW9uIjsKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cg
ZnVuY3Rpb24iOwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKQEAgLTE3
MTQsNiArMTc2OCwzNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9y
bWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOworICAg
IGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKworICAgIC8v
IEBnZW5lcmF0b3JTdGF0ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUg
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKKworICAgIC8vIEBnZW5l
cmF0b3JWYWx1ZQorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOworICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKKworICAgIC8vIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlCisgICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1v
ZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisK
KyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1l
bnRzIHJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1
bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKQEAgLTE4MjQsMTIgKzE5MDksMTAgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAg
ICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tl
bi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uID0gbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
OwotICAgICAgICAKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
ZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAg
ICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQs
IGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24sICBmdW5j
dGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAg
ICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJC
aW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlw
ZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwog
ICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKQEAgLTE4NDMsNyArMTkyNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIG1fbGV4ZXIt
PnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CiAKLSAgICAg
ICAgaWYgKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkKICAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBj
YWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CkBAIC0xODY1
LDE0ICsxOTQ4LDMzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gbGFz
dEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0ZSgpOwot
ICAgIAotICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwg
c3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9k
eVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CisKKyAgICBhdXRvIHBl
cmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICB9OworCisgICAgaWYgKG1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgIGdl
bmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdG
dW5jdGlvbkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ug
c3RyaWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3Vs
ZCBiZSBzdHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmlj
dE1vZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKwor
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RT
dXBlcigpLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0
b3IiKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmco
KSkKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9
PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBt
ZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9y
Qm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9k
eSgpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2Uo
ZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0
aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlv
blNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8
fCBtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBt
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSB8fCBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVuY3Rpb25JbmZvLm5hbWUs
ICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rp
b24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92
bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rp
b25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBz
dHJpY3QgbW9kZSIpOwogICAgIH0KQEAgLTE5NDAsNyArMjA0Miw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25N
b2RlOwogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKICAgICBpZiAoY29uc3VtZShUSU1FUykp
Ci0gICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAg
ICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGU7
CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5m
bywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0
aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5j
dGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIwOTEsNyArMjE5Myw3IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKSB7CiAgICAg
ICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAgICAgICAgICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckZ1bmN0aW9uTW9kZTsKICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdwcm90b3R5
cGUnIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9y
IG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgICAgIH0KQEAgLTI3NDIsNyArMjg0NCw3
IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIgY2xh
c3NpZmllcih0aGlzKTsKIAogI2lmIEVOQUJMRShFUzZfR0VORVJBVE9SUykKLSAgICBpZiAobWF0
Y2goWUlFTEQpKQorICAgIGlmIChtYXRjaChZSUVMRCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5U
KGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRvcigpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlWWll
bGRFeHByZXNzaW9uKGNvbnRleHQpOwogI2VuZGlmCiAKQEAgLTI4NDcsNiArMjk0OSw3IEBAIHN0
cnVjdCBMYWJlbEluZm8gewogICAgIGZhaWxJZlRydWUobV9mdW5jdGlvblBhcnNlUGhhc2UgPT0g
RnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5T
dGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxEKSk7CiAgICAgU2F2ZVBvaW50
IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIG5leHQoKTsKQEAgLTI4NTQsMTMg
KzI5NTcsMTQgQEAgc3RydWN0IExhYmVsSW5mbyB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVlpZWxkKGxvY2F0aW9uKTsKIAogICAgIGJvb2wgZGVsZWdhdGUgPSBjb25zdW1lKFRJTUVT
KTsKKyAgICBKU1RleHRQb3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgIGlmICghYXJndW1lbnQpIHsKICAgICAgICAgcmVzdG9yZVNhdmVQ
b2ludChzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
WWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFydCwgYXJn
dW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CkBAIC0zMDUyLDcgKzMxNTYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKICAgICBKU1Rva2VuTG9jYXRpb24g
bWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFy
dCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1l
dGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzR2VuZXJhdG9yID8g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOwogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2Qi
KTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CkBAIC0zMzA1
LDcgKzM0MDksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2Vu
VHlwZSB0b2tlbikKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VN
b2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAg
IGlmIChjb25zdW1lKFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JNb2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckZ1bmN0aW9uTW9kZTsKICNlbmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0
aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHBy
ZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE3YjBlODFhZWExZDg5YzRmZWM5
NDQ3NTdjN2Y0OTVlYzUwNDc3M2UuLjcyNTlhNWQ0NzU1NmY0MDUzYTQwYWEzZWMzNDM1OWU5Njc5
MzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3
Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkK
ICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFs
aWRTdHJpY3RNb2RlKHRydWUpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAg
ICAgICwgbV9sb29wRGVwdGgoMCkKICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpA
QCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxT
Y29wZShyaHMubV9pc0xleGljYWxTY29wZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFy
eShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9k
ZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMu
bV9oYXNBcmd1bWVudHMpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQog
ICAgICAgICAsIG1fc3dpdGNoRGVwdGgocmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9t
b2R1bGVTY29wZURhdGEocmhzLm1fbW9kdWxlU2NvcGVEYXRhKQpAQCAtMjQ2LDYgKzI0OCwxMCBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5j
dGlvbk1vZGU6CisgICAgICAgICAgICBzZXRJc0dlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CkBAIC0yNjgsNiArMjc0LDggQEAg
c3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdW5jdGlvbkJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNHZW5lcmF0b3I7IH0KIAorICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KKwogICAgIHZvaWQgc2V0SXNMZXhpY2FsU2Nv
cGUoKSAKICAgICB7IAogICAgICAgICBtX2lzTGV4aWNhbFNjb3BlID0gdHJ1ZTsKQEAgLTQ1MCwx
NiArNDU4LDIwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1
ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQg
PSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChJ
ZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV91c2VkVmFyaWFibGVz
LmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5lc3Rl
ZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpIHx8IG5lc3RlZFNjb3Bl
LT5tX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICBmb3IgKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGltcGwgOiBuZXN0ZWRTY29wZS0+bV91c2Vk
VmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVk
VmFyaWFibGVzLmNvbnRhaW5zKGltcGwpIHx8IG5lc3RlZFNjb3BlLT5tX2xleGljYWxWYXJpYWJs
ZXMuY29udGFpbnMoaW1wbCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHNob3VsZCBiZSByZXNvbHZlZCBh
dCBmdW5jdGlvbiBib3VkYXJ5LgorICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNG
dW5jdGlvbkJvdW5kYXJ5KCkgJiYgbmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZCgqcHRy
KTsKKworICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW1wbCk7CiAgICAgICAg
ICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhIGRlY2xhcmVkIHZhcmlhYmxlIHRoYXQgaXMgdXNl
ZCBpbiBhbiBpbm5lciBzY29wZSB0byBiZSB0aG91Z2h0IG9mIGFzIGNhcHR1cmVkIGlmCiAgICAg
ICAgICAgICAgICAgLy8gdGhhdCBpbm5lciBzY29wZSBpcyBib3RoIGEgbGV4aWNhbCBzY29wZSBh
bmQgbm90IGEgZnVuY3Rpb24uIE9ubHkgaW5uZXIgZnVuY3Rpb25zIGFuZCAiY2F0Y2giIAogICAg
ICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgY2FuIGNhdXNlIHZhcmlhYmxlcyB0byBiZSBjYXB0
dXJlZC4KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMgJiYg
KG5lc3RlZFNjb3BlLT5tX2lzRnVuY3Rpb25Cb3VuZGFyeSB8fCAhbmVzdGVkU2NvcGUtPm1faXNM
ZXhpY2FsU2NvcGUpKQotICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlk
YXRlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVDYW5k
aWRhdGVzLmFkZChpbXBsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQ
cm9wYWdhdGUgY2xvc2VkIHZhcmlhYmxlIGNhbmRpZGF0ZXMgZG93bndhcmRzIHdpdGhpbiB0aGUg
c2FtZSBmdW5jdGlvbi4KQEAgLTU1MCwxNCArNTYyLDIyIEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ewogICAgICAgICBtX2lzRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICBtX2lzRnVuY3Rpb25Cb3Vu
ZGFyeSA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgc2V0
SXNMZXhpY2FsU2NvcGUoKTsKICAgICAgICAgbV9pc0dlbmVyYXRvciA9IGZhbHNlOwogICAgIH0K
IAorICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCisgICAgeworICAgICAgICBzZXRJ
c0Z1bmN0aW9uKCk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSB0cnVlOworICAgIH0KKwogICAg
IHZvaWQgc2V0SXNHZW5lcmF0b3IoKQogICAgIHsKICAgICAgICAgc2V0SXNGdW5jdGlvbigpOwog
ICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBm
YWxzZTsKICAgICB9CiAKICAgICB2b2lkIHNldElzTW9kdWxlKCkKQEAgLTU3OSw2ICs1OTksNyBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAgYm9v
bCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2Rl
IDogMTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKICAgICBpbnQgbV9sb29wRGVwdGg7
CiAgICAgaW50IG1fc3dpdGNoRGVwdGg7CiAKQEAgLTYyNyw3ICs2NDgsNyBAQCBjbGFzcyBQYXJz
ZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNl
TW9kZSwKKyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwog
ICAgIH5QYXJzZXIoKTsKIApAQCAtMTE1MCw2ICsxMTcxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50
cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJz
ZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVt
ZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciom
IGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVl
QnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3Rp
dmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0
ZWQsIE5vdEV4cG9ydGVkIH07CkBAIC0xMTkwLDcgKzEyMTIsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVy
dHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBib29sIGlzR2VuZXJhdG9yKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRl
clNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVu
c2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQp
OwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVu
Y3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlU
eXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9k
eShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9u
TGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlh
YmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVE
ZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5p
dGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5p
dFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4
dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90
SGF2ZUluaXRpYWxpemVyKTsKQEAgLTEyMTUsNiArMTIzNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1
bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJz
ZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJl
ZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWls
ZGVyPiYpOwogCkBAIC0xMzQwLDYgKzEzNjMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVu
dHMqIG1fc291cmNlRWxlbWVudHM7CiAgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOworICAgIFN1
cGVyQmluZGluZyBtX3N1cGVyQmluZGluZzsKICAgICBDb25zdHJ1Y3RvcktpbmQgbV9kZWZhdWx0
Q29uc3RydWN0b3JLaW5kOwogICAgIFRoaXNURFpNb2RlIG1fdGhpc1REWk1vZGU7CiAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKQEAgLTE0NjMsNyArMTQ4Nyw3IEBA
IGNsYXNzIFBhcnNlciB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAg
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKLSAgICBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwKKyAgICBKU1BhcnNl
clN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0
aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKICAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKICAg
ICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQpA
QCAtMTQ3Miw3ICsxNDk2LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIEFTU0VSVCghc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xNDg1LDcgKzE1
MDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8
VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNl
TW9kZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgIFBhcnNlcjxM
ZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
cGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpN
b2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBh
cnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9
IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNDk1ODVjYmM2MmI0YzMzZWZkZjdjNDllYTI5
YmQ3MTU1MjhiZTg4NS4uYzA4OGM5NjdlM2FkYzM0ZDhjOTgxM2Y1NjkyOTIxYTBjMDI5Y2IzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtNDcsNiAr
NDcsNyBAQAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9u
TW9kZSwKICAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckZ1bmN0aW9uTW9kZSwKICAg
ICBHZXR0ZXJNb2RlLAogICAgIFNldHRlck1vZGUsCiAgICAgTWV0aG9kTW9kZSwKQEAgLTYxLDYg
KzYyLDcgQEAgaW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKQogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25N
b2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOgpAQCAtODUsNiArODcsNyBAQCBpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5v
cm1hbEZ1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpA
QCAtMTA0LDYgKzEwNyw3IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZToKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yRnVuY3Rpb25Nb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDQ5
YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCArMSw5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFNvdXJjZUNvZGVLZXlfaAorI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlS2V5
IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBG
dW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAgIHsK
KyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERaTW9k
ZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6IG1f
c291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAs
IG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUp
KQorICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7CisgICAg
fQorCisgICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsK
KyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBU
byBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBl
Y3RlZCB0aGF0IHNvdXJjZQorICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRv
IG1ha2UgdGhpcyBlZmZpY2llbnQuCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYXNo
ID09IG90aGVyLm1faGFzaAorICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3Ro
KCkKKyAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAg
JiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3Ro
ZXIuc3RyaW5nKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VD
b2RlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1bnNp
Z25lZCBtX2hhc2g7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhh
c2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNv
bnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1
Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291cmNl
Q29kZUtleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9u
ID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtl
eSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQorfTsK
KworfQorCisjZW5kaWYgLy8gU291cmNlQ29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDU0N2U0NGZjOWViZjkxZDY1YWQyNjQ5MzM2
NGRiMzI1MGY3YzMwNmYuLjJjNzcyODUyN2U5NDNjZDY4MmE1MTVlOWI0M2QyZjUwZGIyYjhkNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0x
ODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
VHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHBy
ZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJl
dHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQg
Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0
dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQg
c2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVu
dHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4OSw2ICszODksOCBAQCBjbGFz
cyBTeW50YXhDaGVja2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQog
ICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9wYWdh
dGVBcmd1bWVudHNVc2UoKSB7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlFeHBy
OwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdj
YmVkZjBlLi40OTQ1MjBkYmRmNDI4Yzg2NDBkYjVlMjIzZjAwZTIxZjJmZWNmZmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2Nr
KFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAg
ICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9y
LCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlz
VERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBy
b2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNv
dXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBl
cnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4OCw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhl
Y3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9u
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1
Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVz
IHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJp
YWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFk
YXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFi
aWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBlbXB0eVRE
WlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0s
IGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAg
ICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDQ4YzhjZmVmODQ2NDlkOGYwOWMyZmIwYjk0ODgxMTFl
MTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1MzNiMWZkYTNkYWE4OTVkMDZjZGM4OTU3MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlBhcnNlck1v
ZGVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVLZXku
aCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01Niw3MSArNTcsNiBAQAogY2xhc3Mg
U291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCi1jbGFzcyBTb3VyY2VDb2RlS2V5
IHsKLXB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBG
dW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKLQotICAgIFNvdXJjZUNvZGVLZXkoKQotICAgIHsK
LSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBU
aGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQotICAg
ICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQot
ICAgICAgICAsIG1fZmxhZ3MoCi0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVUeXBlKSA8PCAzKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0
aW5Nb2RlKSA8PCAyKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmlj
dE1vZGUpIDw8IDEpCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlzVERa
TW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCi0g
ICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQotCi0gICAgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQotCi0gICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KLQotICAg
IC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdz
IGV4cGVjdGVkIHRoYXQgc291cmNlCi0gICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmlu
Z3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KLSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2hhc2ggPT0gb3RoZXIubV9oYXNoCi0gICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhlci5s
ZW5ndGgoKQotICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCi0gICAgICAg
ICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCi0gICAgICAgICAgICAmJiBzdHJpbmcoKSA9
PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlQ29kZSBtX3Nv
dXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICB1bnNpZ25lZCBtX2ZsYWdzOwotICAg
IHVuc2lnbmVkIG1faGFzaDsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYg
YSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07Ci0K
LXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxT
b3VyY2VDb2RlS2V5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVu
Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3VyY2VD
b2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgpOyB9
Ci19OwotCiBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKICAgICBTb3VyY2VDb2RlVmFsdWUoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCmluZGV4IDQ5NWYyMzU4Nzg2NjVjNDMwNTc4ODFkOGQxYmQ4NDg0MjZhOTliZGEuLjQ3
M2Q1YTQxY2JmNzE5Mzc5Njc3ZmFlMjQ0NTkyNTVjNzgwYjFiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiArMzks
NyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFj
cm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1hY3Jv
KEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAgLTMz
MCw2ICszMzEsMTMgQEAKICAgICBtYWNybyhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0
MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVyYXRv
cikgXAorICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JTdGF0
ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yVmFs
dWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yUmVz
dW1lTW9kZSkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNDkwNjM2ZjIwNGM5ZjY0YzRj
ZmM4OGUwZTk3Yzc2ZjczNTU1MGZlZS4uOWI4ZjA3NDIzMDM5MjIzYThlNDBmYmVhOTQ3MTg3Zjlm
YTJhZjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
QEAgLTY0NCw2ICs2NDUsMzggQEAgc3RhdGljIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0Rh
dGEqIHNldHVwQXJpdHlDaGVja0RhdGEoVk0mIHZtLCBpbnQgc2xvdHNUb0EKICAgICBFTkQoKTsK
IH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCit7CisgICAgLy8gT25seSBzYXZl
IHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBh
cmUgaW5jbHVkZWQgaW4gdGhlbS4KKyAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1
ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZh
bHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgorICAgIEJF
R0lOKCk7CisgICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2Vu
ZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJh
dG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSk7CisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8
R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBP
bmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdl
bmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlv
bnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NDUKKyAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCks
ICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOworICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7
CisgICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVy
YXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKKyAgICB9CisgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIGZyYW1l
LT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3Jlc3VtZSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgZ2VuZXJhdG9y
ID0gT1AoMSkuanNWYWx1ZSgpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxH
ZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgZnJhbWUtPnJlc3VtZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KSk7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyMjYxODVjNGM3
ZWE3Y2M2ZmM3ZjNjYzRmMWYzN2U2MGViNzJmMTdhLi5mMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUx
NjhlZTg4ZjU3ZGY3MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjkwLDYgKzI5MCw4IEBAIGlubGluZSB2b2lkIGRlY29kZVJl
c3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zYXZlKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1l
bnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggYTYzMmM0OGUwMzBi
NDFiMzNiMzNkYmExNmEzMWNmNjEzNWI0ZjUwZi4uMDJmMzk1YzQyYmMxMmVlMDIxODM0YTgyZjgx
ZjBmYzk3OWJjZGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwK
LSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvcik7CiB9CiAKIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2Rl
ID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwg
ZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsK
ICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODM2NTI5
MmQ1N2JjOWRlYzAzZTU2NDE3ZDdhNDBkMzIwZWM3Y2E2MC4uNDIwNjAwNjcyMjlhYTQwYWI0N2U5
YjQwNTI5NjIxZmU4MmVkYjM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1
dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IAogICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0
YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUt
Pm1fc291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIAotICAg
ICAgICAgICAgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpOworICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogICAgIHJlY29yZFBhcnNlKAogICAgICAgICBleGVjdXRh
YmxlLT5tX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwgCiAgICAgICAgIGV4ZWN1dGFi
bGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExp
bmUoKSwgCkBAIC01NTYsNyArNTU2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpj
aGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKICAg
ICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVy
biAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDlmYzliZTdhMTRmNmMwZmViYzIzOTcxMjZiNjBm
ZDdiMGMzNDBhMDQuLjc1YjMwOTFjZjgxYzcyOTZmZTJmYWZlOWE5Njc2NTM2Mjk5NzgyZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVz
KCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTUwMSw3
ICs1MDEsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNsYXNz
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVy
YXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBh
cnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAogICAgIFN5bWJvbFRhYmxl
KiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CkBAIC02NTAsMTIgKzY1MCwxMyBAQCBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVu
Y3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5m
dW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b24oKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJp
bmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
VmFsdWUoKTsgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhp
cychCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGRiZTQyZmE1ZmUyNjMwNGU4NmVlMjAxM2IxMDBjYWJiMjIxYzQyOWMuLjVkN2VmMzc2
NmFjMGQ2OWIzNTU0NmFmN2U3OTFjZTk0OWJiNDJkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03OSwyOCAr
NzksMzAgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24g
Q29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0
JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewogICAgIGlmICghZ2xvYmFsT2JqZWN0
LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSkpOwotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291
cmNlVVJMLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBz
b3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKTsKIH0KIAog
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAg
IEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgaW50
IG92ZXJyaWRlTGluZU51bWJlcikKKyAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBp
bnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlKQogewogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlz
IHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5n
IHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFr
ZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0i
KTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAi
KiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2Ug
aWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVu
Y3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtl
U3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJp
bmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAi
XG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOworICAgICAgICBpZiAoZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJh
dG9yKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygn
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmll
dyhleGVjKSk7CkBAIC0xMjYsOSArMTI4LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rp
b24gQ29uc3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5h
bm9ueW1vdXMsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5p
bXVtUG9zaXRpb24oKSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKaW5kZXggMjJlY2I1N2I5M2Y2OWJmYzlmOGIxYjMwNmZiNGM0MmEwYTY3
ZDJlMy4uZDExZmIyYTM3NGQ2MTkxNTBjOWQ2YzQyNjI5YmE5MWNjMTIwNWY1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApA
QCAtNTYsMTIgKzU2LDE3IEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiB9OwogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRp
b24mKTsKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKK2VudW0gY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlIHsKKyAgICBGdW5jdGlvbiwKKyAgICBHZW5lcmF0b3IsCit9OworCitKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uKTsKK0pTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9u
KTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKAogICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICBjb25zdCBTdHJpbmcmLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYsIGludCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSk7CisgICAg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBpbnQgb3ZlcnJpZGVMaW5l
TnVtYmVyID0gLTEsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6RnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
NmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTAs
MCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJh
bWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1l
KSB9OworCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpCisgICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZS5nZXQoKSkKKyAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCisgICAgICAgIGxvY2FsQXQoaSku
Y2xlYXIoKTsKK30KKworU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
R2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZMb2NhbHMpCit7CisgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CisgICAgICAgIG5l
dyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVy
YXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2Fs
cykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgIHJl
c3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
R2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgor
ICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFy
YW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMu
bnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIGxpdmVDYWxsZWVMb2Nh
bHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgIGxvY2FsQXQoaW5k
ZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKKyAgICB9KTsKK30KKwordm9pZCBHZW5lcmF0
b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2FscykKK3sKKyAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgorICAg
IC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1l
dGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7CisgICAgICAg
IGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnJh
bWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+
KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cisg
ICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGws
IHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgorICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0
ZThmNzQ4NDFjNDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAorI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCisK
KyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsK
KyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBp
bGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2FscygpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0
T2ZMb2NhbHMoKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9j
YWxBdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKKyAgICB9
CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
Pik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCisgICAgewor
ICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7
CisKKyAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNh
bGxlZUxvY2Fscyk7CisgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnJhbWUo
Vk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgc2l6ZV90IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHM7CisKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZjU4OTMxZmM1NTIwYTVjMjIwMTVlMjVmNzAy
YTdkNmUwOTc5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0
IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiR2VuZXJhdG9yRnVuY3Rpb24i
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3Ry
dWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0p
OworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhl
YywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFy
Z3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJu
YWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikpOworfQorCitDYWxsVHlwZSBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworQ29uc3RydWN0
VHlwZSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOwor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2Yzg3YmExMGIzMmI0OGMzYjlhNTZj
NGQ5NzIzZTNmODBhZDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cl9oCisjZGVmaW5lIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRQb3NpdGlv
bjsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOworCitjbGFzcyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Cisg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmU4ZjJlMzFiZDMx
MWI5MmU0Mjc0NzRmYTM5ODE4ZWVmNzhkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMDM0OTI2OTlj
MzEzNTc3NmUxZjc3ZGQxN2Q4ZGExNmQyNTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4odm0uaGVh
cCkpIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBw
cm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OworCitwcml2YXRlOgorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY3YjNiZGI3ZmIzOTcxNzRj
YWU2YWQ0NjY0N2M2ZmNmZDdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5s
dXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sICZnZW5lcmF0b3JQ
cm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JQcm90b3R5cGUpIH07
CisKKy8qIFNvdXJjZSBmb3IgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZ2VuZXJh
dG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHJldHVybiAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0
aHJvdyAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK3Zv
aWQgR2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJp
bmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkdlbmVyYXRvciIpLCBEb250RW51bSB8IFJlYWRP
bmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCitib29s
IEdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywg
Z2VuZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxHZW5lcmF0b3JQcm90b3R5cGUqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjEwYzQ0ZGVkODBiNDc0MzI3MGU4YjU5MWY4ZmNmYzc4MWNjYTAwZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JQcm90b3R5cGVfaAorI2RlZmlu
ZSBHZW5lcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEdlbmVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBHZW5lcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgeworICAgICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkp
IEdlbmVyYXRvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisg
ICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKworcHJpdmF0ZToK
KyAgICBHZW5lcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChHZW5lcmF0b3JQ
cm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclRoaXNNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JUaGlzTW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMDNlN2IwMjJmMWM2NjlkMzk3YTliNzdiNWVmMjRl
OTVmNTIwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JUaGlzTW9kZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHZW5lcmF0b3JUaGlzTW9kZV9oCisjZGVmaW5lIEdlbmVyYXRvclRoaXNNb2Rl
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLWZ1bmN0aW9uYWxsb2NhdGUKKy8vIGh0dHA6Ly9lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0
cy1jb25zdHJ1Y3QtYXJndW1lbnRzbGlzdC1uZXd0YXJnZXQKKy8vIFdoZW4gdGhlIGZ1bmN0aW9u
IGlzIGEgR2VuZXJhdG9yRnVuY3Rpb24sIGl0cyBbW0NvbnN0cnVjdG9yS2luZF1dIGlzIGFsd2F5
cyAiZGVyaXZlZCIuCisvLyBUaGlzIG1lYW5zIHRoYXQgT3JkaW5hcnlDYWxsQmluZFRoaXMgaW4g
c2VjdGlvbiA5LjIuMiBpcyBuZXZlciBleGVjdXRlZCBmb3IgR2VuZXJhdG9yRnVuY3Rpb24uCisv
LyBTbywgd2hlbiB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcsCisvLworLy8gICAgIGZ1bmN0aW9u
ICpnZW4oKQorLy8gICAgIHsKKy8vICAgICAgICB5aWVsZCB0aGlzCisvLyAgICAgfQorLy8KKy8v
ICAgICB7CisvLyAgICAgICAgIGxldCBnID0gZ2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlzfCBz
aG91bGQgYmUgZ2xvYmFsLgorLy8gICAgICAgICBnLm5leHQoKTsKKy8vICAgICB9CisvLworLy8g
ICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CisvLyAgICAgICAgIC8vIHx0aGlz
fCBpbiBnZW4gc2hvdWxkIGJlIFREWiAoYW5kIGl0IHdvbid0IGJlIGZpbGxlZCkuCisvLyAgICAg
ICAgIGcubmV4dCgpOworLy8gICAgIH0KKy8vCisvLyBUaGUgZm9sbG93aW5nIGZsYWcgbWFuYWdl
cyB0aGlzIHN0YXRlLiBXaGVuIEdlbmVyYXRvckZ1bmN0aW9uIGlzIGNhbGxlZCBhcyBhIGNvbnN0
cnVjdG9yLCBpdCByZXR1cm5zIGEgR2VuZXJhdG9yIHRoYXQgZnVuY3Rpb24gaGFzIEdlbmVyYXRv
clRoaXNNb2RlOjpFbXB0eSBmbGFnLgorLy8gSW4gdGhpcyBjYXNlLCB3aGVuIGFjY2Vzc2luZyB8
dGhpc3wsIGEgVERaIHJlZmVyZW5jZSBlcnJvciBvY2N1cnMuCitlbnVtIGNsYXNzIEdlbmVyYXRv
clRoaXNNb2RlIDogdW5zaWduZWQgeworICAgIEVtcHR5LAorICAgIE5vbkVtcHR5Cit9OworCit9
CisKKyNlbmRpZiAvLyBHZW5lcmF0b3JUaGlzTW9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDViMmVkZmJkNmQ1MzcxYmIwMWUwMmRiMDNl
NjRlYjQ2OTBmYWQxMGIuLmJkODMwYzBhNWNlM2RiZWRmYTU2OWExMWUxMjgwZDMyYWJkYTJlMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgpAQCAtMzQ4LDcgKzM0OSwx
MiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RP
ZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxp
ZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JGdW5jdGlvbk1vZGUpCisg
ICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwogICAgICAg
ICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBv
ZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGNiY2Uw
MmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvckZ1bmN0aW9uOjpz
X2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlvbikgfTsKKworSlNHZW5lcmF0b3JG
dW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgp
KQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVh
dGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBnZW5lcmF0b3JGdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yRnVuY3Rpb24+KHZtLmhlYXApKSBK
U0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7CisgICAgQVNTRVJUKGdl
bmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGdlbmVy
YXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvckZ1
bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdlbmVyYXRvckZ1bmN0aW9uID0gY3Jl
YXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRv
bkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0b3JGdW5jdGlvbiwgIkFsbG9jYXRp
bmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yRnVuY3Rpb247
Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJ
bXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3ZGVlN2I4YWU0ODkwZjJkNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dlbmVyYXRvckZ1bmN0aW9uX2gKKwor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTExJbnREZXNp
cmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0
aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIGZy
aWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJ
VENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGljOgorICAgIHR5
cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVN
b2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBSZXR1cm5N
b2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisKKyAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiog
Y3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBK
U0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRj
aHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAg
ICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgSlNHZW5l
cmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2Nv
cGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2VuZXJhdG9yRnVuY3Rpb25faApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGJjMDhmOTY5MmIwZWQzZmFiOWY5YmJlNzNmOGZjYzJjZmU3ZDdhNjQuLjZkZGU2NjAyNzg0YmY4
ZDE4M2Q3Yjk1NjhiZGZhODMzODQ5NmZlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNpbmNsdWRl
ICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUsNyBAQAogI2luY2x1ZGUgIkpTRG9s
bGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0LDYgKzM4OCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVS
SVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1Jf
VFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJh
dG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkp
KSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9U
WVBFCiAKQEAgLTQyMCw2ICs0MjUsMTQgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0
aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4RXJyb3IiKSkp
OwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVF
cnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFsKCJUeXBlRXJyb3IiKSkpOwogICAg
IG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJv
dG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVycm9yIikpKTsKKworICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOworICAgIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3Rv
ciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQo
KSwgRG9udEVudW0pOwogICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC01NTMsNiArNTY2LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBwcm9taXNl
T3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhp
cyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3RvdHlwZUdl
bmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9i
YWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTgyMCw2ICs4
MzQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
YXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9y
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVy
YXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWJ1
Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93
aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODUyLDYgKzg2OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVj
b3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzViYmVhNjc5NDk0ODNhZDNjYzc4MTg5
M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4MDc5YmNkZDQzZWI3NjcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02
Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yUHJvdG90
eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0
ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJbnB1dEN1cnNvcjsKQEAgLTIyOSw2
ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5
cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90
eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZT4gbV9nZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yUHJvdG90
eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBQcm9wZXJ0eU9m
ZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVn
RXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb25zb2xlU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
OwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBFcnJv
clByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90
eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJhdG9yUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBHZW5lcmF0
b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJh
dG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0
aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiArNTEzLDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0
dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5h
bEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
cmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRl
ck9iamVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4ZDI4YTUwZDk3YTFlMGI3N2I1MDYz
YS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZjMDZjNTRhOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBA
IC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFt
Tm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2VDb2Rl
LCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0gICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5
emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
ZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewogICAgICAgICB0aHJvd1ZNRXJy
b3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MTM1
ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3Li5lY2FiYWJjOWZmZjYwNGYzN2Yx
OTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQ0LDYg
KzI0NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9y
JiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFi
bGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJh
cmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNl
dCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2VkMzE5
NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4uNTU3N2E4OWE0OTBmZDBjMmY0M2I1
MjdhMWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0z
MDQsNiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+
IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJl
PiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRp
b25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IDg4ZDRhN2NjMzEwZTNi
MTFhN2RiZjNjMDNlYWI4MWI0ZDY5OTQ1ZGEuLjZmYzhkMGFiN2ZlY2QyNDA2ZWVmNmZmOGJlMmE4
ZGYwNjQ1MWFmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTcyNSw3
ICs3MjUsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3ViY2xhc3NhYmxlX2NvcnJlY3RfcHJv
dG90eXBlX2NoYWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9z
dGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvQXJyYXlfc3Rh
dGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJhYmxlcy5qcwogICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pbnN0
YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTczMyw3ICs3MzMsNyBAQAogLSBwYXRo
OiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9pdGVyYXRvcl9jbG9zaW5nLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19B
cnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5zdGFuY2VzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L0FycmF5X3N0YXRp
Y19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJh
eS5mcm9tX21hcF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCkBAIC03NTksNyAr
NzU5LDcgQEAKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfbmVzdGVkX3Jlc3QuanMKICAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyYXRv
cl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX3dpdGhfaW5zdGFu
Y2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NjksNyArNzY5LDcgQEAKIC0gcGF0aDog
ZXM2L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190aHJvdy5qcwogICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyYXRvcl9pbnN0YW5j
ZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfaW5zdGFuY2VzX29mX2dl
bmVyaWNfaXRlcmFibGVzLmpzCkBAIC04MDksNTUgKzgwOSw1NSBAQAogLSBwYXRoOiBlczYvZnVu
Y3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYg
OmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVyYXRvclByb3RvdHlwZSUuY29uc3Ry
dWN0b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVH
ZW5lcmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5
cGUlLnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rpb25hbGl0eS5qcwotICBjbWQ6IHJ1
bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3Jz
X2NhbnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb21wdXRlZF9zaG9ydGhhbmRf
Z2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3Nob3J0aGFuZF9nZW5lcmF0b3JzX2Ns
YXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmluZGluZy5qcwotICBjbWQ6IHJ1bkVT
NiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2dl
bmVyYXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3NlbmRpbmcuanMKLSAg
Y21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2Vu
ZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhh
bmRfZ2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBj
bWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3N0cmluZy1rZXllZF9z
aG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2FycmF5
cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3BsYW5lX3N0cmluZ3MuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNf
b2ZfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpz
Ci0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2
L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19pc19hX3J1bnRpbWVfZXJyb3IuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
Z2VuZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMuanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVyYXRvcl9wcmVjZWRlbmNlLmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L01h
cF9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9N
YXBfTWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTExMSw3ICsxMTExLDcgQEAKIC0gcGF0aDog
ZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxfcGxhbmVfc3RyaW5nc19pbl9mdW5j
dGlvbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvc3ByZWFkXy4u
Ll9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNfaW5fYXJyYXlzLmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3NwcmVhZF8u
Li5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2VzX2luX2NhbGxzLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4uX29wZXJhdG9yX3dpdGhfZ2VuZXJp
Y19pdGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9nZW5lcmljX2l0ZXJhYmxlcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dl
bmVyaWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2NmYWUxYTViNWE2NmMxM2JkMjNlOGNh
ZTUyN2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4ZDA3YjllMjYwMDRhMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9z
dGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC0xLDMg
KzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5kZWZpbmVkJykgewordmFyIGdsb2Jh
bCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJhYmxlT2JqZWN0KGFyciwgbWV0aG9k
cykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1
bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJldHVybiB7fTsKK30KK2Fyci5sZW5n
dGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVuZ3RoIDw9IDAgfTsKKyAgfSwKKyAg
J3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhyb3cnOiBtZXRob2RzWyd0aHJvdydd
Cit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVu
Y3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4gaXRlcmFibGU7Cit9CisKIGZ1bmN0
aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5jdGlvbiAqIGdlbmVyYXRvcigpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVz
LmpzCmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0ZDhmMjliMmE1YWU4MjkuLjgxNjdk
YTUyZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19v
Zl9pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5l
cmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJhYmxlcy5qcwpAQCAtMSwzICsxLDI0
IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0
aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsK
K21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlv
bicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7
Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZh
bHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1
cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsK
K3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9u
KCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0
ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24gKiBnZW5lcmF0b3IoKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRf
c3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZy5qcwppbmRleCA2ZjY4MmY1
YTE2Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4zMmQzMTdjMGI4MGFkYjk1Mjk0MzQz
ZjlhYzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2l0ZXJh
dG9yX2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYgKHR5cGVvZiBnbG9iYWwgPT09ICd1
bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30KK2Z1bmN0aW9uIF9fY3JlYXRlSXRl
cmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2RzID0gbWV0aG9kcyB8fCB7fTsKK2lm
ICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFTeW1ib2wuaXRlcmF0b3IpIHsKKyAg
cmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0ZXJhdG9yID0geworICBuZXh0OiBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJyLnNoaWZ0KCksIGRvbmU6IGFyci5s
ZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0aG9kc1sncmV0dXJuJ10sCisgICd0
aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRlcmFibGUgPSB7fTsKK2l0ZXJhYmxl
W1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcmF0b3I7IH0KK3JldHVy
biBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsKIAogdmFyIGNsb3NlZCA9ICcnOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lp
ZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3Zp
YV90aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2YzM2MjA2YzFjYjM2NDcwNGEwNGQ0
Li4xZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQyOTM4MjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVy
YXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5q
cwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5lZCcpIHsK
K3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9iamVjdChh
cnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVvZiBTeW1i
b2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4ge307Cit9
CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8PSAwIH07
CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93JzogbWV0aG9k
c1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9sLml0ZXJh
dG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJhYmxlOwor
fQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2VkID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMt
ZnJvbS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYTU4NzkwN2Mz
Y2RiMTM2NTMwNWNiNzkxYmMyNGJkNzkyZTI2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5j
dGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiAqZ2Vu
KGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICByZXR1cm4g
YXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiB0ZXN0OworfQorCitsZXQgZyA9IGdlbigx
LCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0KCk7CitzaG91bGRCZShmdW5jKCku
bGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjY0NzhmYTIzZTRiZTMz
YWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEs
MTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTog
JHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
ZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWll
bGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoy
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6
MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAg
IGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGIgPSB5aWVs
ZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIGMgPSB5aWVsZCBjOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZhciBnID0gZzIoMCwgMSwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjox
LCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwg
YHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjQy
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQy
LCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjo0
Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMp
CisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0gZzEoMCwgMSwg
Mik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZh
bHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpnMihhLCBiLCBj
KQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7
CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYSA9IHlpZWxkIGE7CisgICAgICAg
IHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxkIGI7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsK
KyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWAp
OworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Zy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0
MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworfSgpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgewor
ICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9
CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisK
KyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50
czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBhID0geWllbGQgYTsKKyAgICAg
ICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWllbGQgYjsKKyAgICAgICAgeWllbGQg
YXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAgICAgICAgeWllbGQgYXJndW1lbnRz
OworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9
YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAg
IHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9k
cy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDY1Y2ViMWY0MzZjMDJlMzZk
OGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMKQEAg
LTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0cnkgewor
ICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYg
KGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVuY3Rpb24g
dGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
ZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNz
IENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQorICAgIHsKKyAgICB9Cit9CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5hbWVkICdjb25zdHJ1Y3RvcicuYCk7
CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAgICpvaygpCisgICAgeworICAgICAg
ICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwordGVzdFN5bnRheChgCitjbGFzcyBDb2NvYSB7
CisgICAgc3RhdGljICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9Citg
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjVhNTRhMmRjNDEyNzA3
OWMzMWNmZDMxZjliMzFjZjUwYWQ2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCkBAIC0wLDAg
KzEsNjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJv
ciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93
bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2NsYXNz
IEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgeWll
bGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0KKworICAgIHN0YXRpYyAqc3RhdGlj
R2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAg
IGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgYSk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0
IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgbGV0IGcgPSBu
ZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOworfQorCit7CisgICAgbGV0IGcgPSBB
LnN0YXRpY0dlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBBKTsKKyAgICBzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQy
KTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVlKTsKK30KK3sKKyAgICBzaG91bGRU
aHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IEEuc3RhdGljR2VuKCk7CisgICAgfSwg
YFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25l
dyBBLnN0YXRpY0dlbigpJylgKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWJk
NzhkZjc2YTBjYjc1OGI4MWVlYWIyYzI1NWI5ZGFkMWI0NDc1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpz
CkBAIC0wLDAgKzEsNjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5j
dGlvbiAqZ2VuKCkgeworICAgIHlpZWxkIGV2YWwoInRoaXMiKTsKK30KKwordmFyIGcgPSBuZXcg
Z2VuKCk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0KCkudmFsdWU7Cit9LCBgUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKwor
Y2xhc3MgQiB7IH0KKworKGZ1bmN0aW9uKCkgeworICAgIGV2YWwoJ3RoaXMnKTsKKyAgICBldmFs
KCd0aGlzJyk7Cit9KCkpOworCitjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3RoaXMnKTsKKyAgICB9Cit9CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBuZXcgQSgpOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3Qg
YWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisKK2NsYXNzIEMgeworICAgICpnZW5l
cmF0b3IoKQorICAgIHsKKyAgICAgICAgeWllbGQgZXZhbCgndGhpcycpOworICAgIH0KK30KKwor
c2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgZyA9IG5l
dyBjLmdlbmVyYXRvcigpOworICAgIGcubmV4dCgpOworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24g
aXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBjLmdlbmVyYXRvcigpJylgKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGcgPSBjLmdl
bmVyYXRvcigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCBjKTsKK30oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5j
dGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTZhZTVmZDE5
ZjlkOGM4YjA4ZGU2YjBlZDZhNWJhZTc1YWZkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rv
ci5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGdsb2JhbCA9IChuZXcgRnVuY3Rpb24o
InJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2YgZ2xvYmFsLkdlbmVyYXRvckZ1bmN0
aW9uLCAndW5kZWZpbmVkJyk7Cit2YXIgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciA9IChm
dW5jdGlvbiAqKCkgeyB9KS5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJlKGdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuX19wcm90b19fLCBGdW5jdGlvbik7CitzaG91bGRCZShnZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjc3MzZj
NDIzNGUxODc5MTBiOGNhNjM1M2NiZjQ1YjBkNjAwNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5q
cwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9rID0gZnVuY3Rpb24gKmdlbmVyYXRv
cigpCit7CisgICAgeWllbGQgZ2VuZXJhdG9yOworfTsKKwordmFyIGcgPSBvaygpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItbWV0aG9kcy13aXRo
LW5vbi1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2MWQ5MzA3NjBkMjBlZTZlZjRjZTU3MDNl
ZjczYjlmZjlhZTU2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1ub24tZ2VuZXJhdG9yLmpzCkBAIC0w
LDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewor
ICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAg
dHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JU
aHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JU
aHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChT
dHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKSB7Cit9
Cit2YXIgZyA9IGdlbigpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5uZXh0LmNhbGwo
e30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnRocm93LmNhbGwoe30pOworfSwgYFR5cGVFcnJv
cjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOworCitzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgZy5yZXR1cm4uY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiB8dGhpc3wgc2hvdWxkIGJl
IGEgZ2VuZXJhdG9yYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhNGRjOGNlMDc2
YzczMWM0MjRhODg1ZmIzOGUzNTdlNDkzZmZmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlbGF0aW9ucy5qcwpAQCAtMCww
ICsxLDMwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbmVyYXRvckZ1bmN0aW9uKCkgeworfQor
bGV0IGdlbmVyYXRvciA9IGdlbmVyYXRvckZ1bmN0aW9uKCk7CisKK3Nob3VsZEJlKGdlbmVyYXRv
ciBpbnN0YW5jZW9mIGdlbmVyYXRvckZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKHR5cGVvZiBn
ZW5lcmF0b3IuX19wcm90b19fLCAnb2JqZWN0Jyk7CitzaG91bGRCZShnZW5lcmF0b3IuX19wcm90
b19fLCBnZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUpOworCitsZXQgR2VuZXJhdG9yUHJvdG90
eXBlID0gZ2VuZXJhdG9yLl9fcHJvdG9fXy5fX3Byb3RvX187CisKK2xldCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXzsKK2xldCBHZW5lcmF0
b3JGdW5jdGlvbiA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcjsKK3No
b3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VvZiBHZW5lcmF0b3JG
dW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShHZW5lcmF0b3JGdW5jdGlvbi5fX3Byb3RvX18sIEZ1
bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLl9fcHJvdG9fXywg
RnVuY3Rpb24ucHJvdG90eXBlKTsKKworc2hvdWxkQmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUucHJvdG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUpOworc2hvdWxkQmUoR2VuZXJhdG9yUHJv
dG90eXBlLmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CisKK2xldCBh
cnJheUl0ZXJhdG9yID0gW11bU3ltYm9sLml0ZXJhdG9yXSgpOworbGV0IEFycmF5SXRlcmF0b3JQ
cm90b3R5cGUgPSBhcnJheUl0ZXJhdG9yLl9fcHJvdG9fXzsKK2xldCBJdGVyYXRvclByb3RvdHlw
ZSA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuX19wcm90b19fOworCitzaG91bGRCZShJdGVyYXRv
clByb3RvdHlwZSwgR2VuZXJhdG9yUHJvdG90eXBlLl9fcHJvdG9fXyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3Jl
LWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U2ZGViY2IxZmU4
NTdiNTBmM2QyNzlmMWQ1NzRmZTg2OWRjMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUtZmlyc3Qt
Y2FsbC5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVJdGVy
YXRvclJlc3VsdChhY3R1YWwsIHsgdmFsdWUsIGRvbmUgfSkKK3sKKyAgICBzaG91bGRCZShhY3R1
YWwudmFsdWUsIHZhbHVlKTsKKyAgICBzaG91bGRCZShhY3R1YWwuZG9uZSwgZG9uZSk7Cit9CisK
K2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJvdyBuZXcgRXJyb3IoIk5HIik7Cit9
CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hhYmxlKCk7Cit9CisKK3ZhciBnID0g
Z2VuKCk7CitzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKCJIZWxsbyIpLCB7IHZhbHVl
OiAiSGVsbG8iLCBkb25lOiB0cnVlIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTY5YTBm
NzBlNWU0YjFmZGEyNzYyZGI3NDQ4ZDllNWE5MTUxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4uanMKQEAgLTAs
MCArMSwxMzMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlSXRlcmF0b3JS
ZXN1bHQoYWN0dWFsLCB7IHZhbHVlLCBkb25lIH0pCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLnZh
bHVlLCB2YWx1ZSk7CisgICAgc2hvdWxkQmUoYWN0dWFsLmRvbmUsIGRvbmUpOworfQorCitmdW5j
dGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHlpZWxkIDIwOworICAgICAgICB5aWVsZCA0MjsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJl
SXRlcmF0b3JSZXN1bHQoZy5uZXh0KDApLCB7IHZhbHVlOiAyMCwgZG9uZTogZmFsc2UgfSk7Cisg
ICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMjApLCB7IHZhbHVlOiAyMCwg
ZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigy
MCksIHsgdmFsdWU6IDIwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9y
UmVzdWx0KGcubmV4dCg0MiksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAg
ICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAg
ICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDQyKSwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJu
KDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICByZXR1cm4gNDI7CisgICAg
fQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAg
c2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1
ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0p
OworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5y
ZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgfQorCisgICAgeworICAg
ICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4
dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJl
SXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRydWUgfSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmVJdGVy
YXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAg
ICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQy
KSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAg
eWllbGQgNDI7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICByZXR1cm4gNDAwOwor
ICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAg
ICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9uZTogZmFs
c2UgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFs
dWU6IDQwMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChn
LnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAg
ICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0
dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7Cisg
ICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0Miwg
ZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOworCisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gKmdlbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHlpZWxkIDQyOworICAg
ICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ0aHJvd24iKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsKKyAgICAg
ICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwgeyB2YWx1ZTogNDIsIGRvbmU6IGZh
bHNlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnJldHVybigwKSwgYEVycm9yOiB0
aHJvd25gKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2
YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdl
bigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVl
OiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4
dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJl
SXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsK
KyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwYWY2ZTA3ODlkYzE4YmJhZDNhMGFm
YmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAgLTAsMCArMSw2NyBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGdsb2JhbCA9IG5ldyBGdW5jdGlvbign
cmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7
CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdl
bigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgZ2xvYmFsKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAgIH0sIGBSZWZlcmVuY2VFcnJvcjog
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworICAgIH0KKyAgICB7Cisg
ICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAgIGxldCBnID0gZ2VuLmNhbGwodGhp
c09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB0aGlzT2JqZWN0KTsK
KyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7Cisg
ICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gbmV3IGdlbigpOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBnLm5leHQoKTsKKyAgICAg
ICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFi
bGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKKyAgICAg
ICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3Qt
Y2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRo
cm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NmNiNGY5N2VlMTBjMzg1MDZl
MThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcwpA
QCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3
IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB1bnJlYWNoYWJsZSgp
OworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0gbmV3IEVycm9yKCJPSyIpOwordmFy
IHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3coZXJyb3IpOworfSBjYXRjaCAoZSkg
eworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9PSBlcnJvcikKKyAgICB1bnJlYWNo
YWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTIyNjlmNTNjOTU0ZWE4MjhjYzAxNDEwNDdi
NTNmYzFhMTJhMDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanMKQEAgLTAsMCArMSwxMzIgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9
YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoYWN0dWFsLCB7IHZhbHVl
LCBkb25lIH0pCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLnZhbHVlLCB2YWx1ZSk7CisgICAgc2hv
dWxkQmUoYWN0dWFsLmRvbmUsIGRvbmUpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitj
bGFzcyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b3VudCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5jb3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2Vu
KCkgeworICAgICAgICB5aWVsZCB5aWVsZCAyMDsKKyAgICAgICAgeWllbGQgNDI7CisgICAgfQor
CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9y
UmVzdWx0KGcubmV4dCgwKSwgeyB2YWx1ZTogMjAsIGRvbmU6IGZhbHNlIH0pOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiBnLnRocm93KDIwKSwgYDIwYCk7CisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IGcudGhyb3coMjApLCBgMjBgKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3Vs
dChnLm5leHQoNDIpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAg
IHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTog
dHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiBnLnRocm93KDQyKSwgYDQyYCk7CisgICAgICAgIHNob3VsZEJlSXRl
cmF0b3JSZXN1bHQoZy5uZXh0KDQyKSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0p
OworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTog
NDIsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3coNDIp
LCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpn
ZW4oKSB7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBn
ID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFs
dWU6IDQyLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93
KDApLCBgMGApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAg
IHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDAsIGRvbmU6IHRy
dWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50
aHJvdyg0MiksIGA0MmApOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gKmdlbigpIHsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7Cisg
ICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygwKSwg
YDBgKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0p
OworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3co
NDIpLCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBzaXRl
ID0gbmV3IENhbGxTaXRlKCk7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHlpZWxkIDQyOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICBzaG91bGRCZShlLCAwKTsKKyAgICAgICAgICAgIHNpdGUuY2FsbCgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7
CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQyLCBk
b25lOiBmYWxzZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnRocm93KDAp
LCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmUoc2l0ZS5jb3Vu
dCwgMSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2Vu
KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgeWllbGQgNDI7CisgICAgICAgIH0gZmlu
YWxseSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7
CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQo
Zy5uZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiBmYWxzZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJ
dGVyYXRvclJlc3VsdChnLnRocm93KDApLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygwKSwgYDBgKTsKKyAgICB9Cit9KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
d2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkM2IyZGY5OWE4NDgwY2Iz
NWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanMKQEAgLTAs
MCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHlpZWxkIG5ldy50
YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5k
ZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTUzYzc5MTczOGVj
ZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtMCww
ICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAg
ICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhy
b3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3Ry
aW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICByZXR1cm4gZXZhbCgnc3VwZXInKTsK
KyAgICB9CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KCksIGBTeW50YXhFcnJvcjogc3Vw
ZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmApOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJu
IDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQSBleHRlbmRzIEIgeworICAgICAg
ICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3N1cGVyLmdlbigpJyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICBhLmdlbigpLm5leHQoKTsKKyAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVy
IGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsKKyAgICAgICAgICAgIHJldHVybiA0
MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICAgICAg
KmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdlbigpOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZEJlKGEuZ2VuKCkubmV4dCgpLnZh
bHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEIgeworICAgICAg
ICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4oKSB7CisgICAgICAgICAgICB5aWVs
ZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhID0gbmV3IEEoKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5ldyBhLmdlbigpOworICAgIH0sIGBU
eXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcg
YS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVhYmVm
YTA5YzI5MWUzYzc5NjJiM2IzNzNjNTA4ODYyZDY5OGI1YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIuanMK
QEAgLTAsMCArMSwzMjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitjbGFz
cyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5jb3Vu
dCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5j
b3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBBcnJheXMgewor
ICAgICAgICBjb25zdHJ1Y3RvcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuZmlyc3Qg
PSBbIDAsIDEsIDIsIDMgXTsKKyAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gWyA0LCA1LCA2LCA3
IF07CisgICAgICAgIH0KKworICAgICAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgICAgICB7
CisgICAgICAgICAgICB5aWVsZCAqIHRoaXMuZmlyc3Q7CisgICAgICAgICAgICB5aWVsZCAqIHRo
aXMuc2Vjb25kOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGFycmF5cyA9IG5ldyBBcnJh
eXM7CisgICAgbGV0IGkgPSAwOworICAgIGZvciAobGV0IHZhbHVlIG9mIGFycmF5cykKKyAgICAg
ICAgc2hvdWxkQmUoaSsrLCB2YWx1ZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8v
IHRocm93IHNob3VsZCBiZSBwcm9wYWdhdGVkLgorICAgIGxldCBjMSA9IG5ldyBDYWxsU2l0ZTsK
KyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisKKyAg
ICAgICAgJ3Rocm93Jyh2YWx1ZSkgeworICAgICAgICAgICAgc2hvdWxkQmUodmFsdWUsIDQyKTsK
KyAgICAgICAgICAgIGMxLmNhbGwoKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiT0si
KTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAg
ICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3Vs
ZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSku
dmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgRXJyb3I6IE9LYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQ0KTsKKyAgICB9LCBg
NDRgKTsKKyAgICBzaG91bGRCZShjMS5jb3VudCwgMSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9kLgorICAgIGxldCBjMSA9IG5ldyBDYWxsU2l0ZTsK
KyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisKKyAg
ICAgICAgJ3JldHVybicodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHZh
bHVlLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYzEuY2FsbCgpOworICAgICAgICAgICAgcmV0
dXJuIHsgdmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wu
aXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVy
ID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBs
ZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsK
KyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgy
KS52YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQy
KTsKKyAgICB9LCBgVHlwZUVycm9yOiBEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUg
YSAndGhyb3cnIG1ldGhvZC5gKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcu
dGhyb3coNDQpOworICAgIH0sIGA0NGApOworICAgIHNob3VsZEJlKGMxLmNvdW50LCAxKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gTm8gYHRocm93YCBtZXRob2QsIGByZXR1cm5g
IHJldHVybnMgYW4gaW5jb3JyZWN0IHJlc3VsdC4KKyAgICBsZXQgYzEgPSBuZXcgQ2FsbFNpdGU7
CisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0KHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgfQorCisg
ICAgICAgICdyZXR1cm4nKHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBzaG91bGRCZSh2
YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIGMxLmNhbGwoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7Cisg
ICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsK
KyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1
ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNo
b3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9yOiBJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICBnLnRocm93KDQ0KTsKKyAgICB9LCBgNDRgKTsKKyAgICBzaG91bGRCZShjMS5jb3VudCwg
MSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9kLCBO
byBgcmV0dXJuYCBtZXRob2QuCisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0KHZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFsc2Ug
fTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAg
ICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3Vs
ZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSku
dmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9yOiBE
ZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC5gKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0NGAp
OworfSgpKTsKKworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIGB0aHJvd2AgZG9lcyBub3QgdGhy
b3cuIE5vdCByZXR1cm5zIGEgb2JqZWN0LgorICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAg
bmV4dCh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6
IGZhbHNlIH07CisgICAgICAgIH0KKworICAgICAgICAndGhyb3cnKHZhbHVlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
KmdlbigpCisgICAgeworICAgICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigpOworICAgICAg
ICB5aWVsZCAqIGl0ZXI7CisgICAgfQorCisgICAgbGV0IGcgPSBnZW4oKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDEpLnZh
bHVlLCAxKTsKKyAgICBzaG91bGRCZShnLm5leHQoMikudmFsdWUsIDIpOworICAgIHNob3VsZFRo
cm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0Mik7CisgICAgfSwgYFR5cGVFcnJvcjogSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LmApOworICAgIHNob3VsZFRo
cm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0NCk7CisgICAgfSwgYDQ0YCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIC8vIGB0aHJvd2AgZG9lcyBub3QgdGhyb3cuIElmIHJldHVy
bmVkIGl0ZXJhdG9yIHJlc3VsdCBpcyBtYXJrZWQgYXMgZG9uZSwgaXQgYmVjb21lcyBgcmV0dXJu
YC4KKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQodmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxzZSB9OworICAgICAgICB9CisK
KyAgICAgICAgJ3Rocm93Jyh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsg
dmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0
b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3
IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9
IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBz
aG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1
ZSwgMik7CisgICAgc2hvdWxkQmUoZy50aHJvdyg0MikudmFsdWUsIDQyKTsKKyAgICBzaG91bGRU
aHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0NGApOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICAvLyBgcmV0dXJuYCByZXR1cm5zIGRvbmU6IGZhbHNlLgor
ICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAg
ICAgICAncmV0dXJuJyh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFs
dWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAgICAgICBbU3ltYm9sLml0ZXJhdG9y
XSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAg
fQorCisgICAgZnVuY3Rpb24gKmdlbigpCisgICAgeworICAgICAgICBsZXQgaXRlciA9IG5ldyBJ
dGVyYXRvcigpOworICAgICAgICBsZXQgcmVzdWx0ID0geWllbGQgKiBpdGVyOworICAgICAgICB5
aWVsZCByZXN1bHQ7CisgICAgICAgIHlpZWxkIDQyOworICAgIH0KKworICAgIGxldCBnID0gZ2Vu
KCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1bmRlZmluZWQpOworICAgIHNob3Vs
ZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDIpLnZhbHVlLCAy
KTsKKyAgICBzaG91bGRCZShnLnJldHVybig0MikudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShn
LnJldHVybig0MikuZG9uZSwgZmFsc2UpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB5aWVsZCAqIFsgMCwg
MSwgMiBdOworICAgICAgICB5aWVsZCByZXN1bHQ7CisgICAgfQorCisgICAgbGV0IGcgPSBnZW4o
KTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAyKTsKKyAgICBzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBlZDU2Njg4YTZhMjk4Yy4uOThmZmY1
Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgZm9yRWFjaFNldEJpdChj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgbiA9IGFycmF5TGVu
Z3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpIHsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApp
bmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZmMTIwMTNjNjQ4Li5mNDZlMTE5NzNl
NTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
QEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfRVM2X0NM
QVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDAKKyNkZWZpbmUgRU5B
QkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0VTNl9N
T0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1
N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFTX1BST1hZID0gOwogRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0VTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVg7CiBF
TkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYOwotRU5BQkxF
X0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gRU5BQkxFX0VTNl9H
RU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwogRU5BQkxFX0VTNl9URU1QTEFURV9M
SVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg7CiBFTkFC
TEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcxMjllZWQ3NTY4ZDU3ZjQxMWQuLjE4
ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDljNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJM
RV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2
X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVS
QVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVS
QUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1NjhkNTdmNDExZC4uMThkNjRkMDM1MmE0
ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcg
QEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZfQVJST1dGVU5DVElPTl9TWU5UQVgg
PSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwogRU5BQkxFX0VTNl9DTEFTU19TWU5U
QVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJMRV9FUzZfR0VORVJBVE9SUyA9IDsK
K0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZfR0VORVJBVE9SUzsKIEVOQUJMRV9F
UzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggPSBFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
ID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCA5Y2Q4
NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNjLi4wMmNjNzk4YjIwYmQ2ZTQ2MjYz
YmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMzQsNyArMzQs
NyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SIFBVQkxJQyBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9O
KQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9HRU5FUkFUT1JT
IFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2
X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYIFBVQkxJQyBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxFX1NZU1RFTSBQVUJMSUMg
T0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGQ5NjIyNGQ0MTcxYmRiYTcxNzBj
NDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2ZjdhMDNmZGQyOWI2MzFmNDYyNTBi
ZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTc3LDcgKzc3LDcgQEAgbWFj
cm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIgUFJJVkFURSBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCAiVG9nZ2xl
IEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCAiVG9nZ2xlIEVTNiBjbGFz
cyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklW
QVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMg
IlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9nZ2xlIEVTNiBtb2R1bGVzIHN1cHBv
cnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfVEVN
UExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVtcGxhdGUgbGl0ZXJhbCBzeW50YXgg
c3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRklM
VEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBPRkYp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Uw
YTNjMmE3OTYwOTAyYmY5Y2M1MmJjYWUzYjVhOTdmN2NjYmU4Ny4uMzJmY2QzYjZjMWExNWEzOGQw
MWY4OTAzMGY1NzRjYWQ4OGRhZGI4OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTEyLTAxICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBM
TEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMg
ZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTUtMTEtMzAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIFBy
b2Nlc3NNb2RlbCBhbHdheXMgTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjZGViNTI1Y2Y5NGI1YThlMTIxYmEyNGUz
NzlkMjMzZDY5MWM2Yjg5Li40NjIxODgxNWIxNTNjNTMyOTliYzI3MWQ5Yjc3Zjc0OGFkMzA3MDVm
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0xODUsNyArMTg1
LDcgQEAgQkVHSU4KICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9DTEFTU19TWU5UQVgiLCBk
ZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2xhc3NTeW50YXggfSwKIAogICAgIHsgb3B0aW9uID0+
ICJnZW5lcmF0b3JzIiwgZGVzYyA9PiAiVG9nZ2xlIEVTNiBnZW5lcmF0b3JzIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVM2X0dFTkVSQVRPUlMiLCBkZWZhdWx0ID0+IDAsIHZh
bHVlID0+IFwkZ2VuZXJhdG9yc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VT
Nl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGdlbmVyYXRvcnNTdXBwb3J0
IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibW9kdWxlcyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgbW9k
dWxlcyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9NT0RVTEVTIiwgZGVm
YXVsdCA9PiAwLCB2YWx1ZSA9PiBcJG1vZHVsZXNTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTkxYTE3N2NlM2QzZjBlYTk0ZTZhZDRjNjQwM2ViMzk5
ZGNjOWMzNC4uN2EyNzQyNjQyYjE0NWFhMjQxMDc0ODg0N2RkODdkZTA2MThkN2RiOSAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEy
LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtF
UzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBh
bmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTUtMTEtMjMgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjExLjIgcmVsZWFzZS4K
ZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMv
Q2hhbmdlTG9nCmluZGV4IDBjOGFmMmFiYjExMjQ4ZWJhMWZhMDgzYjkzMjI5N2MyN2M0MjgwYjUu
LjM0MzA0MTg1MGYyN2RmMzUwNjM5MWU4ZmNmNWM3NDNiNjMyYTgxZjYgMTAwNjQ0Ci0tLSBhL1dl
YktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE1LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBw
b3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9w
cy9GZWF0dXJlRGVmaW5lcy5wcm9wczoKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9GZWF0
dXJlRGVmaW5lc0NhaXJvLnByb3BzOgorCiAyMDE1LTExLTA1ICBOaWtvcyBBbmRyb25pa29zICA8
bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAgIEFk
ZCBydW50aW1lIGFuZCBjb21waWxlIHRpbWUgZmxhZ3MgZm9yIGVuYWJsaW5nIFdlYiBBbmltYXRp
b25zIEFQSSBhbmQgbW9kZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4ZjdlZTUyMWUwNGY5ZmVi
ZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQxNjZiZjVlNzBh
ODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL0ZlYXR1
cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9G
ZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+RU5BQkxF
X0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I+
CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
MjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JT
IC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVSQVRPUlM8L0VO
QUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+CiAgICAgPEVO
QUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4KICAgICA8RU5B
QkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDkxZWU4MGZkZjRh
ZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2MWI3Y2VjNmFjNWVh
NjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNw
cm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3ICszMiw3IEBA
CiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9ET000X0VWRU5U
U19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAvPgot
ICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9HRU5FUkFUT1JT
PkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgogICAgIDxFTkFC
TEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2X1RFTVBMQVRF
X0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266421</attachid>
            <date>2015-12-01 18:40:31 -0800</date>
            <delta_ts>2015-12-01 18:55:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150792-20151202114005.patch</filename>
            <type>text/plain</type>
            <size>341883</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NGUwMDA5NTk0NDgzOWM5YWU4MWMzNTU3NDY0YzNkNzJjODExY2NmLi5jYjk4ODYwNzE1NmEzZmUw
ZDA1YjY3MTBkOGRmOGNlNDFiZjkwMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MDggQEAKKzIwMTUtMTItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQg
Zm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
YmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBFUzYgR2VuZXJhdG9ycyBpbiBMTEludCBhbmQgQmFzZWxp
bmUgdGllcnMuCisgICAgICAgIFdoaWxlIHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc29tZSBpbmVm
ZmljaWVudCBwYXJ0LCB0aGUgaW1wbGVtZW50YXRpb24gY292ZXJzIGVkZ2UgY2FzZXMuCisgICAg
ICAgIExhdGVyLCB3ZSB3aWxsIG1ha2UgdGhpcyBlZmZpY2llbnQuCisKKyAgICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDYKKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKKyAgICAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NTIKKyAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NjAK
KyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKworICAgICAgICBUbyBlbmNvdXJhZ2UgREZHIC8gRlRMIGxhdGVyLCB3ZSB0YWtlIHRoZSBm
b2xsb3dpbmcgZGVzaWduLgorCisgICAgICAgIDEuIFVzZSBzd2l0Y2hfaW1tIHRvIGp1bXAgdG8g
dGhlIHNhdmUvcmVzdW1lIHBvaW50cy4KKworICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyAvIHJl
c3RvcmluZyBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHJlc3VtZSBmcm9tIGl0LCB3ZSB1c2Ugc3dp
dGNoX2ltbSB0byBqdW1wIHRvIHRoZSByZXN1bWUgcG9pbnQuCisgICAgICAgIFRoaXMgbGltaXRz
IG9uZSBlbnRyeSBwb2ludCB0byBhIGdpdmVuIGdlbmVyYXRvciBmdW5jdGlvbi4gVGhpcyBkZXNp
Z24gbWFrZXMgaW5saW5pbmcgZWFzeS4KKyAgICAgICAgVGhlIGdlbmVyYXRlZCBjb2RlIGJlY29t
ZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgZnVuY3Rpb24gQGdlbmVyYXRvck5leHQo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoQGdlbmVy
YXRvclN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbml0aWFsOgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgLi4uCisKKworICAgICAgICAgICAgICAgICAgICBvcF9zYXZlKFlpZWxk
XzApOyAgLy8gb3Bfc2F2ZSBjb250YWlucyAqdmlydHVhbCoganVtcCB0byBZaWVsZF8wLgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0ZHIHNob3dzIGEganVtcCBl
ZGdlIHRvIFlpZWxkXzAgcG9pbnQsIGJ1dCBpdCB3b24ndCBiZSBhY3R1YWxseSB1c2VkLgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLi4uOworCisgICAgICAgICAgICAgICAgY2FzZSBZaWVs
ZF8wOgorICAgICAgICAgICAgICAgICAgICBvcF9yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKEBnZW5lcmF0b3JSZXN1bWVNb2RlID09IFRocm93KQorICAgICAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEBnZW5lcmF0b3JSZXN1bWVN
b2RlID09IFJldHVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gc2VudFZhbHVlIGlzIGEgdmFsdWUg
c2VudCBmcm9tIGEgY2FsbGVyIGJ5IGBnZW5lcmF0b3IubmV4dChzZW50VmFsdWUpYC4KKyAgICAg
ICAgICAgICAgICAgICAgc2VudFZhbHVlID0gQGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgb3Bfc2F2ZShZaWVsZF8xKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC4uLjsKKworICAgICAgICAgICAgICAgIGNhc2UgWWllbGRf
MToKKyAgICAgICAgICAgICAgICAgICAgb3BfcmVzdW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9kZSA9PSBUaHJvdykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9PSBSZXR1cm4pCisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgIHNlbnRWYWx1ZSA9IEBnZW5lcmF0b3JWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlc3VtZSBzZXF1ZW5j
ZSBzaG91bGQgbm90IGJlIGVtaXR0ZWQgcGVyIHlpZWxkLgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTUyLgorCisgICAgICAgIDIuIFN0b3JlIGxpdmUgZnJhbWUgcmVnaXN0ZXJzIHRvIEdlbmVyYXRv
ckZyYW1lCisKKyAgICAgICAgVG8gc2F2ZSBhbmQgcmVzdW1lIGdlbmVyYXRvcidzIHN0YXRlLCB3
ZSBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgaW4gR2VuZXJhdG9yRnJhbWUuCisgICAgICAg
IEFuZCB3aGVuIHJlc3VtaW5nLCB3ZSByZWZpbGwgcmVnaXN0ZXJzIHdpdGggc2F2ZWQgb25lcy4K
KyAgICAgICAgU2luY2Ugc2F2ZWQgcmVnaXN0ZXIgY29udGFpbnMgc2NvcGUgcmVnaXN0ZXIsIHx0
aGlzfCBldGMuLCB0aGUgZW52aXJvbm1lbnQgaW5jbHVkaW5nIHRoZSBzY29wZSBjaGFpbiB3aWxs
IGJlIHJlY292ZXJlZCBhdXRvbWF0aWNhbGx5LgorICAgICAgICBXaGlsZSBzYXZpbmcgYW5kIHJl
c3VtaW5nIGNhbGxlZSByZWdpc3RlcnMsIHdlIGRvbid0IHNhdmUgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KKyAgICAgICAgVGhlc2UgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCB0byBjb250cm9sIGdlbmVy
YXRvcidzIHJlc3VtZSBiZWhhdmlvci4KKworICAgICAgICBXZSBwZXJmb3JtIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBpbiBDb2RlQmxvY2sgdG8gZGV0ZXJtaW5lIGFjdHVhbGx5ICpkZWYqaW5l
ZCByZWdpc3RlcnMgYXQgdGhhdCByZXN1bWUgcG9pbnQuCisKKyAgICAgICAgMy4gR2VuZXJhdG9y
RnVuY3Rpb24gd2lsbCBldmFsdWF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBnZW5lcmF0aW5nIEdlbmVy
YXRvcgorCisgICAgICAgIEdlbmVyYXRvcidzIHBhcmFtZXRlciBzaG91bGQgYmUgZXZhbHVhdGVk
IGJlZm9yZSBlbnRlcmluZyBHZW5lcmF0b3IncyBib2R5LiBGb3IgZXhhbXBsZSwKKworICAgICAg
ICAgICAgZnVuY3Rpb24gaGVsbG8oKSB7IC4uLiB9CisgICAgICAgICAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHlpZWxkIGI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgZyA9IGdlbigyMCk7ICAvLyBOb3csIGhl
bGxvIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHdlIGV2YWx1
YXRlIHBhcmFtZXRlcnMgaW4gR2VuZXJhdG9yRnVuY3Rpb24sIGFuZCBhZnRlciB0aGF0LCB3ZSBj
cmVhdGUgYSBHZW5lcmF0b3IgYW5kIHJldHVybiBpdC4KKyAgICAgICAgVGhpcyBjYW4gYmUgZXhw
bGFpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvIGNvZGUuCisKKyAgICAgICAgICAgIGZ1bmN0
aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBnZW5lcmF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIDQu
IG9wX3NhdmUgc2VlbXMgc2ltaWxhciB0byBjb25kaXRpb25hbCBqdW1wCisKKyAgICAgICAgV2Ug
d29uJ3QganVtcCB0byBlbHNld2hlcmUgZnJvbSBvcF9zYXZlIGFjdHVhbGx5LiBCdXQgd2UgYWRk
IGEgKnZpcnR1YWwqIGp1bXAgZWRnZSAoZmxvdykgZnJvbSBvcF9zYXZlIHRvIHRoZSBwb2ludCBz
byBjYWxsZWQgKm1lcmdlIHBvaW50Ki4KKyAgICAgICAgV2UgY29uc3RydWN0IHRoZSBDRkcgYXMg
Zm9sbG93cywKKworICAgICAgICAgICAgKGdsb2JhbCBnZW5lcmF0b3Igc3dpdGNoKSAtPiAoaW5p
dGlhbCBzZXF1ZW5jZSkgLT4gKG9wX3NhdmUpIC0tLS0rLT4gKG1lcmdlIHBvaW50KSAtPiAobmV4
dCBzZXF1ZW5jZSkqCisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
fAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG9wX3JldCkgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4o
b3BfcmVzdW1lKS0tKworCisgICAgICAgIEJ5IGNvbnN0cnVjdGluZyBzdWNoIGEgZ3JhcGgsCisK
KyAgICAgICAgICAgIDEuIFNpbmNlIHdlIGhhdmUgYSBmbG93IGZyb20gKG9wX3NhdmUpIHRvICht
ZXJnZSBwb2ludCksIGF0IG1lcmdlIHBvaW50LCB3ZSBjYW4gKnVzZSogbG9jYWxzIHRoYXQgYXJl
IGRlZmluZWQgYmVmb3JlIChvcF9zYXZlKQorICAgICAgICAgICAgMi4gb3Bfc2F2ZSBzaG91bGQg
Y2xhaW0gdGhhdCBpdCBkb2VzIG5vdCBkZWZpbmUgYW55dGhpbmcuIEFuZCBjbGFpbSB0aGF0IGl0
ICp1c2UqcyBsb2NhbHMgdGhhdCBhcmUgdXNlZCBpbiAobWVyZ2UgcG9pbnQpLgorICAgICAgICAg
ICAgMy4gYXQgb3BfcmVzdW1lLCB3ZSBzZWUgKnVzZSpkIGxvY2FscyBhdCBtZXJnZSBwb2ludCBh
bmQgZGVmaW5lIGFsbCBvZiB0aGVtLgorCisgICAgICAgIFdlIGNhbiBkbyB0aGUgYWJvdmUgdGhp
bmdzIGluIHVzZS1kZWYgYW5hbHlzaXMgYmVjYXVzZSB1c2UtZGVmIGFuYWx5c2lzIGlzIGJhY2t3
YXJkIGFuYWx5c2lzLgorICAgICAgICBBbmQgYWZ0ZXIgYW5hbHl6aW5nIHVzZS1kZWYgY2hhaW5z
LCBpbiBvcF9zYXZlIC8gb3BfcmVzdW1lLCB3ZSBvbmx5IHNhdmUgLyByZXN1bWUgbGl2ZSByZWdp
c3RlcnMgYXQgdGhlIGhlYWQgb2YgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgKiBBUEkvSlNTY3Jp
cHRSZWYuY3BwOgorICAgICAgICAocGFyc2VTY3JpcHQpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJsZUlu
dGVybmFsKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6IEFkZGVk
LgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAo
cmV0dXJuKToKKyAgICAgICAgKHRocm93KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dHJ5R2V0
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgIChKU0M6
OkV2YWxDb2RlQ2FjaGU6OmlzQ2FjaGVhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8p
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6c3VwZXJCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZv
Ojppc0Fycm93RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6cGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omdl
bmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnN1cGVy
QmluZGluZyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplUGFyYW1l
dGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVWYXJpYWJsZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25F
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0
V2l0aFZhbHVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbmRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclRoaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnN1cGVyQmluZGluZyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3Rl
ckZvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpU
aGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JD
YWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpZaWVsZEV4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJ
bkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZnRs
L0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Rm9yT1NSRW50
cnlKSVRDb2RlOjppbml0aWFsaXplRW50cnlCdWZmZXIpOgorICAgICAgICAqIGZ0bC9GVExGb3JP
U1JFbnRyeUpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzQXRvbSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZnJhbWVSZWdpc3RlckNvdW50Rm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19mdW5j
X2V4cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Om9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpw
cm9wYWdhdGVBcmd1bWVudHNVc2UpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlND
OjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlWWllbGRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNv
dXJjZVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6Y29sbGVjdEZyZWVWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6c2V0SXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0dlbmVyYXRv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAg
ICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNNb2R1bGVQYXJz
ZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VDb2RlS2V5Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5
OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpoYXNoKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6c3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2hUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6
OlNvdXJjZUNvZGVLZXkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZUNv
ZGVLZXk6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpsZW5n
dGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc051bGwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpzdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFt
RXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y2FsbEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6R2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmNwcC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JQcm90b3R5cGU6OkdlbmVyYXRvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JUaGlzTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0dlbmVyYXRvckZ1bmN0aW9uOjpKU0dlbmVyYXRvckZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmF0b3JGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpnZW5lcmF0b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAg
ICAgKiB0ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpz
OgorICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRl
cmF0b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVz
dHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzOgor
ICAgICAgICAoaXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0
b3IpOgorICAgICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzOgorICAgICAgICAo
aXRlcmF0b3IubmV4dCk6CisgICAgICAgIChpdGVyYWJsZS5TeW1ib2wuaXRlcmF0b3IpOgorICAg
ICAgICAoX19jcmVhdGVJdGVyYWJsZU9iamVjdCk6CisgICAgICAgICogdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qczoKKyAgICAgICAg
KGl0ZXJhdG9yLm5leHQpOgorICAgICAgICAoaXRlcmFibGUuU3ltYm9sLml0ZXJhdG9yKToKKyAg
ICAgICAgKF9fY3JlYXRlSXRlcmFibGVPYmplY3QpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItYXJndW1lbnRzLWZyb20tZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZzEp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXgu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkNvY29hKToKKyAgICAgICAgKHRlc3RTeW50
YXguQ29jb2EucHJvdG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXguQ29jb2EpOgorICAg
ICAgICAodGVzdFN5bnRheC5Db2NvYS5vayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jbGFzcy1tZXRob2RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHByb3RvdHlwZS5nZW4pOgorICAgICAgICAoc3RhdGljR2VuKToKKyAgICAgICAgKHNob3Vs
ZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFsLXRoaXMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBKToKKyAgICAgICAgKEMucHJvdG90eXBlLmdlbmVyYXRv
cik6CisgICAgICAgIChDKToKKyAgICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLW5hbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAob2spOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVsYXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvckZ1
bmN0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJldHVybi1iZWZvcmUt
Zmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRCZUl0ZXJhdG9yUmVzdWx0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
dHVybi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAoZ2VuKToKKyAgICAgICAgKHNob3VsZEJlLmcubmV4dCk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qczogQWRkZWQuCisgICAg
ICAgICh1bnJlYWNoYWJsZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAoY2F0Y2gpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVJdGVyYXRvclJlc3VsdCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10YXJnZXQuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXdpdGgtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChCLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQik6Cisg
ICAgICAgIChBLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoQSk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci15aWVsZC1zdGFyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHByb3RvdHlwZS5jYWxsKToKKyAg
ICAgICAgKEFycmF5cyk6CisgICAgICAgIChBcnJheXMucHJvdG90eXBlLlN5bWJvbC5pdGVyYXRv
cik6CisgICAgICAgIChJdGVyYXRvci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChJdGVyYXRv
ci5wcm90b3R5cGUuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAoSXRlcmF0b3IucHJv
dG90eXBlLlN5bWJvbC5pdGVyYXRvcik6CisgICAgICAgIChJdGVyYXRvcik6CisgICAgICAgIChn
ZW4pOgorCiAyMDE1LTEyLTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkyOTE0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2NTlk
ODg3MmI2YjIzMWE5NzdiNTQwZWQ5YjUyZDFiNDRhNGE1M2U4Li42ZGYwZmIxYmY0YTQzMmE4MjQ4
NDMzMDFkMGQxYmVmZGE0NzUxMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEyLTAxICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIElt
cGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5h
YmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVj
dG9yOjpmb3JFYWNoU2V0Qml0KToKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwog
MjAxNS0xMi0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MjkxNC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0M2Vj
ZGRkYzJlODE0NDdlYThkODQ5M2E1MmVkNWUxMTE4M2JmZGE2Li45OWYyZTNmYzdhNDc4ZGQ5MGFm
ZjQ3NjAxZjhjNjE1MWM0NWQ1YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUt
MTItMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gSW1wbGVtZW50IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3Jz
IGFuZCBlbmFibGUgdGhpcyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OgorCiAyMDE1LTEyLTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkyOTE0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDM4MzdhZDBiMTgxYTk0MzE0NGFiMzY3Y2ZkMDkzYWQ0NDJhMjcxMDIuLjAzMWNhNDVk
NGFhMDgzOWQ1MjAxNWUxZGY0NDU4NGRlYjhkYzMxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0xMi0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBm
b3IgRVM2IEdlbmVyYXRvcnMgYW5kIGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWc6CisKIDIwMTUtMTItMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTI5
MTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggYzY4MjMxYTYxYjkxODRmNjUzN2FmZDI1ODRkNDNlY2U4ODQwNDBm
ZS4uODQwODcxMzY4YjRhNGU4YmRlMTk2N2M1OTk0NzliODRkNjcwNWQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE1LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBw
b3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNS0xMi0wMSAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE5MjkxNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRS
ZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXgg
M2I3Yjc2YmYzYTQ0NGM5MjFiZTk3M2M1NzZjMTlmNjkyZThkMjMyZC4uMmYzNzQyMzAwOTdiNTA4
MjU4M2Y4NDQyN2I5MjU3OTM3ZDMwOTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1NjcmlwdFJlZi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VTY3JpcHQo
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsK
ICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwg
c291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0g
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlLCAKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAg
ICBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjYWUz
Y2QyZDZlNDAyYWJjN2U1ZDE1ZDcyYmMwNDFhM2E5YzdjNDBjLi43ZWVlY2ZlNDA5MzI5NzA5NmNj
Mzk4YzUyZGZiMzg2ZWYwZDY0YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC01NzYsNiArNTc2LDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMK
ICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKKyAg
ICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2V0
dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0lu
ZGV4aW5nVHlwZS5jcHAKQEAgLTYxNSw2ICs2MTksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVO
VElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogICAgIHJ1bnRpbWUvSlNF
bnZpcm9ubWVudFJlY29yZC5jcHAKICAgICBydW50aW1lL0pTRnVuY3Rpb24uY3BwCisgICAgcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTc1MCw2ICs3NTUsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJy
b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwCiAgICAgcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKQEAgLTEyMDksNiArMTIxNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0
b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlQ
cm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dsb2JhbE9i
amVjdC5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCBlMTc3YWZjYjU1NDU0MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRk
YTY0M2NhYjcxYjc3YTVkMTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBA
IC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJPWFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVO
Q1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9F
UzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dF
TkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRP
UlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWDsKIEVOQUJMRV9DT05U
RU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzc1OGEzNjM2NGQ5N2MzNTgzYzkxNmYz
ZjNkOTg1YTQ4NzdmOTJjNi4uNzY4ZWJhYTYyOTc3MmY2ZGVkNzk4YTdlNmQ3ZjgxZGVlMGViNmU4
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg0LDYg
Kzg0LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlw
dENvcmUpL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzIFwKQEAgLTEx
OSw2ICsxMjAsNyBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgRGF0ZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclByb3RvdHlwZS5s
dXQuaCBcCisgICAgR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggXAogICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oIFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggOWEyMDZhMDdjMmI1NTI5ZWRiYWIwM2Q5ZmFmMGY0
ZGU4NjQ4YzRhOC4uNjJkMjFkMjkyOTZhYzAzYzBiMWY0NjQyYmExN2ViNjhjMGY1MTRjYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03NTgsNiArNzU4LDEwIEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEZ1bmN0aW9u
UHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVu
Y3Rpb25SYXJlRGF0YS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdlbmVyYXRvckZyYW1lLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yUHJvdG90eXBlLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEluZGV4aW5nVHlwZS5jcHAiIC8+
CkBAIC03OTcsNiArODAxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTRGF0ZU1hdGguY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU0Z1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTR2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAiIC8+
CkBAIC05NDcsNiArOTUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xEYXRlQ29uc3RydWN0b3IubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRGF0ZVByb3RvdHlwZS5sdXQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFcnJvclBy
b3RvdHlwZS5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSGVhZGVyRGV0ZWN0aW9uLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4KQEAgLTE1MjEsNiAr
MTUyNyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUGFyc2VyVG9rZW5z
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcUmVzdWx0VHlwZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VQcm92aWRlckNhY2hlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aCIgLz4KQEAgLTE2MDcsNiArMTYxNCwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRv
clByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5l
cmF0b3JUaGlzTW9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZW5lcmljQXJndW1lbnRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyaWNPZmZzZXQuaCIgLz4KQEAgLTE2NjYsNiArMTY3OCw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQzMkFycmF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRmxvYXQ2NEFycmF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHZW5lcmF0b3JGdW5jdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOTUx
YzNjNWMxNDc4OTVhN2U1MjcyNzEyZDZkMTg4NTQzYTMyMmFhNC4uYjkwMGFmMDNlOWU2NTViOWE4
NDVlNGVhYWExZDFkNzFkOGFiNDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjY5LDYgKzY2OSwxOCBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxGdW5jdGlvblJhcmVEYXRhLmNwcCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxHZW5lcmF0b3JQcm90b3R5cGUuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxHZXR0ZXJTZXR0ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzUwLDYgKzc2Miw5IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRnVuY3Rpb24uY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCI+CisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjYyNCw2ICsyNjM5LDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmgiPgogICAgICAgPEZp
bHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlS2V5LmgiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxTb3VyY2VQcm92aWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0yODI1LDYgKzI4NDMsMjEgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRnVuY3Rpb25SYXJlRGF0YS5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxHZW5lcmF0b3JGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxHZW5lcmF0b3JUaGlzTW9kZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxH
ZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CkBAIC0yOTMwLDYgKzI5NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0Z1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNHbG9iYWxP
YmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTMyOTQsNiArMzMzMCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcRXJyb3JQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5E
ZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xHZW5lcmF0b3JQcm90b3R5cGUubHV0
LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xI
ZWFkZXJEZXRlY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2OGI5
NTAyMmQxNTY3ZTViMWZlNTEwM2M4YjQ0OTc4ZDk1ZDE5ZmNmLi4zMzliMzQwNGE4YjY5ZTY2OWNi
YTJjYmU5N2ExMDhlZGY5YzVhMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTIwOCw2ICsxMjA4LDE5IEBACiAJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmNwcCAqLzsg
fTsKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1
bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkxMUMwMjRBMTMw
MDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcw
Qjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OworCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5
MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsK
KwkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTYx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTcwQjc5
MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODgxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTgxQzAyNEEyOTAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVy
YXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlB
MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvclRoaXNNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovOyB9
OworCQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEQxQzAy
NDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MERDM0UwOTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDcx
QjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzBEQzNF
MEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MERDM0UwODFCMkRGMkM3MDAwNTQyOTkg
LyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJs
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBERTlB
MDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLzsgfTsKQEAgLTMyODcsNiAr
MzMwMCwyMCBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODUxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxODgxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MTg5MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvclRoaXNNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyYXRvclRoaXNNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
Qjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4RDFDMDI0NDYyMDAyNDgxRTIgLyog
SlNHZW5lcmF0b3JGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0dlbmVyYXRvckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGVLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzBCNzkxOEYxQzAyNDRFQzAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlw
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MERDM0UwNzFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MERDM0UwODFCMkRGMkM3MDAwNTQy
OTkgLyogSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBE
RTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTExJbnRBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTExNiw2ICs1MTQzLDcgQEAKIAkJCQk5OTZCNzMwODFCRDlGQTJDMDAzMzFCODQg
LyogRGF0ZUNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4
NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcw
MDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBNUVBNzEwRDE5RjZERjgx
MDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCkBA
IC01MjQ0LDYgKzUyNzIsNyBAQAogCQkJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1
bHRUeXBlLmggKi8sCiAJCQkJMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNvdXJjZUNvZGUu
Y3BwICovLAogCQkJCTY1RTg2NkVFMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VDb2RlLmggKi8s
CisJCQkJNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLywKIAkJ
CQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovLAogCQkJ
CTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICovLAogCQkJCUU0
OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLywKQEAg
LTUzNzMsNiArNTQwMiwxNSBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5j
dGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5j
dGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVu
Y3Rpb25SYXJlRGF0YS5oICovLAorCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgKi8sCisJCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBCNzkxODcxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3
MEI3OTE4ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAq
LywKKwkJCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCAqLywKKwkJCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBl
LmggKi8sCisJCQkJNzBCNzkxOEIxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclRoaXNNb2Rl
LmggKi8sCiAJCQkJMEZFMDUwMTExQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMu
aCAqLywKIAkJCQkwRkUwNTAxMjFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaCAqLywKIAkJCQkwRkUwNTAxMzFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY09mZnNl
dC5oICovLApAQCAtNTQ3Miw2ICs1NTEwLDggQEAKIAkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYw
RjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8q
IEpTRnVuY3Rpb24uaCAqLywKIAkJCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5j
dGlvbklubGluZXMuaCAqLywKKwkJCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5l
cmF0b3JGdW5jdGlvbi5jcHAgKi8sCisJCQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCAqLywKIAkJCQkwRjJCNjZDNDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovLAogCQkJCTBGMkI2
NkM1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oICovLApAQCAtNjU4Niw2ICs2NjI2LDcgQEAKIAkJCQlBNzVFRTlCMDE4QUFCN0Uy
MDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggKi8sCiAJCQkJNDFERUExMzExQjlGMzE1NDAwNkQ2
NUREIC8qIEJ1aWx0aW5VdGlscy5oICovLAogCQkJCUE3QTk3OUM0MThCRThEOUUwMDJDMzczMyAv
KiBGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKKwkJCQk3MEI3OTE4RjFDMDI0NEVDMDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzVBMUI2NUQ5QTMwMDlEQjFF
RiAvKiBHbG9iYWxPYmplY3QuanMgKi8sCiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFCODQ0
QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCkBAIC03MDAy
LDYgKzcwNDMsNyBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFs
TG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBE
RkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyog
REZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTMxQzAyNEEyODAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1
MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMw
MEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAq
LywKQEAgLTcwNTIsNiArNzA5NCw3IEBACiAJCQkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8q
IERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTA4NTYx
OUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQy
IC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjczLDYgKzczMTYsNyBAQAogCQkJCUE1MEU0
QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJj
ZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAv
KiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIx
NzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0ExN0FEQjVGMzAw
NUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzAwLDYgKzczNDQsNyBA
QAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYwIC8q
IEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUw
M0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRD
b3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKQEAgLTc0NDMsNiArNzQ4OCw3IEBACiAJCQkJMUEy
OEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBs
YXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0
ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQy
QTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZG
QjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90
eXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDc5LDYgKzc1MjUsNyBAQAogCQkJCUZFMTg3QTAy
MUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0NjBDRjAwNjAx
RjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzkxMzU1MUI3OTRG
OEEwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzOTEz
NTYxQjc5NEY4RjAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmggaW4gSGVhZGVycyAqLywKQEAg
LTc2NTIsNiArNzY5OSw3IEBACiAJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3
RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5RDFD
MDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBT
ZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzY4NCw2ICs3NzMyLDcgQEAKIAkJCQlC
QzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOUExQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvclRo
aXNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyog
U3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1
M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAw
NTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKQEAgLTg3MDUsNiArODc1
NCw3IEBACiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDZGMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MEI3OTE5QjFDMDI0QTQ2MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZD
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04NzMxLDYgKzg3ODEsNyBAQAogCQkJCTBGNzY2RDI4
MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkU0MjM4OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkx
RTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyog
SlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04ODY4LDYgKzg5MTksNyBA
QAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEI3OTE5ODFDMDI0QTI5MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDBBNDg0MUE5MDUxQUYw
MEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzczMDhDMUMw
QkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtOTAxNiw2ICs5MDY4LDcgQEAKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRp
czg2X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlG
RiAvKiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVC
RTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNzBCNzkxOTYx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVu
bGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MTQyRTU1MUI3OTczQzAw
MEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTkwMjQsNiArOTA3Nyw3IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5
RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVn
aXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgxNmI0YTVkMzBi
NTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMuLmE5ZTY5YmVhNmVlYWU1NzhiOTJkOTg5ZTFl
ODkxOTFhMzM0ODk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9
IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9n
cmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2Rl
LAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgZXJyb3IsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IsCiAgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3Rv
cktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHMKICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1l
KTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgZHVtbXlURFpWYXJpYWJsZXMsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkp
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwg
a2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1t
eVREWlZhcmlhYmxlcywgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25F
eGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkp
OwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
M2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpA
QCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIDI1LjMuMy4zIEdlbmVyYXRvclJlc3VtZSAoIGdlbmVyYXRvciwgdmFs
dWUgKQorLy8gMjUuMy4zLjQgR2VuZXJhdG9yUmVzdW1lQWJydXB0KGdlbmVyYXRvciwgYWJydXB0
Q29tcGxldGlvbikKK2Z1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyBHZW5lcmF0b3JT
dGF0ZS4KKyAgICBjb25zdCBDb21wbGV0ZWQgPSAtMTsKKyAgICBjb25zdCBFeGVjdXRpbmcgPSAt
MjsKKworICAgIC8vIFJlc3VtZU1vZGUuCisgICAgY29uc3QgTm9ybWFsTW9kZSA9IDA7CisgICAg
Y29uc3QgUmV0dXJuTW9kZSA9IDE7CisgICAgY29uc3QgVGhyb3dNb2RlID0gMjsKKworICAgIGxl
dCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0IGRvbmUgPSBmYWxz
ZTsKKyAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7CisKKyAgICBpZiAodHlwZW9mIHN0YXRlICE9
PSAnbnVtYmVyJykKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQg
YmUgYSBnZW5lcmF0b3IiKTsKKworICAgIGlmIChzdGF0ZSA9PT0gRXhlY3V0aW5nKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOworCisgICAg
aWYgKHN0YXRlID09PSBDb21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKHJlc3VtZU1vZGUgPT09IFRo
cm93TW9kZSkKKyAgICAgICAgICAgIHRocm93IHNlbnRWYWx1ZTsKKworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICAgICAgaWYgKHJlc3VtZU1vZGUgPT09IFJldHVybk1vZGUpCisgICAgICAgICAg
ICB2YWx1ZSA9IHNlbnRWYWx1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1dGluZzsKKyAgICAgICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJh
dG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAg
ICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOworICAg
ICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNo
IChlcnJvcikgeworICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBs
ZXRlZDsKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB7IGRvbmUsIHZhbHVlIH07Cit9CisKK2Z1bmN0aW9uIG5leHQodmFsdWUpCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgdmFsdWUs
IC8qIE5vcm1hbE1vZGUgKi8gMCk7Cit9CisKK2Z1bmN0aW9uIHJldHVybih2YWx1ZSkKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCB2YWx1
ZSwgLyogUmV0dXJuTW9kZSAqLyAxKTsKK30KKworZnVuY3Rpb24gdGhyb3coZXhjZXB0aW9uKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMs
IGV4Y2VwdGlvbiwgLyogVGhyb3dNb2RlICovIDIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA1NGRmZDE2
OGNhNjAwZWJlZjEzNTgwNDMyYzc3ZTI1YWQ0NDRhZDBjLi41OTYwNjRjNDA2ODI0OTc4MDg5YzQ2
NDNmMWMzZGZiZDA1MzRiOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTksNiArNTksNyBAQCBzdGF0aWMg
Ym9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFy
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0
YW5jZToKKyAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBmNmM4OWE5ZDRhZDJmNjM3ODU4NzM0NzAx
NjUxM2IxNDczMGU1MzcyLi40M2Q3MDEyNDE5NmRkMzYyY2M2NDRmOTNhMjFmOWY4MWU4N2JiMzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCkBAIC05MCw2ICs5MCw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hf
c3RyaW5nIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
ZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1
bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
Z2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19hcnJvd19mdW5jX2V4cCIsICJsZW5ndGgiIDogNSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCkBAIC0xMzAsNyAr
MTMyLDkgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvYWRfYXJyb3dmdW5jdGlvbl90
aGlzIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQi
LCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIs
ICJsZW5ndGgiOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5n
dGgiLCAibGVuZ3RoIjogMyB9CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9s
ZW5ndGgiLCAibGVuZ3RoIjogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIs
ICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxl
bmd0aCIgOiAzIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAppbmRleCBjNzdhYmVhYTI5MjA5ZTMyOTkxM2NkOTRjZmFkNzUxNTE5YmQ5OWYxLi43MjI4YjAz
MzM2NmM3YTY3YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVu
Y3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVm
KQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiBy
ZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAg
ICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vz
c2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTkg
KzExNiwxOSBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIC8vIGZpcnN0IGFkZCBpdCB0
byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVm
KS4KICAgICAKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2Rl
QmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29k
ZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24q
LCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0
ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhj
b2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIo
b3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgLy8gSWYg
d2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJs
ZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVk
IGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFu
ZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkpIHsKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAg
IGNvZGVCbG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5z
aWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJn
ZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAK
LSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ss
IGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAg
cmVzdWx0LnNldChvdXQpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgp
CiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMg
PSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQg
bnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkr
KykgewogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFti
eXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtp
bGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jh
c2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVk
IGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggY2JiODk0ODZlMTRjMDVmMjg0
NzRjZmQyYWJkYTc0ZTkxMGNhMjhkYi4uZmUwMjZmYWFmOWVjYjkyMjRhZTNkYWEwY2E2MjU1YTVm
OWFmYWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwpAQCAtNzEsNyArNzEsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qZXFfbnVsbDoKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAg
ICBjYXNlIG9wX2RlYzoKLSAgICBjYXNlIG9wX2luYzogeworICAgIGNhc2Ugb3BfaW5jOgorICAg
IGNhc2Ugb3BfcmVzdW1lOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjUsNiArMTI2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAgY2FzZSBvcF9n
ZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNf
ZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNTMsNiArMTU1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfdW5z
aWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVf
c2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAt
MjM0LDYgKzIzNywyMiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJn
ICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CisgICAgICAgIGZv
ciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7
CisgICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1l
cmdlUG9pbnRCeXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9j
ayA9IHN1Y2Nlc3NvcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2NrKTsKKyAgICAgICAgbWVyZ2VQ
b2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI0MSw3ICsyNjAsNyBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKQEAgLTI1Niw2ICsyNzUsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoKICAg
ICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgorICAgIGNh
c2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAg
IGNhc2Ugb3BfcmV0OgpAQCAtMzE2LDYgKzMzNiw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
CiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2Fz
ZSBvcF9uZXdfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CisgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Fycm93X2Z1
bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxs
X3ZhcmFyZ3M6CkBAIC0zOTIsNyArNDE0LDE1IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KQogICAg
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9
CisgICAgfQorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJs
b2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOworICAgICAgICBibG9jay0+c3VjY2Vzc29y
cygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5ZTEzODZlM2QzMmQ2MWRi
YTlmODE5Y2VjOTdhNzAwMjNjOWI4ZjNmLi4wYWI3ODFjZTc1YzdmN2EwNzgwNmIwMGZjYjEyNTc2
YmY5NTU2MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCkKICAgICAgICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7
ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIs
CiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUo
KSksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNp
emUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICBtX251bVBhcmFtZXRlcnMsIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOworICAgICAgICBtX251bVBhcmFtZXRlcnMs
IG1fbnVtQ2FsbGVlTG9jYWxzLCBtX251bVZhcnMpOwogICAgIGlmIChuZWVkc0FjdGl2YXRpb24o
KSAmJiBjb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgb3V0LnByaW50ZigiOyBs
ZXhpY2FsIGVudmlyb25tZW50IGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgp
KTsKICAgICBvdXQucHJpbnRmKCJcbiIpOwpAQCAtNjgwLDYgKzY4MCwxOCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkg
PCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAK
KyAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2Nh
bHM6XG4iKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZFtpXTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9
ICIsIGkpOworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiXG4iKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfSB3aGlsZSAoaSA8IG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKKyAgICB9CisKICAg
ICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xMzAzLDYgKzEzMTUsMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVk
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBm
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9uZXdfYXJyb3dfZnVuY19leHA6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CkBAIC0xMzIwLDYgKzEzNDAsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2NhbGw6IHsKICAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5r
SW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTA4LDYgKzE1MzYsMjcgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIs
IGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAg
ICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CisgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCkt
PnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAicmVzdW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAo
b3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNjcyLDcg
KzE3MjEsNyBAQCBjbGFzcyBQdXRUb1Njb3BlRmlyZURldGFpbCA6IHB1YmxpYyBGaXJlRGV0YWls
IHsKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KG90
aGVyLm1fZ2xvYmFsT2JqZWN0KQogICAgICwgbV9oZWFwKG90aGVyLm1faGVhcCkKLSAgICAsIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKG90aGVyLm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQorICAgICwgbV9u
dW1DYWxsZWVMb2NhbHMob3RoZXIubV9udW1DYWxsZWVMb2NhbHMpCiAgICAgLCBtX251bVZhcnMo
b3RoZXIubV9udW1WYXJzKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90aGVyLm1faXNDb25zdHJ1
Y3RvcikKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0xNzI5LDYgKzE3
NzgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3Rh
bnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOworICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgbV9oZWFwLT5t
X2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMTczOSw3ICsxNzg5LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgIDogSlNDZWxsKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9nbG9iYWxPYmpl
Y3Qoc2NvcGUtPmdsb2JhbE9iamVjdCgpLT52bSgpLCB0aGlzLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCkpCiAgICAgLCBtX2hlYXAoJm1fZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApCi0gICAgLCBtX251
bUNhbGxlZVJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
CisgICAgLCBtX251bUNhbGxlZUxvY2Fscyh1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHMpCiAgICAgLCBtX251bVZhcnModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtVmFycykKICAg
ICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQog
ICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTE5MDksNiArMTk1OSw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJl
ZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKKyAgICAvLyBC
b29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KKyAgICBWZWN0b3I8c2l6
ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworCiAgICAgUmVmQ291bnRlZEFycmF5PElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CkBAIC0yMTk3LDYg
KzIyNTAsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgaW50
IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCisgICAgICAgICAg
ICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ICsgMSk7CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTIyMDgsNiArMjI3MCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0
cnVjdGlvbnMgPSBXVEY6Om1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAorICAgIC8vIFBlcmZvcm0gYnl0
ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2
ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgorICAgIGlm
ICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkgeworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsKKyAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0
aGlzKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQu
Z3Jvdyhjb3VudCk7CisgICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
MDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAg
ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0
cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUg
aW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGlu
c3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNz
ZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMjIzMSw3ICsyMzA3LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9oZWFwKCZtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwKQotICAgICwgbV9udW1DYWxsZWVSZWdp
c3RlcnMoMCkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBtX251bVZhcnMoMCkK
ICAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkKGZhbHNlKQpAQCAtMzA1OCw2ICszMTM0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1Rv
Rml0KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRo
ZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8g
dGhlc2UgdGFibGVzLgogfQpAQCAtNDAyOSw3ICs0MTA2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZh
bGlkYXRlKCkKICAgICAKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5n
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KDApOwogICAgIAotICAgIGlmIChsaXZlQXRI
ZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkgeworICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMoKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KG1fbnVtQ2FsbGVlTG9jYWxzKSkgewogICAgICAgICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7
CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9uZyBudW1iZXIgb2YgYml0cyBpbiByZXN1bHQhXG4i
KTsKICAgICAgICAgZGF0YUxvZygiICAgIFJlc3VsdDogIiwgbGl2ZUF0SGVhZCwgIlxuIik7CkBA
IC00MDM3LDcgKzQxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAgICBl
bmRWYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgIH0KICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX251bUNhbGxlZVJlZ2lzdGVyczsgaS0tOykgeworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bnVtQ2FsbGVlTG9jYWxzOyBpLS07KSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChsaXZlQXRI
ZWFkLmdldChpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IGMxZGYxODdjMTIyMGQyZjdmMDMyNGEyZDI1ZjliODNjMDUyZDgyZWMuLjNjYmU3NWM0
OTc4MTAxOTM4ODBjM2E1YjFiOTk1OTMwNTAwYWE5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0Jh
Zy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtMTQxLDYgKzE0Miw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJh
bWV0ZXJzOyB9CiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSk7CiAKKyAg
ICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7
IH0KKwogICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBh
cmFtZXRlcnM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1ldGVycyk7IH0K
IApAQCAtNjU0LDYgKzY1NywxOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3
aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRh
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4
XTsgfQogCisgICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KKyAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwor
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRl
eF07CisgICAgfQorICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7
CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2lu
ZGV4XTsKKyAgICB9CisKICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2Fj
aGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04NTUsNyArODcwLDcgQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcmVt
YWluaW5nIG1lbWJlcnMgcHJpdmF0ZS4KIAogICAgIGludCBtX251bUxvY2FsUmVnaXN0ZXJzRm9y
Q2FsbGVlU2F2ZXM7Ci0gICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAgIGludCBtX251
bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGJvb2wgbV9pc0NvbnN0cnVj
dG9yIDogMTsKICAgICAKQEAgLTkwMCw2ICs5MTUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1w
VGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXM7CiAKKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQ7CisKICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmgKaW5kZXggNjI1MjFmYzY1MjhjNWEyZTdkNGVhZjQzODU4YzA2Y2VlN2M3YWVkZC4uODM3MDNj
ZmE5MjJjYzYyNzEyODVmNTkzOGUyYTgyMGY4YmVkYjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZUtleS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KQEAgLTQ0LDIzICs0NSwyOSBAQAogCiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQorICAgICAg
ICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3Vy
Y2VDb2RlJiBldmFsU291cmNlLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgSlNTY29wZSogc2Nv
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0NhY2hlYWJsZShpblN0cmljdENvbnRl
eHQsIGV2YWxTb3VyY2UsIHNjb3BlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICBpZiAoaXNDYWNoZWFibGUoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBz
Y29wZSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWluU3RyaWN0Q29udGV4dCk7CisgICAg
ICAgICAgICAgICAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5KGV2YWxTb3VyY2UsIFN0cmlu
ZygpLCBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIHRoaXNURFpNb2RlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5nZXQoc291cmNlQ29kZUtleSkuZ2V0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2
YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9v
bCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBjb25zdCBTb3VyY2VD
b2RlJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2Nv
cGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwot
ICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQs
IHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFs
U291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCAmdmFyaWFibGVzVW5kZXJURFop
OwogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgaWYg
KGlzQ2FjaGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2Fj
aGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKQotICAgICAgICAgICAgICAgIG1fY2FjaGVN
YXAuc2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+KGV4
ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOworICAgICAgICAgICAgaWYgKGlzQ2Fj
aGVhYmxlKGluU3RyaWN0Q29udGV4dCwgZXZhbFNvdXJjZSwgc2NvcGUpICYmIG1fY2FjaGVNYXAu
c2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFpblN0
cmljdENvbnRleHQpOworICAgICAgICAgICAgICAgIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtl
eShldmFsU291cmNlLCBTdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RXZhbFR5cGUsIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCB0
aGlzVERaTW9kZSk7CisgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoc291cmNlQ29kZUtl
eSwgV3JpdGVCYXJyaWVyPEV2YWxFeGVjdXRhYmxlPihleGVjLT52bSgpLCBvd25lciwgZXZhbEV4
ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIGV2YWxFeGVjdXRhYmxlOwogICAgICAgICB9CkBAIC04MCwxNyArODcsMTcgQEAKICAgICAg
ICAgICAgIHJldHVybiBzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBzY29w
ZS0+aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpIHx8IHNjb3BlLT5pc1ZhclNjb3BlKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWFibGUoYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlYWJsZShib29sIGluU3RyaWN0Q29u
dGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIElmIGV2YWwoKSBpcyBjYWxsZWQgYW5kIGl0IGhhcyBhY2Nl
c3MgdG8gYSBsZXhpY2FsIHNjb3BlLCB3ZSBjYW4ndCBzb3VuZGx5IGNhY2hlIGl0LgogICAgICAg
ICAgICAgLy8gSWYgdGhlIGV2YWwoKSBvbmx5IGhhcyBhY2Nlc3MgdG8gdGhlICJ2YXIiIHNjb3Bl
LCB0aGVuIHdlIGNhbiBjYWNoZSBpdC4KICAgICAgICAgICAgIHJldHVybiAhaW5TdHJpY3RDb250
ZXh0IAotICAgICAgICAgICAgICAgICYmIGV2YWxTb3VyY2UubGVuZ3RoKCkgPCBPcHRpb25zOjpt
YXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpIAorICAgICAgICAgICAgICAgICYmIHN0
YXRpY19jYXN0PHNpemVfdD4oZXZhbFNvdXJjZS5sZW5ndGgoKSkgPCBPcHRpb25zOjptYXhpbXVt
RXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aCgpCiAgICAgICAgICAgICAgICAgJiYgaXNDYWNoZWFi
bGVTY29wZShzY29wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhD
YWNoZUVudHJpZXMgPSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+PiBFdmFsQ2FjaGVNYXA7CisgICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VDb2RlS2V5LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1
dGFibGU+LCBTb3VyY2VDb2RlS2V5SGFzaCwgU291cmNlQ29kZUtleUhhc2hUcmFpdHM+IEV2YWxD
YWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA5
MjE0NGY4OWZiZDQ1MGZlODIwNTAwYzJhMDk2OWI1MGIxMDJhMTVkLi4yNjAyYmU3YzRmYmVjZTlk
ZWE1MDIxOGZlMTRiNTY1MWZiNDdiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMjYsMjEgKzI2LDI4IEBACiAjaWZuZGVmIEV4
ZWN1dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAogCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRp
b24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCisvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUlu
Zm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNF
dmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dG
dW5jdGlvbikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9y
VGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVl
ZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwg
bV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihp
c0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVu
Y3Rpb24pCisgICAgICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQotICAgICAgICAsIG1faXNBcnJvd0Z1
bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShwYXJz
ZU1vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOworICAgICAgICBBU1NFUlQobV9zdXBl
ckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOworICAgICAg
ICBBU1NFUlQobV9nZW5lcmF0b3JUaGlzTW9kZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2Vu
ZXJhdG9yVGhpc01vZGUpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOyB9CkBAIC00OCw4ICs1NSwxMCBAQCBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9y
VGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlTW9kZTsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0
aW9uIDogMTsKQEAgLTU3LDggKzY2LDEwIEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAg
dW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgdW5zaWdu
ZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rvcktp
bmQgOiAyOwotICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25l
ZCBtX3N1cGVyQmluZGluZyA6IDE7CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGQ2MGZkZjdkM2NmMzYwZTNl
YzE2OTg3NzlhYmU2YjllYjkwNmQ1MTQuLjJiYmYzMTM0NDU2YTlhZTUyYTYxOTI4YmM0YWUwNzEz
NWVhNjFlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAg
ICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Yg
b3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQu
YXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBjMTE0YjliNTdkMTQ0
ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2Li44N2U4MjMzZjFmZTNhOGJlYzQwMjMwZDI5OGIw
OWU2ZGZmOWEzODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2Rl
VHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCiAgICAgOiBCYXNlKCp2
bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1WYXJzKDApCi0gICAgLCBtX251bUNhbGxlZVJlZ2lz
dGVycygwKQorICAgICwgbV9udW1DYWxsZWVMb2NhbHMoMCkKICAgICAsIG1fbnVtUGFyYW1ldGVy
cygwKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKCkpCkBAIC02NSwxMCArNjUsMTIgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGluZm8uaXNB
cnJvd0Z1bmN0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmZvLmdlbmVyYXRvclRoaXNNb2RlKCkpKQorICAgICwgbV9zdXBlckJpbmRpbmco
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uc3VwZXJCaW5kaW5nKCkpKQogICAgICwgbV9maXJz
dExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01B
WCkKKyAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkpCiAgICAgLCBtX2ZlYXR1cmVz
KDApCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3Vu
dCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBmYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAwMDE2NWI4NjFmMGY4M2NmLi5i
Y2EyYzA0YWNhNDM4MjkyMTc1Njk1OGJhYTY4ZGIzMGU4ZjEzNWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0
eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUg
IlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtMTE2LDcgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQXJyb3dGdW5jdGlvbjsgfQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29w
ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxTY29wZUNoYWluOyB9CiAKQEAgLTIw
Miw2ICsyMDQsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXNNb2RlPihtX2dlbmVyYXRvclRoaXNNb2RlKTsg
fQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAgdm9pZCBzaHJpbmtU
b0ZpdCgpCiAgICAgewpAQCAtMjMyLDcgKzIzNiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNh
cHR1cmVkVmFyczsKLSAgICBpbnQgbV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgaW50IG1fbnVt
Q2FsbGVlTG9jYWxzOwogCiAgICAgLy8gSnVtcCBUYWJsZXMKIApAQCAtMzg3LDEyICszOTEsMTQg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25l
ZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOworICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhp
c01vZGUgOiAxOworICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKIAogICAgIHVuc2ln
bmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVk
IG1fZW5kQ29sdW1uOwogCisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENv
ZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDZkYTE4NTliM2FkMmQxYzY1ZDhhNTNmZjExMzdlMWU0
N2U5ZDU5YjYuLjNmNDk0ODg1YWY0OWMyOGUyNmY0OTdkNjc1ZjY0YTE2YzliOWFmOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBACiBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgIFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAg
VW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2lu
ZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAg
IEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5G
dW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBl
eGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJp
Y3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBBU1NFUlQoaXNGdW5jdGlv
blBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAg
JnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBlcnJvciwgbnVsbHB0cik7CisgICAgICAgICZ2bSwg
c291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBleGVj
dXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBu
dWxscHRyKTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgZXhlY3V0YWJsZS0+
cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQg
PSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0g
ICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rp
b24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1
dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBpc0Fycm93RnVuY3Rpb24pKTsKKyAgICAgICAgRXhl
Y3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2
YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qs
IGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29u
c3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVyYXRvclRoaXNNb2RlKCksIGV4ZWN1dGFi
bGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUpKTsKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3Vs
dCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERa
VmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBp
ZiAoZXJyb3IuaXNWYWxpZCgpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJp
ZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdl
bmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcykKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRl
bnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtOTks
NyArOTksOCBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBt
X2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKLSAgICAsIG1faXNBcnJvd0Z1bmN0
aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQorICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ2VuZXJhdG9yVGhpc01vZGUpKQorICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKIHsKICAg
ICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUt
PmNvbnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2Fw
KHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKQEAgLTE4MCw3ICsxODEsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxD
b2RlKAogCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAKLSAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBl
cnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBzd2l0Y2ggKHNwZWNpYWxp
emF0aW9uS2luZCkgewogICAgIGNhc2UgQ29kZUZvckNhbGw6CkBAIC0xOTYsNyArMTk3LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVu
bGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMs
IHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
CiAgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBlcnJvciwgaXNBcnJvd0Z1bmN0aW9u
KTsKKyAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7CiAgICAgCiAgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IGQ4ZTgyMjkzOTBlNTc3Y2I0ODBmYjBlOTI5M2Y0MWJhNDJkOWMxZjguLmM4YmJhMGFjMzJiZTQz
N2ZmYjVkZjNlM2Y5ZTA1YjA0NzhhNTM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RB
YmlsaXR5LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC02NSwxMCArNjYsMTAgQEAgY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAot
ICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisg
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2Rl
LCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6
Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsK
ICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CkBAIC04Miw2ICs4Myw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlv
bk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25N
b2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0
cnVjdG9yS2luZCk7IH0KKyAgICBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdlbmVyYXRvclRoaXNNb2RlPihtX2dlbmVyYXRv
clRoaXNNb2RlKTsgfQorICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogCiAgICAg
dW5zaWduZWQgdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRGdW5jdGlvbk5hbWVTdGFydDsgfQogICAgIHVuc2lnbmVkIHVubGlua2VkQm9keVN0YXJ0
Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEJvZHlTdGFydENvbHVtbjsgfQpAQCAt
OTUsNyArOTgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCAKLSAgICAgICAgUGFyc2Vy
RXJyb3ImLCBib29sKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwog
CiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU09iamVjdComIGV4Y2VwdGlvbiwgCkBAIC0xMjUsMTAgKzEyOCw5IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAh
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3Bl
VERaVmFyaWFibGVzOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQXJyb3dGdW5jdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYp
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3Qg
U291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSwgR2VuZXJhdG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKICAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNh
bGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1OCw3ICsxNjAsOCBAQCBjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2ln
bmVkIG1fY29uc3RydWN0QWJpbGl0eTogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2lu
ZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUK
LSAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgdW5zaWduZWQgbV9nZW5l
cmF0b3JUaGlzTW9kZSA6IDE7CisgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDQxYTY0YzlhNTBhZjM4MTc3MjM4N2ZkZTY2NWVjNDEyMzk3MmU4MGQuLjQ0NWQzZDVj
ZDRjMDY0NjU3ZTYxMjI4ODMwODY1ZjlmY2YyYWUwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0z
Miw4ICszMiwxMCBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCkBAIC0yMjcsOSArMjI5LDMzIEBAIFBhcnNlckVycm9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsKICAgICBi
b29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
IHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgYm9vbCBzaG91bGRD
YXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9j
ay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gZnVuY3Rpb25Ob2RlLT51
c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworCisgICAgLy8gR2VuZXJh
dG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2ls
bCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAg
ICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOworCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVu
dHMpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIu
IEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMi
LgorICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNo
b3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgorICAgICAgICAvLyBUbyB3b3Jr
YXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEg
d3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5l
cmF0b3IuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhl
bGxvKCkpCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHJldHVybiB7CisgICAg
ICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisg
ICAgICAgIC8vICAgICAgICAgICAgeworICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVu
dHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFy
Z3VtZW50cy4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAg
ICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICB9CisgICAgICAgIHNo
b3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChzaG91
bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCiAgICAgICAgIGZ1bmN0aW9uTm9kZS0+dmFyRGVjbGFy
YXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKICAgICAKQEAgLTI1NCwxNCAr
MjgwLDMzIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
YWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldElu
ZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgCisKKyAgICBpbml0aWFsaXplUGFyYW1ldGVycyhw
YXJhbWV0ZXJzKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBl
bWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdl
bmVyYXRvcidzIHN0YXRlLgorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFy
YW1ldGVyc1sxXTsKKyAgICAgICAgaWYgKGdlbmVyYXRvclRoaXNNb2RlKCkgPT0gR2VuZXJhdG9y
VGhpc01vZGU6OkVtcHR5KQorICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3RoaXNS
ZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRjaF9pbW0gYmFzZWQgb24gQGdl
bmVyYXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRpbmUgc3R5bGVkIGdlbmVyYXRv
ciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gV2hlbiBjYWxsaW5nIGBuZXh0KClgLCB3ZSB3
b3VsZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGluc3RlYWQgb2YganVtcGluZyBi
YXNlZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KKyAgICAgICAgLy8gSXQncyBz
dWl0YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlubGluZXMgb25lIGBuZXh0YCBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBiZWdpbkdlbmVyYXRvcihnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIEluaXRpYWwgc3RhdGUuCisgICAgICAg
IGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgfQorCiAgICAgaWYgKGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKSB7CisgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlv
bk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0
dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXND
YXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAg
ICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9j
YWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChz
aG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKSB7CiAgICAgICAgIG1fbGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICAgICAgLy8gV2UgY2FuIGFsbG9jYXRlIHRoZSAi
dmFyIiBlbnZpcm9ubWVudCBpZiB3ZSBkb24ndCBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJl
c3Npb25zLiBJZiB3ZSBoYXZlCkBAIC0yNzEsMTkgKzMxNiw2IEBAIFBhcnNlckVycm9yIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNh
bEVudmlyb25tZW50KHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CiAgICAgfQogCi0gICAgLy8g
TWFrZSBzdXJlIHRoZSBjb2RlIGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVy
cywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlc3RydWN0
dXJpbmcgYXJlIG5vdGVkLgotICAgIG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgp
ICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgotICAgIG1fdGhpc1JlZ2lzdGVyLnNl
dEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4KCkpOyAvLyB0aGlzCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKS5maXJzdDsKLSAgICAgICAgaWYgKHBh
dHRlcm4tPmlzUmVzdFBhcmFtZXRlcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9yZXN0UGFyYW1ldGVyKTsKLSAgICAgICAgICAgIG1fcmVzdFBhcmFtZXRlciA9IHN0YXRpY19j
YXN0PFJlc3RQYXJhbWV0ZXJOb2RlKj4ocGF0dGVybik7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gRmln
dXJlIG91dCBzb21lIGludGVyZXN0aW5nIGZhY3RzIGFib3V0IG91ciBhcmd1bWVudHMuCiAgICAg
Ym9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7CiAgICAgaWYgKGZ1bmN0aW9u
Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgewpAQCAtNDc2LDcgKzUwOCwzNiBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KIAogICAgIG1fbmV3
VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKLSAgICBpZiAoIWNvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCkpIHsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
QXJyb3dGdW5jdGlvblRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGU6IHsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
IC8vIEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2Cisg
ICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKKworICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdp
c3Rlcik7CisgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGU6IHsKKyAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3Rs
eSBiZWZvcmUgaGVyZS4KKyAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNV
bmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKICAg
ICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgZW1pdE1vdmUobV9uZXdU
YXJnZXRSZWdpc3RlciwgJm1fdGhpc1JlZ2lzdGVyKTsKICAgICAgICAgICAgIGlmIChjb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCkBAIC00OTIsOSArNTUzLDgg
QEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbk5v
ZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICAgICAgZW1p
dExvYWRBcnJvd0Z1bmN0aW9uVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBi
ZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNj
b3BlU3RhY2soKSIgaXMgY2FsbGVkCkBAIC03OTksNiArODU5LDIyIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplTmV4dFBhcmFtZXRlcigpCiAgICAgcmV0dXJuICZw
YXJhbWV0ZXI7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVQYXJhbWV0
ZXJzKEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBNYWtlIHN1cmUg
dGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBwYXJhbWV0ZXJzLCBhbmQgbWFr
ZSBzdXJlIHRoYXQgcGFyYW1ldGVycworICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBhcmUg
bm90ZWQuCisgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8g
cmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgoaW5p
dGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvIHBh
dHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0OworICAgICAgICBpZiAocGF0dGVybi0+aXNS
ZXN0UGFyYW1ldGVyKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Jlc3RQYXJh
bWV0ZXIpOworICAgICAgICAgICAgbV9yZXN0UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8UmVzdFBh
cmFtZXRlck5vZGUqPihwYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbml0
aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgIH0KK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6aW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIpOwpAQCAtODI2LDE3ICs5MDIsMTcgQEAgVW5pcXVlZFN0cmluZ0ltcGwqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjp2aXNpYmxlTmFtZUZvclBhcmFtZXRlcihEZXN0cnVjdHVyaW5nUGF0dGUKIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1JlZ2lzdGVyKCkKIHsKLSAgICBtX2NhbGxl
ZVJlZ2lzdGVycy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVSZWdpc3Rl
cnMuc2l6ZSgpKSk7Ci0gICAgaW50IG51bUNhbGxlZVJlZ2lzdGVycyA9IG1heDxpbnQ+KG1fY29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywgbV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsK
LSAgICBudW1DYWxsZWVSZWdpc3RlcnMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tB
bGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKLSAgICBtX2NvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgPSBudW1DYWxsZWVSZWdpc3RlcnM7Ci0gICAgcmV0dXJu
ICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CisgICAgbV9jYWxsZWVMb2NhbHMuYXBwZW5kKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlTG9jYWxzLnNpemUoKSkpOworICAgIGludCBu
dW1DYWxsZWVMb2NhbHMgPSBtYXg8aW50PihtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMs
IG1fY2FsbGVlTG9jYWxzLnNpemUoKSk7CisgICAgbnVtQ2FsbGVlTG9jYWxzID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bUNhbGxlZUxvY2Fs
cyk7CisgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzID0gbnVtQ2FsbGVlTG9jYWxz
OworICAgIHJldHVybiAmbV9jYWxsZWVMb2NhbHMubGFzdCgpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpyZWNsYWltRnJlZVJlZ2lzdGVycygpCiB7Ci0gICAgd2hpbGUgKG1fY2FsbGVl
UmVnaXN0ZXJzLnNpemUoKSAmJiAhbV9jYWxsZWVSZWdpc3RlcnMubGFzdCgpLnJlZkNvdW50KCkp
Ci0gICAgICAgIG1fY2FsbGVlUmVnaXN0ZXJzLnJlbW92ZUxhc3QoKTsKKyAgICB3aGlsZSAobV9j
YWxsZWVMb2NhbHMuc2l6ZSgpICYmICFtX2NhbGxlZUxvY2Fscy5sYXN0KCkucmVmQ291bnQoKSkK
KyAgICAgICAgbV9jYWxsZWVMb2NhbHMucmVtb3ZlTGFzdCgpOwogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6bmV3QmxvY2tTY29wZVZhcmlhYmxlKCkKQEAgLTE5MTUsNyArMTk5
MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZVZhcmlhYmxlKAogICAgICAgICB2
YXJPZmZzZXQgPSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9j
a2VyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YXJLaW5kID09IFZhcktpbmQ6OlN0
YWNrKTsKLSAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkpOworICAgICAgICB2YXJPZmZzZXQgPSBWYXJP
ZmZzZXQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVMb2NhbHMuc2l6ZSgpKSk7CiAg
ICAgfQogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCAwKTsKICAgICBz
eW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgcHJvcGVydHkuaW1wbCgpLCBuZXdFbnRyeSk7CkBAIC0y
MzEyLDEyICsyMzg4LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0QXNz
ZXJ0KFJlZ2lzdGVySUQqIGNvbmRpdGlvbiwgaW50IGxpbmUpCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KQogewogICAgIHNpemVf
dCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBtX3N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIuY3JlYXRlVGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiArIDMpOworICAg
IG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKGRzdC0+aW5kZXgoKSwgYmVnaW4g
KyAzKTsKIAogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7IAot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCi0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIHJldHVybiBkc3Q7CkBAIC0yNDgxLDIwICsyNTU3
LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJheVdpdGhTaXpl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRz
dCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uKQotewotICAgIHJldHVybiBlbWl0TmV3
RnVuY3Rpb25JbnRlcm5hbChkc3QsIG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1
bmN0aW9uKGZ1bmN0aW9uKSkpOwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCkK
LXsKLSAgICBlbWl0T3Bjb2RlKG9wX25ld19mdW5jKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3Rl
cigpLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaW5kZXgpOwotICAgIHJl
dHVybiBkc3Q7Ci19Ci0KIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UmVn
RXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKiByZWdFeHApCiB7CiAgICAgZW1pdE9wY29kZShv
cF9uZXdfcmVnZXhwKTsKQEAgLTI1MDMsMTMgKzI1NjUsMjUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqIHJlZ0V4
cCkKICAgICByZXR1cm4gZHN0OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBmdW5jLCBP
cGNvZGVJRCBvcGNvZGVJRCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBCYXNlRnVuY0V4cHJOb2RlKiBmdW5j
KQogewotCi0gICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCB8fCBvcGNvZGVJ
RCA9PSBvcF9uZXdfYXJyb3dfZnVuY19leHApOwotICAgIAogICAgIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBmdW5jdGlvbiA9IGZ1bmMtPm1ldGFkYXRhKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBt
X2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworCisg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBvcF9uZXdfZnVuY19leHA7CisgICAgc3dpdGNoIChmdW5j
dGlvbi0+cGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
V3JhcHBlckZ1bmN0aW9uTW9kZTogeworICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXJy
b3dfZnVuY19leHA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB9CiAgICAgCiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0yNTIyLDE3ICsy
NTk2LDE4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkNvbW1vbihS
ZWdpc3RlcklEKiBkc3QsIEJhc2VGdW5jRXhwck5vZGUqCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVu
Y0V4cHJOb2RlKiBmdW5jKQogewotICAgIGVtaXROZXdGdW5jdGlvbkNvbW1vbihkc3QsIGZ1bmMs
IG9wX25ld19mdW5jX2V4cCk7CisgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihk
c3QsIGZ1bmMpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBB
cnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsKKyAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAg
Ym9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpICYm
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBpZiAoaXND
bGFzc0NvbnN0cnVjdG9yKQorICAgIGlmIChpc0NsYXNzQ29uc3RydWN0b3IgfHwgZ2VuZXJhdG9y
VGhpc01vZGUoKSA9PSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGVtaXRURFpD
aGVjayh0aGlzUmVnaXN0ZXIoKSk7CiAgICAgCi0gICAgZW1pdE5ld0Z1bmN0aW9uQ29tbW9uKGRz
dCwgZnVuYywgb3BfbmV3X2Fycm93X2Z1bmNfZXhwKTsKKyAgICBlbWl0TmV3RnVuY3Rpb25FeHBy
ZXNzaW9uQ29tbW9uKGRzdCwgZnVuYyk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjU1MCw2
ICsyNjI1LDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVs
dENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RyCiAgICAgcmV0dXJuIGRzdDsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbikKK3sKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0
aW9uKSk7CisgICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3
X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1
bmMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChpbmRleCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBj
YWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAg
ICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM3NzMsNiAr
Mzg2MSwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yTmV4
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JOZXh0V2l0aFZhbHVl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVl
LCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKK3sKKyAgICB7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0
ZXJhdG9yLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CisgICAgICAgIENhbGxBcmd1bWVudHMgbmV4
dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMSk7CisgICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yKTsKKyAgICAgICAgZW1pdE1vdmUobmV4dEFy
Z3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgIGVtaXRDYWxsKGRz
dCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0
eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRl
cmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOworICAg
ICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGRz
dDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0
ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQogewog
ICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CkBAIC0zODY4LDQgKzM5NzQsMjI4
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJl
Z2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpCiAgICAgZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7
CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQq
IGFyZ3VtZW50KQoreworICAgIFJlZlB0cjxMYWJlbD4gbWVyZ2VQb2ludCA9IG5ld0xhYmVsKCk7
CisgICAgc2l6ZV90IHlpZWxkUG9pbnRJbmRleCA9IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNp
emUoKTsKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4KTsKKyAg
ICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0aWFsIHNlcXVlbmNlLgorICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxkUG9pbnRJbmRleCAtIDE7Cisg
ICAgZW1pdFNhdmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAg
ICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKKyAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCks
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
Cit7CisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgIGVtaXRP
cGNvZGUob3Bfc2F2ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVn
aXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KQoreworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CisgICAgZW1pdE9wY29k
ZShvcF9yZXN1bWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCit7CisgICAg
ZW1pdFlpZWxkUG9pbnQoYXJndW1lbnQpOworCisgICAgUmVmUHRyPExhYmVsPiBub3JtYWxMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOworICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKKworICAgIFJlZlB0cjxMYWJlbD4gdGhyb3dMYWJl
bCA9IG5ld0xhYmVsKCk7CisgICAgZW1pdEVxdWFsaXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKKyAgICAvLyBSZXR1cm4uCisgICAgeworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCk7CisgICAgICAgIGlmIChpc0luRmluYWxseUJsb2NrKCkpIHsKKyAgICAgICAgICAg
IHJldHVyblJlZ2lzdGVyID0gZW1pdE1vdmUobmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVy
LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRQb3BTY29wZXMoc2NvcGVSZWdpc3RlcigpLCAwKTsK
KyAgICAgICAgfQorICAgICAgICBlbWl0UmV0dXJuKHJldHVyblJlZ2lzdGVyLmdldCgpKTsKKyAg
ICB9CisKKyAgICAvLyBUaHJvdy4KKyAgICBlbWl0TGFiZWwodGhyb3dMYWJlbC5nZXQoKSk7Cisg
ICAgZW1pdFRocm93KGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CisKKyAgICAvLyBOb3JtYWwu
CisgICAgZW1pdExhYmVsKG5vcm1hbExhYmVsLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFy
eSgpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JT
eW1ib2wpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMs
IG51bGxwdHIpOworICAgICAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYXJn
dW1lbnQpOworICAgICAgICAgICAgZW1pdENhbGwoaXRlcmF0b3IuZ2V0KCksIGl0ZXJhdG9yLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90
U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8
TGFiZWw+IGxvb3BEb25lID0gbmV3TGFiZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgUmVm
UHRyPExhYmVsPiBuZXh0RWxlbWVudCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0TG9h
ZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgICAgIGVtaXRKdW1wKG5l
eHRFbGVtZW50LmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBsb29wU3RhcnQg
PSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7Cisg
ICAgICAgICAgICBlbWl0TG9vcEhpbnQoKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGVtaXRZaWVsZFBvaW50KHZhbHVlLmdldCgpKTsKKworICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBv
cmFyeSgpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwg
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwor
CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCByZXR1cm5MYWJlbC5nZXQoKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gVGhyb3dNb2RlLgorICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuU2VxdWVuY2UgPSBu
ZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuV2l0aEl0ZXJh
dG9yUmVzdWx0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmV0dXJuSXRlcmF0b3JSZXN1bHQgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAg
ICAvLyBUaHJvdy4KKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gdGhyb3dNZXRob2RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd01ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnRocm93S2V5d29yZCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShlbWl0SXNVbmRlZmluZWQobmV3VGVt
cG9yYXJ5KCksIHRocm93TWV0aG9kLmdldCgpKSwgdGhyb3dNZXRob2RGb3VuZC5nZXQoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IuZ2V0KCksIG5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFs
KCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC4iKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHRocm93TWV0aG9kRm91bmQuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlz
LCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUodGhyb3dBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdE1vdmUodGhyb3dBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdENhbGwocmV0dXJuSXRlcmF0
b3JSZXN1bHQuZ2V0KCksIHRocm93TWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHRo
cm93QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChyZXR1cm5XaXRoSXRlcmF0
b3JSZXN1bHQuZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8v
IFJldHVybi4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuTGFiZWwuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiByZXR1
cm5NZXRob2RGb3VuZCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwg
cmV0dXJuTWV0aG9kLmdldCgpKSwgcmV0dXJuTWV0aG9kRm91bmQuZ2V0KCkpOworCisgICAgICAg
ICAgICAgICAgICAgIGVtaXRNb3ZlKHZhbHVlLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcChyZXR1cm5TZXF1ZW5jZS5nZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybk1ldGhvZEZvdW5kLmdldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRo
aXMsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShyZXR1cm5Bcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRDYWxsKHJldHVybkl0
ZXJhdG9yUmVzdWx0LmdldCgpLCByZXR1cm5NZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5v
ZGUtPmRpdm90RW5kKCkpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRv
IHJldHVybldpdGhJdGVyYXRvclJlc3VsdC4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwocmV0dXJuV2l0aEl0ZXJhdG9yUmVzdWx0LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuSXRl
cmF0b3JSZXN1bHRJc09iamVjdCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgcmV0dXJuSXRlcmF0b3JS
ZXN1bHQuZ2V0KCkpLCByZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKworICAgICAgICAgICAgICAg
ICAgICBlbWl0TGFiZWwocmV0dXJuSXRlcmF0b3JSZXN1bHRJc09iamVjdC5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuRnJvbUdlbmVyYXRvciA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCByZXR1cm5JdGVyYXRvclJlc3VsdC5nZXQoKSwgcHJvcGVydHlOYW1lcygp
LmRvbmUpLCByZXR1cm5Gcm9tR2VuZXJhdG9yLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BT
dGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkZyb21H
ZW5lcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5n
ZXQoKSwgcmV0dXJuSXRlcmF0b3JSZXN1bHQuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gcmV0dXJuU2VxdWVuY2Uu
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVyblNl
cXVlbmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpc0luRmluYWxseUJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UG9wU2Nv
cGVzKHNjb3BlUmVnaXN0ZXIoKSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRSZXR1cm4o
dmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE5v
cm1hbC4KKyAgICAgICAgICAgICAgICBlbWl0TGFiZWwobm9ybWFsTGFiZWwuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGVtaXRNb3ZlKHZhbHVlLmdldCgpLCBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbWl0TGFiZWwobmV4dEVsZW1lbnQu
Z2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRJdGVyYXRvck5leHRX
aXRoVmFsdWUodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCB2YWx1ZS5nZXQoKSwgbm9kZSk7
CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5
KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXAobG9vcFN0YXJ0
LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbWl0TGFiZWwobG9v
cERvbmUuZ2V0KCkpOworICAgIH0KKworICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1
ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUuZ2V0KCk7
Cit9CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KGludDMyX3Qgc3RhdGUpCit7CisgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0ZSkpOworICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBj
b21wbGV0ZWRTdGF0ZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0
b3JTdGF0ZUxhYmVsKCkKK3sKKyAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0gbmV3TGFiZWwoKTsK
KyAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwuZ2V0KCkpOworICAgIGVt
aXRMYWJlbChsYWJlbC5nZXQoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2lu
R2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQoreworICAgIGJlZ2luU3dpdGNoKHN0YXRlLCBT
d2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKK3sKKyAgICBTd2l0Y2hJbmZvIHN3
aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7CisgICAgbV9zd2l0Y2hDb250
ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworCisgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5i
eXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpOworICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9
IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVt
cFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgIGludDMyX3Qg
c3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7CisgICAganVtcFRhYmxl
Lm1pbiA9IDA7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOworICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZp
bGwoMCk7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIg
dGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KKyAgICAgICAgLy8g
dGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCisgICAgICAgIEFT
U0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKKyAgICAgICAg
anVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hB
ZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNmFiMzkwZWJhYTE2MDdiYzEyMWQ5ODk2ODVlMTJhMTQ3ZGJh
Y2I3My4uMGVhNDlhNDJjNmE4ODM5ZDUzMzAxNTIyODJmZTZiYjNmMjJmZDcxNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBCeXRlY29kZUdlbmVyYXRvcl9oCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNs
dWRlICJMYWJlbC5oIgpAQCAtMjgwLDYgKzI4MSw4IEBACiAKICAgICAgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQog
ICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CisgICAgICAgIEdlbmVyYXRvclRoaXNN
b2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmdlbmVy
YXRvclRoaXNNb2RlKCk7IH0KKyAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogCiAgICAgICAgIFBh
cnNlckVycm9yIGdlbmVyYXRlKCk7CiAKQEAgLTI5Nyw2ICszMDAsOCBAQAogCiAgICAgICAgIFJl
Z2lzdGVySUQqIHNjb3BlUmVnaXN0ZXIoKSB7IHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7IH0KIAor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZWdpc3RlcigpIHsgcmV0dXJuIG1fZ2VuZXJh
dG9yUmVnaXN0ZXI7IH0KKwogICAgICAgICAvLyBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSB0
ZW1wb3JhcnkgcmVnaXN0ZXIuIFJlZ2lzdGVycyByZXR1cm5lZCBieQogICAgICAgICAvLyBuZXdU
ZW1wb3JhcnkgcmVxdWlyZSBhIG1vZGlmaWVkIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50aW5nOiBh
bnkKICAgICAgICAgLy8gcmVnaXN0ZXIgd2l0aCBhIHJlZmNvdW50IG9mIDAgaXMgY29uc2lkZXJl
ZCAiYXZhaWxhYmxlIiwgbWVhbmluZyB0aGF0CkBAIC01MDAsMTAgKzUwNSw4IEBACiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheVdpdGhTaXplKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbGVuZ3RoKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVn
aXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpOwotICAgICAgICB2b2lkIGVtaXROZXdGdW5jdGlvbkNvbW1v
bihSZWdpc3RlcklEKiwgQmFzZUZ1bmNFeHByTm9kZSosIE9wY29kZUlEKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJv
d0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lz
dGVySUQqIGRzdCwgUmVnRXhwKik7CiAKQEAgLTU5OCw2ICs2MDEsNyBAQAogICAgICAgICB2b2lk
IGVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGVycm9yKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXRlcmF0b3JOZXh0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKiBub2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dFdpdGhW
YWx1ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBSZWdpc3RlcklEKiB2
YWx1ZSwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUpOwogICAgICAgICB2b2lk
IGVtaXRJdGVyYXRvckNsb3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc3RQYXJh
bWV0ZXIoUmVnaXN0ZXJJRCogcmVzdWx0LCB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzVG9Ta2lwKTsK
QEAgLTY0NiwxMiArNjUwLDI4IEBACiAgICAgICAgIHZvaWQgYmVnaW5Td2l0Y2goUmVnaXN0ZXJJ
RCosIFN3aXRjaEluZm86OlN3aXRjaFR5cGUpOwogICAgICAgICB2b2lkIGVuZFN3aXRjaCh1aW50
MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2RlKiosIExhYmVs
KiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAorICAgICAgICB2
b2lkIGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbWl0U2F2ZShM
YWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAg
ICAgdm9pZCBlbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOworCisgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
KyAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCk7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOworICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJl
Z2lzdGVySUQqKTsKKyAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJl
bCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzJdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CisgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
NF07IH0KKwogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZVR5cGU7IH0KIAogICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVy
biBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVi
dWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAg
ICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpOyB9CisKKyAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KIApAQCAtNjY5LDYgKzY4OSw3IEBACiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3Bl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7
CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CisgICAgICAg
IHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1
bmNFeHByTm9kZSopOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2Nv
cGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBS
ZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwpAQCAtNzMy
LDcgKzc1Myw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQmIHJlZ2lzdGVyRm9yKFZpcnR1YWxSZWdp
c3RlciByZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyc1tyZWcudG9Mb2NhbCgpXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNbcmVnLnRvTG9jYWwoKV07CiAKICAg
ICAgICAgICAgIGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lzdGVyOwpAQCAtNzU0LDEyICs3NzUsMjIgQEAKICAg
ICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAg
ICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNVbmRlclREWik7CiAKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRv
IFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgorICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwogICAgICAgICAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IG1ldGFkYXRhLT5wYXJzZU1vZGUoKTsKICAgICAg
ICAgICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxp
dHk6OkNhbkNvbnN0cnVjdDsKLSAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRl
ck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUg
fHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEt
PmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFi
aWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisgICAgICAgICAgICBl
bHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFk
YXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAg
ICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0
cnVjdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbWV0YWRhdGEtPnN1cGVyQmluZGluZygp
ID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxp
dHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CisKKyAgICAgICAgICAgIEdl
bmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlID0gR2VuZXJhdG9yVGhpc01vZGU6Ok5v
bkVtcHR5OworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eTsKIAotICAgICAgICAgICAg
cmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5v
ZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwg
dmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwg
aXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWRO
b3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5k
ZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtNzY3LDYgKzc5OCw3IEBACiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVu
dHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zm
c2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3Mo
T3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCog
dGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxl
SG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCisg
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlcnMoRnVuY3Rpb25QYXJhbWV0ZXJzJik7CiAg
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZhckxleGljYWxFbnZpcm9ubWVudChpbnQgc3ltYm9sVGFi
bGVDb25zdGFudEluZGV4KTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRl
clZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKEZ1bmN0aW9uUGFyYW1ldGVycyYsIEZ1
bmN0aW9uTm9kZSosIFN5bWJvbFRhYmxlKiwgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChVbmlxdWVkU3RyaW5nSW1wbCopPiYgY2FwdHVyZXMp
OwogCkBAIC04MDYsNiArODM4LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2Nv
cGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIg
eyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIgeyBudWxscHRyIH07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2VuZXJhdG9yUmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsg
bnVsbHB0ciB9OwpAQCAtODEzLDcgKzg0Niw3IEBACiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFJlZ2lzdGVySUQqLCAxNj4gbV9sb2NhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVSZWdpc3RlcnM7
CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnM7Ci0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxs
ZWVSZWdpc3RlcnM7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9j
YWxsZWVMb2NhbHM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9w
YXJhbWV0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TGFiZWwsIDMyPiBtX2xhYmVsczsK
ICAgICAgICAgTGFiZWxTY29wZVN0b3JlIG1fbGFiZWxTY29wZXM7CkBAIC04MjksNiArODYyLDcg
QEAKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0
U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwogICAg
ICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9u
VmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6
cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5j
dGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1l
bnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2ZWVlNDQyMzNkMDk1OWI4ZDA5ZDUxMzllMDczYmJm
ZmU5ZGUxZDc1Li45OTU2MWJjN2VkNTg4YjZmODBkMGU5YzFjNjY2NTQzZDE2M2E2ZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVj
dC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWdpc3Rl
cklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAo
bV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0
VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZ2VuZXJhdG9yVGhpc01vZGUoKSA9PSBHZW5lcmF0b3JU
aGlzTW9kZTo6RW1wdHkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSkKQEAgLTE3MCwxMiArMTcxLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7
CiB9CiAKLXN0YXRpYyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RG
b3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBSZWdpc3RlcklE
IGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxl
ZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworfQog
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CitzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1
cGVyQmFzZUZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2Vu
ZXJhdG9yKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC0yNTg0LDYgKzI1ODksNyBAQCB2b2lkIFJldHVybk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiAgICAgICAgIGRzdCA9IDA7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
UmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlSW5UYWlsUG9zaXRpb24oZHN0
LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworCiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmls
ZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAg
IHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjk2NiwyNiArMjk3Miw5NSBAQCB2b2lk
IEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3Rh
cnRTdGFydE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNh
bGxGcmFtZSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRP
ZmZzZXQoKSk7Ci0gICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpOwogCi0gICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50
ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9
IDA7CisgICAgc3dpdGNoIChnZW5lcmF0b3IucGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0
ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAg
ICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAg
ICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0
ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4
cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNF
eHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0
PEZ1bmNFeHByTm9kZSo+KGV4cHIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
bmV4dC5nZXQoKSwgZnVuY0V4cHIpOworCisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5k
aW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsK
KyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9t
ZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KIAotICAgIC8vIENoZWNrIGZvciBhIHJldHVybiBz
dGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xlIGJs
b2NrLgotICAgIGlmIChzaW5nbGVTdGF0ZW1lbnQgJiYgc2luZ2xlU3RhdGVtZW50LT5pc0Jsb2Nr
KCkpIHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0
aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7Ci0g
ICAgICAgIGlmIChsYXN0U3RhdGVtZW50SW5CbG9jayAmJiBsYXN0U3RhdGVtZW50SW5CbG9jay0+
aXNSZXR1cm5Ob2RlKCkpCi0gICAgICAgICAgICByZXR1cm5Ob2RlID0gc3RhdGljX2Nhc3Q8UmV0
dXJuTm9kZSo+KGxhc3RTdGF0ZW1lbnRJbkJsb2NrKTsKLSAgICB9CisgICAgICAgIC8vIEZJWE1F
OiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9y
IHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgorICAgICAgICAvLyBC
dXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNs
YXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0
ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorCisgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUsIG5leHQuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5p
dGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdp
c3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUsIGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOwogCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGlj
YWxseSBpbnNlcnQgb25lLgotICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICBSZWdpc3Rl
cklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAsIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJl
dHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBlbWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBw
cm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4gdGhlIHVzZXIncyBzb3VyY2UgY29kZS4KICAgICAg
ICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXR1cm4ocjApOwotICAgICAgICByZXR1cm47CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CisgICAgICAg
IFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRy
dWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOworCisgICAgICAg
ICAgICBSZWZQdHI8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9zdHJpY3RlcSwgY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJl
bC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5n
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHRocm93TGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhn
ZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKKworICAgICAg
ICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5l
ZCgpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgZW1pdFN0YXRlbWVu
dHNCeXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOworCisgICAg
ICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgICAgICBSZXR1cm5Ob2RlKiByZXR1cm5Ob2RlID0gMDsKKworICAgICAgICAvLyBD
aGVjayBmb3IgYSByZXR1cm4gc3RhdGVtZW50IGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjb21w
b3NlZCBvZiBhIHNpbmdsZSBibG9jay4KKyAgICAgICAgaWYgKHNpbmdsZVN0YXRlbWVudCAmJiBz
aW5nbGVTdGF0ZW1lbnQtPmlzQmxvY2soKSkgeworICAgICAgICAgICAgU3RhdGVtZW50Tm9kZSog
bGFzdFN0YXRlbWVudEluQmxvY2sgPSBzdGF0aWNfY2FzdDxCbG9ja05vZGUqPihzaW5nbGVTdGF0
ZW1lbnQpLT5sYXN0U3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudElu
QmxvY2sgJiYgbGFzdFN0YXRlbWVudEluQmxvY2stPmlzUmV0dXJuTm9kZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybk5vZGUgPSBzdGF0aWNfY2FzdDxSZXR1cm5Ob2RlKj4obGFzdFN0YXRlbWVu
dEluQmxvY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJu
IHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgorICAgICAgICBpZiAoIXJldHVybk5v
ZGUpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0
b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocjAs
IFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCk7IC8vIERvIG5vdCBl
bWl0IGV4cHJlc3Npb24gaW5mbyBmb3IgdGhpcyBwcm9maWxlIGJlY2F1c2UgaXQncyBub3QgaW4g
dGhlIHVzZXIncyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgp
ID49IGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9
CiB9CiAKQEAgLTMwMTMsMTEgKzMwODgsMjQgQEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAog
UmVnaXN0ZXJJRCogWWllbGRFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBq
dXN0IGEgc3R1Yi4gV2hlbiBjb21wbGV0aW5nIEVTNiBHZW5lcmF0b3JzLCB3ZSBuZWVkIHRvIGlt
cGxlbWVudCBpdC4KLSAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJh
bCgiTm90IGltcGxlbWVudGVkIHlldC4iKSk7CisgICAgaWYgKCFkZWxlZ2F0ZSgpKSB7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmcgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1l
bnQoKSkgeworICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZy5nZXQoKSwgYXJndW1lbnQoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYXJnID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdFlpZWxkKGFyZy5nZXQoKSk7CisgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IHZhbHVlLmdldCgpKTsKKyAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZyA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJnLmdldCgpLCBh
cmd1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dERlbGVnYXRlWWllbGQoYXJnLmdldCgpLCB0aGlzKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCB2YWx1ZS5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA0
MzllNjIwMDM0YjdmY2RjODE1MDNhNTkxNmUxYjQ0N2Y2YzA2MmFiLi5hMjAyMGE0NGEwMjBkMjg0
ZjU2OWI3ZmQ2NzU1MDA3NDUzOTRlMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEJ5dGVD
b2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TmFOKGdyYXBoLmZyZWV6ZShqc051bWJl
cihQTmFOKSkpCiAgICAgICAgICwgbV9jb25zdGFudE9uZShncmFwaC5mcmVlemUoanNOdW1iZXIo
MSkpKQogICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpCi0gICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKQorICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fs
cykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9udW1QYXNzZWRW
YXJBcmdzKDApCiAgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQpAQCAtMTQxMyw3ICsxNDEz
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAKICAgICBlbnN1cmVMb2NhbHMoCiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsg
MSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIAogICAgIHNpemVfdCBhcmd1
bWVudFBvc2l0aW9uU3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwog
CkBAIC0yOTI3LDcgKzI5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIAogICAgIC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNw
b25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVnaXN0ZXIuCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSAxKS5vZmZzZXQoKTsKKyAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAt
IDEpLm9mZnNldCgpOwogICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsK
ICAgICByZWdpc3Rlck9mZnNldCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAg
IApAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICAKICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNv
cnJlc3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KICAgICAgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCi0gICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIC0gMSkub2Zm
c2V0KCk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1f
bnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09
IG51bWJlck9mUGFyYW1ldGVyczsKICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rm9yQWxsS2lsbHMuaAppbmRleCA1MWFjNTVkNGNhNWY5ZWQ0OThhYjg4OTdjOTZlZDI1OTMzM2Q2
Mjg3Li5mNWY0Y2I1MjM4MGVkYmIzYzlmODk3MTAzMjExMGEwODhjZmQxMjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlQmVmb3JlLCBO
b2RlKiBub2RlQWZ0ZXIsIGNvbnN0CiAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVC
ZWZvcmUgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoYmVmb3JlLmJ5dGVjb2RlSW5kZXgpOwog
ICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQWZ0ZXIgPSBmdWxsTGl2ZW5lc3MuZ2V0
TGl2ZW5lc3MoYWZ0ZXIuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVu
c2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyBy
ZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9
IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAg
ICAgICAgIGlmIChsaXZlQmVmb3JlLmdldChyZWxhdGl2ZUxvY2FsKSAmJiAhbGl2ZUFmdGVyLmdl
dChyZWxhdGl2ZUxvY2FsKSkKICAgICAgICAgICAgICAgICBmdW5jdG9yKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKHJlbGF0aXZlTG9jYWwpICsgc3RhY2tPZmZzZXQpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNDI4ODcwYjFjMmEyNTg3MTVjZDcxNTNi
OGU3OTliZWFlOTJjNGU1Zi4uMTkxMWNmZWVkNjQxOTAzOTZjOGFlNjVmM2E3ZWM0OTc4YTc2NmZh
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzM4LDcgKzczOCw3IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1l
KTsKICAgICAgICAgICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBmdWxsTGl2ZW5lc3MgPSBsaXZl
bmVzc0Zvcihjb2RlQmxvY2spOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBmdWxsTGl2ZW5lc3MuZ2V0TGl2ZW5lc3MoY29kZU9yaWdpblB0ci0+Ynl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyByZWxhdGl2ZUxvY2FsLS07KSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHJlbGF0aXZlTG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzOyByZWxhdGl2ZUxvY2FsLS07KSB7CiAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHJlZyA9IHN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwocmVsYXRpdmVMb2Nh
bCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVwb3J0IGlm
IG91ciBjYWxsZWUgYWxyZWFkeSByZXBvcnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKaW5kZXgg
ZTZjNDIzNWVjNGNhNjgxN2NkMzdlNjk5ODM0Nzg2MDg5ZjJiNmVmYS4uNWU1YTE1MDRjMjRkMDY0
MDRmNzg2YjE3MjJlMmY2MTUwZjhmYWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKQEAgLTkz
LDggKzkzLDggQEAgY2xhc3MgT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAvLyBXZSdkIHJlYWxseSBsaWtlIHRvIHVzZSBhbiB1bnNldCBvcmlnaW4s
IGJ1dCBUaHJlYWRlZENQUyB3b24ndCBhbGxvdyB0aGF0LgogICAgICAgICBOb2RlT3JpZ2luIG9y
aWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgZmFsc2UpOwog
ICAgICAgICAKLSAgICAgICAgVmVjdG9yPE5vZGUqPiBsb2NhbHMoYmFzZWxpbmUtPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKLSAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2Vs
aW5lLT5tX251bUNhbGxlZVJlZ2lzdGVyczsgKytsb2NhbCkgeworICAgICAgICBWZWN0b3I8Tm9k
ZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHMpOworICAgICAgICBmb3IgKGlu
dCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2Fs
KSB7CiAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c0hlYWQgPSB0YXJnZXQtPnZhcmlhYmxlc0F0
SGVhZC5sb2NhbChsb2NhbCk7CiAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSGVhZCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGlu
dCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyArK2xv
Y2FsKSB7CisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9u
dW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzSGVh
ZCA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlm
ICghcHJldmlvdXNIZWFkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKaW5kZXgg
YmU4ZTJhNzkxNDlmNWEyZTMxNDRhZDQ2NGEzNWM2NTRmYzU5OWUwYy4uNjM5MmYxNGE5ODA0Y2Zi
NjkyZTg0YmMzOTAxMjBkMGJhYjdkYmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCkBAIC0xMjMsOSArMTIzLDkgQEAg
dm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAKICAgICB1bnNpZ25l
ZCBudW1WYXJpYWJsZXM7CiAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAg
ICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgVmlydHVh
bFJlZ2lzdGVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2Nh
bCgpICsgMTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxp
bmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZUxvY2Fs
cyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQpLnRvTG9jYWwoKSArIDE7CiAgICAgZWxzZQotICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNl
bGluZUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgICAgIG51bVZhcmlhYmxl
cyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKICAgICAKICAgICAvLyBD
cmF6eSBzcGVjaWFsIGNhc2U6IGlmIHdlJ3JlIGF0IGluZGV4ID09IDAgdGhlbiB0aGlzIG11c3Qg
YmUgYW4gYXJndW1lbnQgY2hlY2sKICAgICAvLyBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGFsbCB2
YXJpYWJsZXMgYXJlIGFscmVhZHkgc2V0IHVwLiBUaGUgcmVjb3ZlcmllcyBzaG91bGQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcApp
bmRleCAyOWYwNWU1MWQ0NjFmZGY2ZTAxNDM4MzE5OWM5MThmNjQxNWU4Y2VhLi4zMDgwZGMzNDUw
OWM3MzMzMjRiODE0M2QyYTk1NGYwOGVkYWYxM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwCkBAIC00NSw5ICs0NSw5IEBA
IEZvck9TUkVudHJ5SklUQ29kZSogRm9yT1NSRW50cnlKSVRDb2RlOjpmdGxGb3JPU1JFbnRyeSgp
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgRm9yT1NSRW50cnlKSVRDb2RlOjppbml0aWFs
aXplRW50cnlCdWZmZXIoVk0mIHZtLCB1bnNpZ25lZCBudW1DYWxsZWVSZWdpc3RlcnMpCit2b2lk
IEZvck9TUkVudHJ5SklUQ29kZTo6aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiB2bSwgdW5zaWdu
ZWQgbnVtQ2FsbGVlTG9jYWxzKQogewotICAgIG1fZW50cnlCdWZmZXIgPSB2bS5zY3JhdGNoQnVm
ZmVyRm9yU2l6ZShudW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsK
KyAgICBtX2VudHJ5QnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUobnVtQ2FsbGVlTG9j
YWxzICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50
cnlKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvck9TUkVudHJ5SklU
Q29kZS5oCmluZGV4IDQ0YWY4Zjk1NzkxYWFhNzhlNmU4MWRmYTY0OWM4NmExNWVhMzQ0ODEuLjlh
ZTk3M2Y0MGQxMmMxNmI4MDljMGM4Y2ExZTM2ZWJhYThlZTM2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JPU1JFbnRyeUpJVENvZGUuaApAQCAtNDYsNyArNDYs
NyBAQCBjbGFzcyBGb3JPU1JFbnRyeUpJVENvZGUgOiBwdWJsaWMgRlRMOjpKSVRDb2RlIHsKICAg
ICBGb3JPU1JFbnRyeUpJVENvZGUoKTsKICAgICB+Rm9yT1NSRW50cnlKSVRDb2RlKCk7CiAgICAg
Ci0gICAgdm9pZCBpbml0aWFsaXplRW50cnlCdWZmZXIoVk0mLCB1bnNpZ25lZCBudW1DYWxsZWVS
ZWdpc3RlcnMpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5QnVmZmVyKFZNJiwgdW5zaWduZWQg
bnVtQ2FsbGVlTG9jYWxzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBlbnRyeUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZW50cnlCdWZmZXI7IH0KICAgICAKICAgICB2b2lkIHNldEJ5dGVjb2RlSW5k
ZXgodW5zaWduZWQgdmFsdWUpIHsgbV9ieXRlY29kZUluZGV4ID0gdmFsdWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKaW5kZXggYWM3MTcxNGY5M2Y1NWFmMjYx
OGM3ZTQyMGE3MWI2NmRlMjExNzY2Ni4uNjAxYjQ2MDk0MDY0YWM2MTNhOThmYTljMjI5Mzg2ZmE2
ZWFkZjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRy
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIH0KICAgICAKICAgICBS
RUxFQVNFX0FTU0VSVCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZM
b2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSkgPT0gYmFzZWxpbmUtPm1fbnVt
Q2FsbGVlTG9jYWxzKTsKICAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHN0YXRp
Y19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCiAgICAgICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZmZXIo
KS0+ZGF0YUJ1ZmZlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5k
ZXggMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBlYi4uNTVkODI5YTJhNjZi
NjI2MDkxNTg0YTczZTExZGJhMDNjMjU2ZWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICAgICB9CiAgICAgY2FzZSBGVExGb3JPU1JF
bnRyeU1vZGU6IHsKICAgICAgICAgUmVmUHRyPEZvck9TUkVudHJ5SklUQ29kZT4gY29kZSA9IGFk
b3B0UmVmKG5ldyBGb3JPU1JFbnRyeUpJVENvZGUoKSk7Ci0gICAgICAgIGNvZGUtPmluaXRpYWxp
emVFbnRyeUJ1ZmZlcihncmFwaC5tX3ZtLCBncmFwaC5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgY29kZS0+aW5pdGlhbGl6ZUVudHJ5QnVmZmVyKGdyYXBo
Lm1fdm0sIGdyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgICAg
ICBjb2RlLT5zZXRCeXRlY29kZUluZGV4KGdyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICBqaXRDb2RlID0gY29kZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkNWIxNDkyYWU3ZjUzZGU2Y2E2NTUx
OWM1NzJlYjYxZWViMzllMzBlLi41NDY5NzFjZThmNTM4YjllMzM1Y2ZmZmIyODQ3MzNiZDk2MTU0
ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE1NSw2
ICsxNTUsNyBAQAogICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwog
ICAgICAgICBib29sIGlzTGl2ZShjb25zdCBKU0NlbGwqKTsKICAgICAgICAgYm9vbCBpc0xpdmVD
ZWxsKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAg
ICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqKTsKICAgICAg
ICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFya2Vk
KGNvbnN0IHZvaWQqKTsKQEAgLTM4OCw3ICszODksNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCogcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQq
IHApCiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkp
OwogICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1iZXIocCk7CkBAIC0z
OTksNyArNDAwLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChh
dG9tTnVtYmVyID49IG1fZW5kQXRvbSkgLy8gRmlsdGVycyBwb2ludGVycyBpbnRvIGludmFsaWQg
Y2VsbHMgb3V0IG9mIHRoZSByYW5nZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQogCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICghaXNBdG9tKHApKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19j
YXN0PGNvbnN0IEpTQ2VsbCo+KHApKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM1NDc1MWNkNzIwZmZmYzEx
ZTE1ZDM1MjU2YjA2Mzc1YzBiNmU4YWMuLjc1ZWQ4Y2Y3YmM0Y2VkNjE5ODc2ZmQ3NmRmMGYwYmFl
NTllYzA2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcApAQCAtMTUzLDcgKzE1MywxNiBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1l
LT5jb2RlQmxvY2soKTsKICAgICBKU1Njb3BlKiBjYWxsZXJTY29wZUNoYWluID0gY2FsbGVyRnJh
bWUtPnVuY2hlY2tlZFIoY2FsbGVyQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkp
LlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29k
ZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCksIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jayA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKTsKKworICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1v
ZGU6OkNoZWNrSWZOZWVkZWQ7CisgICAgaWYgKGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAgIHRoaXNU
RFpNb2RlID0gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrOworICAgIGlmIChjYWxsZXJVbmxpbmtl
ZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSAmJiBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+Z2VuZXJhdG9yVGhpc01vZGUoKSA9PSBH
ZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHkpCisgICAgICAgIHRoaXNURFpNb2RlID0gVGhpc1REWk1v
ZGU6OkFsd2F5c0NoZWNrOworCisgICAgU291cmNlQ29kZSBzb3VyY2VDb2RlKG1ha2VTb3VyY2Uo
cHJvZ3JhbVNvdXJjZSkpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJs
b2NrLT5ldmFsQ29kZUNhY2hlKCkudHJ5R2V0KGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIHNvdXJjZUNvZGUsIHRoaXNURFpNb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgIGlm
ICghZXZhbCkgewogICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
IHsKQEAgLTE3MSw4ICsxODAsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3Qg
aGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCku
ZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gY2FsbGVy
Q29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBUaGlzVERa
TW9kZTo6Q2hlY2tJZk5lZWRlZDsKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZh
bENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBwcm9ncmFtU291cmNlLCBjYWxs
ZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVD
YWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNo
YWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQpAQCAtNDEwLDcgKzQxOCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdp
c3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogICAgIGRhdGFMb2dGKCItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLVxuIik7CiAKLSAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKKyAgICBlbmQgPSBpdCAtIGNvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBpZiAo
aXQgIT0gZW5kKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9ICgqaXQp
LmpzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyZDZmMDJjMmIxZjg5
MDdmM2RmYTdmODk0MDNhZTA4NjMwZDMxYTJhLi5hYjA1ZTgwN2Y2MTk3Mjc0MjFiMTA4ZTM5N2Y1
YTgzM2UxZmI0NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMTUsNiArMjE1
LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X3Jlc3RfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQog
ICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQorICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVn
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGl2KQpAQCAtMjYxLDYgKzI2Myw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklO
RV9PUChvcF9uZXdfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKKyAg
ICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICAgICAgREVGSU5FX09Q
KG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfYXJy
b3dfZnVuY19leHApIAogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAg
REVGSU5FX09QKG9wX25ld19yZWdleHApCkBAIC03NjQsOSArNzY4LDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQogCiB1bnNpZ25lZCBKSVQ6OmZyYW1lUmVn
aXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpID09IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpKTsKKyAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMpID09
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykpKTsKIAotICAg
IHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZvckZyYW1lUG9pbnRlck9mZnNldChjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJh
bWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsKIH0KIAogaW50IEpJVDo6c3RhY2tQb2lu
dGVyT2Zmc2V0Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggNjg1MGY3YWE1MWUxODg4ZTJlNDgzOWJlMTQ1ZWZkMjQ0ZmQ4ODM0Ni4uMmI0NmU4MjU1
ZGJkNjNjMmJkNjc1OTZjNmIwMjUxM2M1YzQ0ZmU2OCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00OTQsNiArNDk0LDggQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0
aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01NDIsNiArNTQ0LDgg
QEAKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
cmVnZXhwKEluc3RydWN0aW9uKik7CkBAIC02NjEsNiArNjY1LDcgQEAKICAgICAgICAgdm9pZCBl
bWl0UmlnaHRTaGlmdChJbnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0V4cHJD
b21tb24oSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0VmFySW5qZWN0aW9uQ2hlY2so
Ym9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAgICAgICAgIHZvaWQgZW1pdFJlc29sdmVD
bG9zdXJlKGludCBkc3QsIGludCBzY29wZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywg
dW5zaWduZWQgZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggZjYwYWU1N2FmZGUzOGRlNjE2YjZhODliODI2ZWY4NDkxNTM0YTNmNS4uMWYzMTE1YTU5
Y2M5NDY2MGExYzNmZThkYTk4NDcyMDU1M2MyMGI2ZCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X3JlZ2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBtX2NvZGVCbG9jay0+cmVnZXhwKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbGF6eUp1bXA7CiAgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC05NzgsMTQgKzk3OCwyNiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7
CiAjZW5kaWYKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisK
KyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3
X2Z1bmMpCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09
IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICB9CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0
aW9uKTsKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQotICAg
IAorCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1
Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CkBA
IC0xMDE4LDExICsxMDMwLDI3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbHNlIAogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uLCByZWdU
MywgcmVnVDIpOwogI2VuZGlmCi0gICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAg
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5l
cmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQog
ICAgIGRvbmUubGluayh0aGlzKTsKIH0KLSAgICAKKwordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Z1
bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1
bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29w
X25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2Fycm93X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7CkBAIC0xNDM0LDYgKzE0NjIsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3Rf
bGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfc2F2ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9yZXN1bWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ4NzNhMWRkZDY1N2EyODk2OGEwZTUx
ZjkwNjM2ZDFkZTJmY2Y4MTYuLmNhZDkzNDY5YzFiY2JkMmI1N2RjYjUyMDIzYWJlOWY3MjNmNzQ0
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiSlNBcnJvd0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCkBAIC05ODcsMjMgKzk4OCw0MiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVB
bmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwg
SlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZT4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1v
bihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgYm9vbCBpc0ludmFsaWRhdGVkKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFi
bGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7
CisgICAgaWYgKGlzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
RnVuY3Rpb25UeXBlOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
LCBzY29wZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRnVuY3Rpb25UeXBlOjpjcmVh
dGUodm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIHNjb3BlKSk7Cit9CisKK2V4dGVybiAiQyIgeworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQogewot
ICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aW5mbygpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZt
LCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBz
Y29wZSkpOworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9u
PihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sK
KyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0
aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHN0YXRpYyBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29s
IGlzSW52YWxpZGF0ZWQpCitFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9uTmV3QXJyb3dG
dW5jdGlvbkNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzSW52YWxp
ZGF0ZWQpCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uRXhlY3V0YWJsZS0+aW5oZXJpdHMoRnVuY3Rp
b25FeGVjdXRhYmxlOjppbmZvKCkpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
OwpAQCAtMTAxOSwxMiArMTAzOSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBzdGF0aWMgb3BlcmF0aW9u
TmV3RnVuY3Rpb25Db21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZQogICAgIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlKQogewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbihleGVjLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0aGlzVmFsdWUsIHRydWUpOworICAgIHJldHVybiBv
cGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uQ29tbW9uKGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRoaXNWYWx1ZSwgdHJ1ZSk7CiB9CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSkKIHsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb24oZXhlYywgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG9w
ZXJhdGlvbk5ld0Fycm93RnVuY3Rpb25Db21tb24oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgdGhpc1ZhbHVlLCBmYWxzZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTYzOGYxNDVjOWQ1
NTc1ZjFjOTUyZTI3NWY1OTRhNzZiMzJhNGI4OC4uMjU0MjU1MDIyOWRhNDFlMWFkZDQ2YjBiMDI1
OGU4ZTQ5OTViOWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTMwMSw2ICszMDEsOCBAQAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Nj
b3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fycm93
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cm93RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwCmluZGV4IGE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFi
NzgwYzMuLmY1OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC0xMzQs
OSArMTM0LDkgQEAgdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9j
ay0+bV9udW1DYWxsZWVMb2NhbHMpID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FscykpKTsKIAotICAgIHJldHVybiByb3VuZExvY2FsUmVnaXN0ZXJDb3VudEZv
ckZyYW1lUG9pbnRlck9mZnNldChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgbWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGxJblJlZ2lzdGVycyk7CisgICAgcmV0dXJuIHJvdW5k
TG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KGNvZGVCbG9jay0+bV9udW1D
YWxsZWVMb2NhbHMgKyBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbEluUmVnaXN0ZXJzKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NjVmMTk3OTUwZTMyM2YwNTY2ZTcy
YzczYjRlZWQ2M2UzYjIwOGM1Li4zNTFhNGM4ZDQ0MmYyZDZjNjhjNGE5MmMzMmYxNmVjNjAyZGE4
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgpAQCAtMjI0LDkgKzIyNSw5IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjCiAgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5k
KTsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFi
bGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3Rl
cnMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAorICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBv
ZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJz
ID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgICAg
ICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKLSAgICAgICAg
ICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycywKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bV9u
dW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxl
ZUxvY2FscywKICAgICAgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkpOwogfQogCkBAIC00NTgs
NyArNDU5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKiBjb2QKICNpZiBMTElOVF9TTE9XX1BBVEhf
VFJBQ0lORwogICAgIGRhdGFMb2dGKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0g
JXAuXG4iLCBleGVjKTsKICAgICBkYXRhTG9nRigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5j
b2RlQmxvY2soKSk7Ci0gICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIGRhdGFMb2dG
KCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlTG9jYWxzKTsKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bVZhcnMpOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTEwNDEsNiArMTA0
MiwxOCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
YmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKICAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBz
Y29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSB8fCBleGVjLT5o
YXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihw
Y1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAg
ICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7
CkBAIC0xMDUyLDYgKzEwNjUsMTcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiAgICAgTExJTlRf
UkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJd
LnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKwor
ICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJy
b3dfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggZTI0NDgyOWZkZDFlMmYxNTA2YTM1ZDEw
YTRlYjgxZmNiZTMyYzUzMS4uMjcxMzI0YjE4NDUzZDcyZGM4Yjc2MTgwYmEwMzA0YWI0NTY1OTU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAg
LTk5LDYgKzk5LDggQEAKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3dp
dGNoX3N0cmluZyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19m
dW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhw
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19h
cnJvd19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Nh
bGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IDVhZDViM2ZjZDczOWQ1NjM5NDkwY2RhY2FmZWNhNmMxNDc1Yjk0MjkuLjU2N2Ni
NThjMTI1Njk3YmNkZTYxN2VjZWMwYzhiMDc4Njk1ZTk3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTY5Nyw3ICs2
OTcsNyBAQCBtYWNybyB2bUVudHJ5UmVjb3JkKGVudHJ5RnJhbWVQb2ludGVyLCByZXN1bHRSZWcp
CiBlbmQKIAogbWFjcm8gZ2V0RnJhbWVSZWdpc3RlclNpemVGb3JDb2RlQmxvY2soY29kZUJsb2Nr
LCBzaXplKQotICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbY29kZUJs
b2NrXSwgc2l6ZQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVMb2NhbHNbY29kZUJs
b2NrXSwgc2l6ZQogICAgIGxzaGlmdHAgMywgc2l6ZQogICAgIGFkZHAgbWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwsIHNpemUKIGVuZApAQCAtMTIyNyw2ICsxMjI3LDEyIEBAIF9sbGludF9v
cF9uZXdfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9v
cF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE0NTgsNiArMTQ2NCwxMSBAQCBfbGxpbnRfb3Bf
bmV3X2Z1bmNfZXhwOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5j
X2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3Bf
bmV3X2Fycm93X2Z1bmNfZXhwOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyb3dfZnVuY19leHApCkBAIC0xNTczLDYgKzE1ODQs
MTggQEAgX2xsaW50X29wX2Fzc2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9z
YXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9z
YXZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc3VtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQorICAgIGRpc3Bh
dGNoKDMpCisKKwogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
aW5kZXggY2U5ODVjYTQ1ZGU5OWU4ZGE1YTU3ZjhiOTNhMzA2NGNhNmYxZDMyNC4uYTkwZGMxYzFj
YzI3OTZkZDEwNGJmNzFlM2U5NzA5M2NlOTI3MmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM0MSw5ICszNDEsMTEgQEAgY2xhc3MgQVNUQnVpbGRl
ciB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9j
YXRpb24sIG51bGxwdHIsIC8qIGRlbGVnYXRlICovIGZhbHNlKTsKICAgICB9CiAKLSAgICBZaWVs
ZEV4cHJOb2RlKiBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGJvb2wgZGVsZWdhdGUpCisgICAgWWllbGRFeHByTm9k
ZSogY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGFyZ3VtZW50LCBib29sIGRlbGVnYXRlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVu
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5v
ZGUobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIFlpZWxkRXhwck5vZGUq
IG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFlpZWxkRXhwck5vZGUobG9jYXRpb24sIGFyZ3Vt
ZW50LCBkZWxlZ2F0ZSk7CisgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0
LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgQ2xhc3NF
eHByTm9kZSogY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJv
bm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKQEAgLTM2NCwxMiArMzY2LDEyIEBA
IGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbikKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9k
ZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAg
ICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENv
bnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5j
dGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgaW5TdHJp
Y3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQs
IG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8pCkBAIC04OTEsNiArODkzLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgewogICAg
ICAgICBub2RlLT5zZXRTdGFydE9mZnNldChvZmZzZXQpOwogICAgIH0KKworCisgICAgdm9pZCBw
cm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNBcmd1bWVudHMoKTsgfQogICAgIAogcHJpdmF0
ZToKICAgICBzdHJ1Y3QgU2NvcGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAppbmRleCBlYTM3NjM5M2I2NDY3YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwLi41YjZkYzQ5
Mzg1ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNl
dENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAg
ICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4o
ZW5kQ29sdW1uKQpAQCAtMTYyLDEwICsxNjIsMTEgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xv
c2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFYK
ICAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQogICAgICAgICAsIG1f
cGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0
Q29udGV4dCkKKyAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihp
c0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKIHsKKyAgICBBU1NFUlQobV9zdXBlckJp
bmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwogICAgIEFTU0VS
VChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1Y2EzNDY2
NGZkZjE2NGFhMzllMWY2MTRkM2VlYmQwZGUwNTE4OWVhLi44ZTlhMjUyZWFkMWZlZTkxNTlmYWZl
MTUzYjdjNzk2MWQ4N2EyYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBA
IC0xODE3LDcgKzE4MTcsNyBAQAogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAg
Q29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgICAgIHZvaWQgZmlu
aXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
TW9kZSk7CiAgICAgICAgIApAQCAtMTg0Miw4ICsxODQyLDggQEAKIAogICAgICAgICBpbnQgc3Rh
cnRTdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAg
ICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0
Q29udGV4dDsgfQorICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KICAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25l
ZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5l
U3RhcnRPZmZzZXQpCkBAIC0xODY5LDggKzE4NjksOCBAQAogICAgICAgICBpbnQgbV9sYXN0TGlu
ZTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICB1bnNpZ25l
ZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7Ci0gICAgICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIApAQCAtMTkzMiw3ICsxOTMy
LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFlpZWxkRXhwck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBZaWVsZEV4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgYm9vbCBkZWxlZ2F0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyYjk1OGI2ZWM2NWUz
YTk1YTAxNmUxYTE0YWY2ZDFmZjQxNGIzYTYxLi5jM2JlODJjNmU5M2Y2YjlmNjdiNWEyY2RjZDc5
NzY2ZWE5YmZiYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgCisgICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1f
c291cmNlKCZzb3VyY2UpCkBAIC0yMTAsNiArMjEwLDcgQEAKICAgICAsIG1fbGFzdEZ1bmN0aW9u
TmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQogICAgICwgbV9wYXJzaW5n
QnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQorICAg
ICwgbV9zdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nKQogICAgICwgbV9kZWZhdWx0Q29uc3RydWN0
b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpNb2RlKHRoaXNU
RFpNb2RlKQogewpAQCAtMjQ5LDcgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlv
bkluZm87Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9k
ZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRl
cnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1
bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0
ZXJzOwogCiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSAmJiAhaGFzRXJyb3IoKSkgewpAQCAtMjczLDggKzI3NywxMiBAQAogICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9u
Qm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChpc01vZHVsZVBh
cnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1v
ZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBD
aGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKQor
ICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBi
b29sIHZhbGlkRW5kaW5nOwpAQCAtMzAxLDcgKzMwOSwxNCBAQAogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IHNjb3BlLT5kZWNsYXJlZFZhcmlhYmxlcygpOwogICAg
IGZvciAoYXV0byYgZW50cnkgOiBjYXB0dXJlZFZhcmlhYmxlcykKICAgICAgICAgdmFyRGVjbGFy
YXRpb25zLm1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQoZW50cnkpOwotICAgIAorCisgICAgSWRlbnRp
ZmllclNldCB1c2VkVmFyaWFibGVzOworICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRW
YXJpYWJsZXMpOworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICh1c2VkVmFyaWFibGVzLmNvbnRh
aW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpKQorICAgICAgICAgICAg
Y29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKKyAgICB9CisKICAgICBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RN
b2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMzExLDEw
ICszMjYsOSBAQAogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7
CiAgICAgaWYgKG1vZGlmaWVkQXJndW1lbnRzKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmll
ZEFyZ3VtZW50c0ZlYXR1cmU7CisKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7Ci0gICAgICAg
IElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKLSAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJp
YWJsZXModXNlZFZhcmlhYmxlcyk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJl
IGNoYW5nZWQgaWYgd2Ugd2FudCB0byBhbGxvdyBidWlsdGlucyB0byB1c2UgbGV4aWNhbCBkZWNs
YXJhdGlvbnMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFi
bGVzKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKG1fdm0sIHZhcmlhYmxlLmdldCgpKTsKQEAgLTQ1OCw2ICs0NzIsNDUgQEAKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRz
TW9kZSBtb2RlKQoreworICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNv
dXJjZUVsZW1lbnRzKCk7CisKKyAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRv
a2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7
CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBpbnQg
cGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworCisgICAg
UGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIGluZm8ubmFtZSA9ICZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKKyAgICBpbmZvLnBhcmFtZXRlcnMg
PSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8uc3RhcnRPZmZz
ZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsK
KyAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUs
IHJlc3VtZSBtb2RlCisKKyAgICB7CisgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JC
b2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOworICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUt
PnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsK
KyAgICAgICAgU3ludGF4Q2hlY2tlciBnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2Fz
dDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgZmFpbElmRmFsc2UocGFyc2VT
b3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBh
cnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9yIik7CisgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRv
ckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CisgICAgfQor
ICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFt
ZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CisK
KyAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbmZvLmVuZE9mZnNldCA9IG1f
dG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29s
dW1uOworCisgICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhw
cihzdGFydExvY2F0aW9uLCBpbmZvKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3Jl
YXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xh
c3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNv
dXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExp
c3RJdGVtKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZl
LCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKIHsKICAgICAvLyBUaGUgZ3JhbW1h
ciBpcyBkb2N1bWVudGVkIGhlcmU6CkBAIC0xNjAwLDE1ICsxNjUzLDE0IEBACiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVu
Y3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVl
QnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBp
bnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBl
IGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0gYm9keVR5cGU7CiAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbjsKICAgICBpZiAoIWlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlv
bk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2lu
ZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRp
bmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYyMCw3ICsxNjcyLDcgQEAKICAgICBlbHNl
CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwg
Q2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
ayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2Ug
Ym9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2Rl
LCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3Ry
dWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE2MzQsOCArMTY4Niwx
MCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gImZ1bmN0aW9uIjsKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZToKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwotICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZToKICAgICAgICAgcmV0dXJuICJnZW5lcmF0b3IiOworICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgorICAgICAg
ICByZXR1cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CkBAIC0xNzE0LDYgKzE3NjgsMzcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCit7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3Jt
YWxQYXJhbWV0ZXJMaXN0KCk7CisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3Np
dGlvbigpOworCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRv
ciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25t
ZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yU3Rh
dGUKKyAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKKyAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVBy
aXZhdGVOYW1lKTsKKyAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5k
aW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3JWYWx1ZSwgMCk7CisKKyAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQorICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1v
ZGVQcml2YXRlTmFtZSk7CisgICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworCisgICAgcmV0dXJuIHBh
cmFtZXRlcnM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25J
bmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBl
ckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9u
RGVmaW5pdGlvblR5cGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9k
ZShtb2RlKSk7CkBAIC0xODI0LDEyICsxOTA5LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBlbmRM
b2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAg
ICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsKLSAgICAgICAgCiAg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5i
b2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAg
ICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5w
YXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9
PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAgICAgICAgY2FjaGVkSW5mby0+
c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgY2FjaGVk
SW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJl
c3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgcG9wU2Nv
cGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBA
IC0xODQzLDcgKzE5MjYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVy
KG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNl
dCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwogCi0gICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb24pCisgICAgICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUpCiAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNC
b2R5QXJyb3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93
RnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uQm9k
eVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAtMTg2NSwxNCArMTk0OCwzMyBA
QCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7
CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKLSAgICAKLSAgICBmdW5j
dGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24s
IHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlv
bkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOworCisgICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1
bmN0aW9uQm9keSA9IFsmXSB7CisgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250
ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0
ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJD
b3VudCwgbW9kZSk7CisgICAgfTsKKworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkgeworICAgICAgICBBdXRvUG9wU2NvcGVSZWYg
Z2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
Qm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5j
dGlvbkJvZHkoKTsKKworICAgICAgICAvLyBXaGVuIGEgZ2VuZXJhdG9yIGhhcyBhICJ1c2Ugc3Ry
aWN0IiBkaXJlY3RpdmUsIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdyYXBwaW5nIGl0IHNob3VsZCBi
ZSBzdHJpY3QgbW9kZS4KKyAgICAgICAgaWYgIChnZW5lcmF0b3JCb2R5U2NvcGUtPnN0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKworICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZ2VuZXJhdG9yQm9keVNjb3BlLT5oYXNEaXJlY3RTdXBl
cigpLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3Ii
KTsKKyAgICAgICAgaWYgKGdlbmVyYXRvckJvZHlTY29wZS0+bmVlZHNTdXBlckJpbmRpbmcoKSkK
KyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBlY3RlZFN1cGVyQmluZGluZyA9PSBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRo
b2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CisKKyAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9k
eVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgp
OwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVu
Y3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9u
SW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNj
b3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBt
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBtb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvck1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbklu
Zm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxp
ZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIici
LCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBu
YW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMTk0MCw3ICsyMDQyLDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGU7CiAjaWYgRU5BQkxFKEVTNl9HRU5FUkFUT1JTKQogICAgIGlmIChjb25zdW1l
KFRJTUVTKSkKLSAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JN
b2RlOworICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGU7CiAjZW5kaWYKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24pKSwg
IkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25J
bmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKQEAgLTIw
OTEsNyArMjE5Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgICAgICAgICAgaWYgKGlzR2Vu
ZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZTsKKyAg
ICAgICAgICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGU7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFyZSBhIGdl
bmVyYXRvciBuYW1lZCAncHJvdG90eXBlJyIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsICJDYW5u
b3QgZGVjbGFyZSBhIGdlbmVyYXRvciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgICAg
ICB9CkBAIC0yNzU3LDcgKzI4NTksNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAKICNpZiBFTkFCTEUoRVM2X0dFTkVS
QVRPUlMpCi0gICAgaWYgKG1hdGNoKFlJRUxEKSkKKyAgICBpZiAobWF0Y2goWUlFTEQpICYmICFp
c1lJRUxETWFza2VkQXNJREVOVChjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3IoKSkpCiAgICAg
ICAgIHJldHVybiBwYXJzZVlpZWxkRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogCkBAIC0y
ODYyLDYgKzI5NjQsNyBAQCBzdHJ1Y3QgTGFiZWxJbmZvIHsKICAgICBmYWlsSWZUcnVlKG1fZnVu
Y3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5v
dCB1c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFyYW1ldGVycyIpOwogCiAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgSlNUZXh0UG9zaXRpb24g
ZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVM
RCkpOwogICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBu
ZXh0KCk7CkBAIC0yODY5LDEzICsyOTcyLDE0IEBAIHN0cnVjdCBMYWJlbEluZm8gewogICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAKICAgICBib29sIGRlbGVn
YXRlID0gY29uc3VtZShUSU1FUyk7CisgICAgSlNUZXh0UG9zaXRpb24gYXJndW1lbnRTdGFydCA9
IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3VtZW50ID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3VtZW50KSB7CiAg
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQotICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdhdGUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uLCBhcmd1bWVudCwgZGVsZWdh
dGUsIGRpdm90U3RhcnQsIGFyZ3VtZW50U3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMzA2Nyw3ICszMTcxLDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAg
ICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
dW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yTW9kZSA6IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
aXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1l
dGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwg
IkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhv
ZE5hbWU7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1ldGhvZExvY2F0
aW9uLCBtZXRob2RJbmZvKTsKQEAgLTMzMjAsNyArMzQyNCw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQogICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICNpZiBF
TkFCTEUoRVM2X0dFTkVSQVRPUlMpCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQotICAgICAgICBw
YXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU7CisgICAgICAgIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKICNl
bmRpZgogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlv
bk5vUmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2Ug
ZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
RXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IDlkOTRlMDdhODA3YjhlZTcyMDMxNDc2MGQ5NTE1NzRkZThmNDk5OGYuLjI2
MmZmOTYzZmE0MGZkOGQ4OTAwYmVlODBmNmNjNGMzZjBlZGM0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgICwgbV9pc0xleGljYWxTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25C
b3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCisgICAg
ICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKICAg
ICAgICAgLCBtX3N3aXRjaERlcHRoKDApCiAgICAgewpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgICwgbV9pc0xleGljYWxTY29wZShyaHMubV9pc0xleGljYWxTY29w
ZSkKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Z1bmN0aW9uQm91bmRh
cnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9k
ZSkKKyAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMubV9oYXNBcmd1bWVudHMpCiAgICAgICAg
ICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgo
cmhzLm1fc3dpdGNoRGVwdGgpCiAgICAgICAgICwgbV9tb2R1bGVTY29wZURhdGEocmhzLm1fbW9k
dWxlU2NvcGVEYXRhKQpAQCAtMjQyLDEwICsyNDQsMTQgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2
b2lkIHNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yTW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
OgogICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
OgorICAgICAgICAgICAgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpOworICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToK
ICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CiAgICAgICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgpAQCAtMjY4LDYgKzI3NCw4IEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgYm9vbCBpc0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lz
RnVuY3Rpb25Cb3VuZGFyeTsgfQogICAgIGJvb2wgaXNHZW5lcmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX2lzR2VuZXJhdG9yOyB9CiAKKyAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQXJndW1lbnRzOyB9CisKICAgICB2b2lkIHNldElzTGV4aWNhbFNjb3BlKCkgCiAg
ICAgeyAKICAgICAgICAgbV9pc0xleGljYWxTY29wZSA9IHRydWU7CkBAIC00NTAsMTYgKzQ1OCwy
MCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAgbV91c2VzRXZhbCA9IHRydWU7CiAKICAg
ICAgICAgewotICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVk
U2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSWRlbnRpZmll
clNldDo6aXRlcmF0b3IgcHRyID0gbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxlcy5iZWdpbigp
OyBwdHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+
bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhp
Y2FsVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAgZm9yIChjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpbXBsIDogbmVzdGVkU2NvcGUtPm1fdXNlZFZhcmlhYmxl
cykgeworICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxl
cy5jb250YWlucyhpbXBsKSB8fCBuZXN0ZWRTY29wZS0+bV9sZXhpY2FsVmFyaWFibGVzLmNvbnRh
aW5zKGltcGwpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIC8vICJhcmd1bWVudHMiIHJlZmVyZW5jZSBzaG91bGQgYmUgcmVzb2x2ZWQgYXQgZnVuY3Rp
b24gYm91ZGFyeS4KKyAgICAgICAgICAgICAgICBpZiAobmVzdGVkU2NvcGUtPmlzRnVuY3Rpb25C
b3VuZGFyeSgpICYmIG5lc3RlZFNjb3BlLT5oYXNBcmd1bWVudHMoKSAmJiBpbXBsID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoKnB0cik7CisKKyAg
ICAgICAgICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKGltcGwpOwogICAgICAgICAgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgYSBkZWNsYXJlZCB2YXJpYWJsZSB0aGF0IGlzIHVzZWQgaW4gYW4g
aW5uZXIgc2NvcGUgdG8gYmUgdGhvdWdodCBvZiBhcyBjYXB0dXJlZCBpZgogICAgICAgICAgICAg
ICAgIC8vIHRoYXQgaW5uZXIgc2NvcGUgaXMgYm90aCBhIGxleGljYWwgc2NvcGUgYW5kIG5vdCBh
IGZ1bmN0aW9uLiBPbmx5IGlubmVyIGZ1bmN0aW9ucyBhbmQgImNhdGNoIiAKICAgICAgICAgICAg
ICAgICAvLyBzdGF0ZW1lbnRzIGNhbiBjYXVzZSB2YXJpYWJsZXMgdG8gYmUgY2FwdHVyZWQuCiAg
ICAgICAgICAgICAgICAgaWYgKHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzICYmIChuZXN0ZWRT
Y29wZS0+bV9pc0Z1bmN0aW9uQm91bmRhcnkgfHwgIW5lc3RlZFNjb3BlLT5tX2lzTGV4aWNhbFNj
b3BlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZXMuYWRk
KCpwdHIpOworICAgICAgICAgICAgICAgICAgICBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcy5h
ZGQoaW1wbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gUHJvcGFnYXRl
IGNsb3NlZCB2YXJpYWJsZSBjYW5kaWRhdGVzIGRvd253YXJkcyB3aXRoaW4gdGhlIHNhbWUgZnVu
Y3Rpb24uCkBAIC01NTAsMTQgKzU2MiwyMiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsKICAgICAg
ICAgbV9pc0Z1bmN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9pc0Z1bmN0aW9uQm91bmRhcnkgPSB0
cnVlOworICAgICAgICBtX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgIHNldElzTGV4aWNh
bFNjb3BlKCk7CiAgICAgICAgIG1faXNHZW5lcmF0b3IgPSBmYWxzZTsKICAgICB9CiAKKyAgICB2
b2lkIHNldElzR2VuZXJhdG9yRnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc2V0SXNGdW5jdGlv
bigpOworICAgICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICB9CisKICAgICB2b2lkIHNl
dElzR2VuZXJhdG9yKCkKICAgICB7CiAgICAgICAgIHNldElzRnVuY3Rpb24oKTsKICAgICAgICAg
bV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgICAgIG1faGFzQXJndW1lbnRzID0gZmFsc2U7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRJc01vZHVsZSgpCkBAIC01NzksNiArNTk5LDcgQEAgc3RydWN0
IFNjb3BlIHsKICAgICBib29sIG1faXNMZXhpY2FsU2NvcGUgOiAxOwogICAgIGJvb2wgbV9pc0Z1
bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7Cisg
ICAgYm9vbCBtX2hhc0FyZ3VtZW50cyA6IDE7CiAgICAgaW50IG1fbG9vcERlcHRoOwogICAgIGlu
dCBtX3N3aXRjaERlcHRoOwogCkBAIC02MjcsNyArNjQ4LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAog
cHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQ
YXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsCisg
ICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBTdXBlckJpbmRpbmcsCiAgICAgICAgIENv
bnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKICAgICB+UGFy
c2VyKCk7CiAKQEAgLTExNTcsNiArMTE3OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VT
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0
b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2Rl
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VT
dGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3Rp
dmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXIm
LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJh
bExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RF
eHBvcnRlZCB9OwpAQCAtMTE5OSw3ICsxMjIxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVC
dWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwg
Y29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBpc0dlbmVyYXRvcik7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIo
VHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBn
ZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIFN1cGVyQmluZGluZyA9IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9k
eSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1
aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJlZUZvcm1hbFBh
cmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250
ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVy
LCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwg
SlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQsIERlY2xh
cmF0aW9uVHlwZSwgRXhwb3J0VHlwZSwgYm9vbCYgZm9yTG9vcENvbnN0RG9lc05vdEhhdmVJbml0
aWFsaXplcik7CkBAIC0xMjI0LDYgKzEyNDYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbklu
Zm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBi
b29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVy
JiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsK
IApAQCAtMTM0OSw2ICsxMzcyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBSZWZQdHI8U291cmNl
UHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3Nv
dXJjZUVsZW1lbnRzOwogICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKKyAgICBTdXBlckJpbmRp
bmcgbV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0b3JLaW5kIG1fZGVmYXVsdENvbnN0cnVj
dG9yS2luZDsKICAgICBUaGlzVERaTW9kZSBtX3RoaXNURFpNb2RlOwogICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgbV92YXJEZWNsYXJhdGlvbnM7CkBAIC0xNDcyLDcgKzE0OTYsNyBAQCBjbGFzcyBQ
YXJzZXIgewogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIFZNKiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpT
UGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsCisgICAgSlNQYXJzZXJTdHJpY3RN
b2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsCiAgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCiAgICAgQ29uc3RydWN0b3JLaW5kIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsCiAgICAgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKQEAgLTE0ODEs
NyArMTUwNSw3IEBAIGNsYXNzIFBhcnNlciB7CiAKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0s
IHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBw
YXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgc3Vw
ZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2Vk
Tm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBw
YXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpAQCAtMTQ5NCw3ICsxNTE4LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNob3Vs
ZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExleGVyPFVDaGFyPj4g
cGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9k
ZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIu
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCmluZGV4IDQ5NTg1Y2JjNjJiNGMzM2VmZGY3YzQ5ZWEyOWJkNzE1NTI4
YmU4ODUuLjQ4NmQ4ZmMwZGFjYzI1YzFkM2IxMTViNDAwMDI3NTE4NjI2OThjMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTQ2LDcgKzQ2LDggQEAK
IAogZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgewogICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwK
LSAgICBHZW5lcmF0b3JNb2RlLAorICAgIEdlbmVyYXRvckJvZHlNb2RlLAorICAgIEdlbmVyYXRv
cldyYXBwZXJGdW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAog
ICAgIE1ldGhvZE1vZGUsCkBAIC02MCw3ICs2MSw4IEBAIGlubGluZSBib29sIGlzRnVuY3Rpb25Q
YXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBzd2l0Y2ggKHBhcnNl
TW9kZSkgewogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6Ci0g
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtODQsNyArODYsOCBAQCBpbmxpbmUg
Ym9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlv
bk1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1vZGU6CisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpAQCAtMTAzLDcgKzEwNiw4
IEBAIGlubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvck1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpTZXR0ZXJNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZDQ5YTdlMTczYjI1MDBkYWZiNWY4NGFhNGMyZTZmNDE2NjQ5ZDAxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNvdXJjZUNvZGVLZXlfaAorI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKKworI2lu
Y2x1ZGUgIlBhcnNlck1vZGVzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2Rl
S2V5IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBl
LCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKKworICAgIFNvdXJjZUNvZGVLZXkoKQorICAg
IHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRp
bk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgICAgICA6
IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAg
ICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5Nb2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1v
ZGUpKQorICAgICAgICAsIG1faGFzaChzdHJpbmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICB7Cisg
ICAgfQorCisgICAgU291cmNlQ29kZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgIDogbV9zb3VyY2VDb2RlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAg
IHsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb2RlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKworICAgIHNpemVfdCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUubGVuZ3RoKCk7IH0KKworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLmlzTnVsbCgpOyB9CisKKyAgICAv
LyBUbyBzYXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBl
eHBlY3RlZCB0aGF0IHNvdXJjZQorICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdz
IHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlQ29kZS50b1N0cmluZygpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9o
YXNoID09IG90aGVyLm1faGFzaAorICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVu
Z3RoKCkKKyAgICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAg
ICAgJiYgbV9uYW1lID09IG90aGVyLm1fbmFtZQorICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0g
b3RoZXIuc3RyaW5nKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNvdXJjZUNvZGUgbV9zb3Vy
Y2VDb2RlOworICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICB1
bnNpZ25lZCBtX2hhc2g7Cit9OworCitzdHJ1Y3QgU291cmNlQ29kZUtleUhhc2ggeworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5
Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEs
IGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitz
dHJ1Y3QgU291cmNlQ29kZUtleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U291
cmNlQ29kZUtleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0
aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29k
ZUtleSYgc291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gU291cmNlQ29kZUtleV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDU0N2U0NGZjOWViZjkxZDY1YWQyNjQ5
MzM2NGRiMzI1MGY3YzMwNmYuLjJjNzcyODUyN2U5NDNjZDY4MmE1MTVlOWI0M2QyZjUwZGIyYjhk
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0xODAsMTAgKzE4MCwxMCBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxk
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAg
Q2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNz
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7
IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
Ym9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFy
c2VNb2RlLCBib29sLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBp
bnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsg
cmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFy
cm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZv
aWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1
bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTM4OSw2ICszODksOCBAQCBj
bGFzcyBTeW50YXhDaGVja2VyIHsKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsg
fQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCisgICAgdm9pZCBwcm9w
YWdhdGVBcmd1bWVudHNVc2UoKSB7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV90b3BCaW5hcnlF
eHByOwogICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNk
YzdjYmVkZjBlLi40OTQ1MjBkYmRmNDI4Yzg2NDBkYjVlMjIzZjAwZTIxZjJmZWNmZmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJs
b2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2Fj
aGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAg
ICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwK
LSAgICAgICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVy
cm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAg
ICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0
aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNh
Y2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4
dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0s
IHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAot
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAg
ICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpAQCAtMTg4LDcgKzE4
OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9u
RXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25z
dHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFi
bGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpW
YXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1l
dGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25z
dHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBlbXB0
eVREWlZhcmlhYmxlcyk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQo
dm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAK
ICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDQ4YzhjZmVmODQ2NDlkOGYwOWMyZmIwYjk0ODgx
MTFlMTY5MzZiZDcuLjliOGMxNTBkZTIwYjg1MzNiMWZkYTNkYWE4OTVkMDZjZGM4OTU3MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlBhcnNl
ck1vZGVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGVL
ZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01Niw3MSArNTcsNiBAQAogY2xh
c3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCi1jbGFzcyBTb3VyY2VDb2Rl
S2V5IHsKLXB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBl
LCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKLQotICAgIFNvdXJjZUNvZGVLZXkoKQotICAg
IHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRp
bk1vZGUgYnVpbHRpbk1vZGUsCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQot
ICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQotICAgICAgICAsIG1fbmFtZShuYW1l
KQotICAgICAgICAsIG1fZmxhZ3MoCi0gICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVUeXBlKSA8PCAzKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1
aWx0aW5Nb2RlKSA8PCAyKQotICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
cmljdE1vZGUpIDw8IDEpCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aGlz
VERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKLSAgICAgICAgOiBtX3NvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
Ci0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0g
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQotCi0gICAgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZS5sZW5ndGgoKTsgfQotCi0gICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUuaXNOdWxsKCk7IH0KLQot
ICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21wdXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJ
dCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCi0gICAgLy8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0
cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4KLSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5nKCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2hhc2ggPT0gb3RoZXIubV9oYXNoCi0gICAgICAgICAgICAmJiBsZW5ndGgoKSA9PSBvdGhl
ci5sZW5ndGgoKQotICAgICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCi0gICAg
ICAgICAgICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCi0gICAgICAgICAgICAmJiBzdHJpbmco
KSA9PSBvdGhlci5zdHJpbmcoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlQ29kZSBt
X3NvdXJjZUNvZGU7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICB1bnNpZ25lZCBtX2ZsYWdzOwot
ICAgIHVuc2lnbmVkIG1faGFzaDsKLX07Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVy
biBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtl
eSYgYSwgY29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07
Ci0KLXN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxTb3VyY2VDb2RlS2V5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVl
RnVuY3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTb3Vy
Y2VDb2RlS2V5JiBzb3VyY2VDb2RlS2V5KSB7IHJldHVybiBzb3VyY2VDb2RlS2V5LmlzTnVsbCgp
OyB9Ci19OwotCiBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKICAgICBTb3VyY2VDb2RlVmFsdWUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCmluZGV4IDQ5NWYyMzU4Nzg2NjVjNDMwNTc4ODFkOGQxYmQ4NDg0MjZhOTliZGEu
LjQ3M2Q1YTQxY2JmNzE5Mzc5Njc3ZmFlMjQ0NTkyNTVjNzgwYjFiNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzksNiAr
MzksNyBAQAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAg
bWFjcm8oRnVuY3Rpb24pIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAogICAgIG1h
Y3JvKEluZmluaXR5KSBcCiAgICAgbWFjcm8oSW50bCkgXAogICAgIG1hY3JvKEpTT04pIFwKQEAg
LTMzMCw2ICszMzEsMTMgQEAKICAgICBtYWNybyhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZs
b2F0MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGdlbmVy
YXRvcikgXAorICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JT
dGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZyYW1lKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9y
VmFsdWUpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9y
UmVzdW1lTW9kZSkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNDkwNjM2ZjIwNGM5ZjY0
YzRjZmM4OGUwZTk3Yzc2ZjczNTU1MGZlZS4uN2IyMzk0ZDg1NTU3NWNhZjhhMDg4MzNmNjBkMzg3
YWNkN2QwN2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6Lmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKQEAgLTIyMywxMSArMjI0LDYgQEAgc3RhdGljIENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVj
a0RhdGEqIHNldHVwQXJpdHlDaGVja0RhdGEoVk0mIHZtLCBpbnQgc2xvdHNUb0EKICAgICBCRUdJ
TigpOwogICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24qPihP
UCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkpOwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5t
ZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRh
KSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwotI2VuZGlmCi0KICAgICBhdXRvJiBjYWNoZVdyaXRlQmFy
cmllciA9IHBjWzRdLnUuanNDZWxsOwogICAgIGlmICghY2FjaGVXcml0ZUJhcnJpZXIpCiAgICAg
ICAgIGNhY2hlV3JpdGVCYXJyaWVyLnNldChleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2soKSwg
Y29uc3RydWN0b3IpOwpAQCAtNjQ0LDYgKzY0MCwzOCBAQCBzdGF0aWMgQ29tbW9uU2xvd1BhdGhz
OjpBcml0eUNoZWNrRGF0YSogc2V0dXBBcml0eUNoZWNrRGF0YShWTSYgdm0sIGludCBzbG90c1Rv
QQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKK3sKKyAg
ICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2Nv
cGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgorICAgIC8vIEJ1dCBwYXJhbWV0ZXJz
IGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiBy
ZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgp
IGNhbGwuCisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOworICAgIEpTVmFsdWUg
dmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKTsKKyAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJv
ZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBh
dm9pZCBhbGxvY2F0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Cisg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlT
bG90OjpQdXRCeUlkKTsKKyAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOworICAgIH0K
KyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOworICAgIEVORCgpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQoreworICAgIEJFR0lOKCk7CisgICAgSlNW
YWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBmcmFt
ZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmlu
ZGV4IDIyNjE4NWM0YzdlYTdjYzZmYzdmM2NjNGYxZjM3ZTYwZWI3MmYxN2EuLmYwMGQ4NzA1ZDRl
NjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTAsNiArMjkwLDggQEAgaW5saW5l
IHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2
b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5n
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xv
Zyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hf
d2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2Nv
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRl
eCBhNjMyYzQ4ZTAzMGI0MWIzM2IzM2RiYTE2YTMxY2Y2MTM1YjRmNTBmLi4wMmYzOTVjNDJiYzEy
ZWUwMjE4MzRhODJmODFmMGZjOTc5YmNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIGNoZWNrU3ludGF4
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9y
KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9k
dWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwg
c291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCi0g
ICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZXJyb3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAppbmRleCA4MzY1MjkyZDU3YmM5ZGVjMDNlNTY0MTdkN2E0MGQzMjBlYzdjYTYwLi40MjA2MDA2
NzIyOWFhNDBhYjQ3ZTliNDA1Mjk2MjFmZTgyZWRiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIENvZGVCbG9j
ayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4ZWN1dGFibGUtPm1f
dW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICAgICAgICAgICp2
bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvciwgCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSk7Cisg
ICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAg
ICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKICAg
ICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFi
bGVzKCksIGZpcnN0TGluZSgpLCAKQEAgLTU1Niw3ICs1NTYsNyBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJv
Z3JhbU5vZGU+KAogICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvcik7CisgICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggOWZjOWJlN2ExNGY2YzBm
ZWJjMjM5NzEyNmI2MGZkN2IwYzM0MGEwNC4uNzViMzA5MWNmODFjNzI5NmZlMmZhZmU5YTk2NzY1
MzYyOTk3ODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0KIAogICAg
IHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KTsgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSk7IH0K
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDIsNyAr
NTQyLDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCks
IHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpOyB9CiAgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCiAg
ICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBt
X21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KQEAgLTY1MCwxMiArNjUwLDEz
IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmlzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0
b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZl
cnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7
IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCk7IH0gLy8g
RXhjbHVkaW5nICd0aGlzJyEKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9CisgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJlNDJmYTVmZTI2MzA0ZTg2ZWUyMDEzYjEwMGNhYmIyMjFj
NDI5Yy4uNWQ3ZWYzNzY2YWMwZDY5YjM1NTQ2YWY3ZTc5MWNlOTQ5YmI0MmQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKQEAgLTc5LDI4ICs3OSwzMCBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4y
IFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlz
dCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgaWYg
KCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3Qt
PmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0
aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVu
Y3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBm
dW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGUpOwogfQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFi
bGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCAKICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCAKLSAgICBjb25zdCBUZXh0UG9zaXRpb24m
IHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyKQorICAgIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7CiAgICAgLy8gSG93IHdlIHN0cmluZ2lm
eSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHku
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1
MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAg
IHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25OYW1lLnN0cmluZygp
LCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9u
ICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19
Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1h
a2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVu
Y3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7Cisg
ICAgICAgIGlmIChmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWls
ZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3Ry
aW5nKGV4ZWMpLT52aWV3KGV4ZWMpKTsKQEAgLTEyNiw5ICsxMjgsOSBAQCBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiB9CiAKIC8vIEVDTUEgMTUu
My4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpCiB7Ci0gICAgcmV0
dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBv
c2l0aW9uKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGFyZ3MsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hbm9ueW1vdXMsIFN0cmluZygpLCBUZXh0
UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAyMmVjYjU3YjkzZjY5YmZjOWY4YjFi
MzA2ZmI0YzQyYTBhNjdkMmUzLi5kMTFmYjJhMzc0ZDYxOTE1MGM5ZDZjNDI2MjliYTkxY2MxMjA1
ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCkBAIC01NiwxMiArNTYsMTcgQEAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBX
VEY6OlRleHRQb3NpdGlvbiYpOwotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOworZW51bSBjbGFzcyBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGUgeworICAgIEZ1bmN0aW9uLAorICAgIEdlbmVyYXRvciwKK307CisK
K0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24pOworSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
QXJnTGlzdCYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb24pOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0
RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgaW50IG92ZXJyaWRlTGluZU51bWJl
ciA9IC0xKTsKKyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIGlu
dCBvdmVycmlkZUxpbmVOdW1iZXIgPSAtMSwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7
ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
R2VuZXJhdG9yRnJhbWUpIH07CisKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYg
dm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHZtLmdlbmVy
YXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyhu
dW1iZXJPZkNhbGxlZUxvY2FscykKK3sKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKKyAgICAg
ICAgbG9jYWxBdChpKS5jbGVhcigpOworfQorCitTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYg
dm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKK3sKKyAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0
ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxv
Y2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxz
KG51bWJlck9mTG9jYWxzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxv
Y2Fscyk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCit7CisgICAgLy8gT25seSBzYXZlIGNh
bGxlZSBsb2NhbHMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9y
IHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBBU1NFUlQobGl2
ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAg
ICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgIH0pOworfQor
Cit2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQoreworICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxl
ZSBsb2NhbHMuCisgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJl
c3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICBsaXZlQ2FsbGVlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICBleGVjLT51bmNo
ZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5n
ZXQoKTsKKyAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3Rv
cmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCisgICAgdmlzaXRvci5hcHBl
bmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNTQ1YjE0N2RkNGFi
ZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCisjZGVmaW5lIEdlbmVy
YXRvckZyYW1lX2gKKworI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1
YmxpYyBKU0NlbGwgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisjaWYgRU5BQkxFKERGR19KSVQp
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CisgICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1l
KiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworCisgICAgV3JpdGVC
YXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4o
dGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
bmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICByZXR1cm4gbG9jYWxzKClb
aW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CisgICAgfQorCisgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxv
Y2FscykKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZM
b2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKKyAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKKworcHJpdmF0ZToKKyAgICBH
ZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisKKyAgICBz
aXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3Byb3Rl
Y3RlZDoKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1l
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhmNTg5MzFmYzU1MjBh
NWMyMjAxNWUyNWY3MDJhN2Q2ZTA5NzllMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkZ1bmN0
aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJHZW5l
cmF0b3JGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1l
bnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxl
dGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpKTsK
K30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBh
cmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24o
ZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCks
IGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKSk7Cit9CisKK0NhbGxU
eXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0Owor
fQorCitDb25zdHJ1Y3RUeXBlIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODZjODdiYTEw
YjMyYjQ4YzNiOWE1NmM0ZDk3MjNlM2Y4MGFkNzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcl9o
CisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgVGV4dFBvc2l0aW9uOworfQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzNmZThmMmUzMWJkMzExYjkyZTQyNzQ3NGZhMzk4MThlZWY3OGRkNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworCitjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSkgfTsKKworR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU6OkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGEwMzQ5MjY5OWMzMTM1Nzc2ZTFmNzdkZDE3ZDhkYTE2ZDI1MjFiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaAorI2RlZmluZSBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0Njdi
M2JkYjdmYjM5NzE3NGNhZTZhZDQ2NjQ3YzZmY2ZkN2E1OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBl
LmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCisjaW5jbHVkZSAiR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEdlbmVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwgJkJhc2U6OnNfaW5m
bywgJmdlbmVyYXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRv
clByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgSlNCdWlsdGluICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmV0dXJuICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHRocm93ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQor
QGVuZAorKi8KKwordm9pZCBHZW5lcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiR2VuZXJhdG9yIiksIERv
bnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhp
cyk7Cit9CisKK2Jvb2wgR2VuZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xv
dDxCYXNlPihleGVjLCBnZW5lcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEdlbmVyYXRvclBy
b3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTBjNDRkZWQ4MGI0NzQzMjcwZThiNTkxZjhmY2ZjNzgx
Y2NhMDBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclByb3Rv
dHlwZV9oCisjZGVmaW5lIEdlbmVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAg
c3RhdGljIEdlbmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEdlbmVyYXRvclByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yUHJvdG90
eXBlPih2bS5oZWFwKSkgR2VuZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworCitwcml2YXRlOgorICAgIEdlbmVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZp
bmVkKEdlbmVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwM2U3YjAyMmYxYzY2OWQz
OTdhOWI3N2I1ZWYyNGU5NWY1MjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvclRoaXNNb2RlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyYXRvclRoaXNNb2RlX2gKKyNkZWZpbmUgR2Vu
ZXJhdG9yVGhpc01vZGVfaAorCituYW1lc3BhY2UgSlNDIHsKKworLy8gaHR0cDovL2VjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxvY2F0ZQorLy8gaHR0
cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZWNtYXNjcmlwdC1m
dW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3RhcmdldAorLy8gV2hl
biB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtbQ29uc3RydWN0b3JL
aW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KKy8vIFRoaXMgbWVhbnMgdGhhdCBPcmRpbmFyeUNh
bGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVkIGZvciBHZW5lcmF0
b3JGdW5jdGlvbi4KKy8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZywKKy8vCisv
LyAgICAgZnVuY3Rpb24gKmdlbigpCisvLyAgICAgeworLy8gICAgICAgIHlpZWxkIHRoaXMKKy8v
ICAgICB9CisvLworLy8gICAgIHsKKy8vICAgICAgICAgbGV0IGcgPSBnZW4oKTsKKy8vICAgICAg
ICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCisvLyAgICAgICAgIGcubmV4dCgpOworLy8g
ICAgIH0KKy8vCisvLyAgICAgeworLy8gICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKy8vICAg
ICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQgd29uJ3QgYmUgZmls
bGVkKS4KKy8vICAgICAgICAgZy5uZXh0KCk7CisvLyAgICAgfQorLy8KKy8vIFRoZSBmb2xsb3dp
bmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVuY3Rpb24gaXMgY2Fs
bGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybnMgYSBHZW5lcmF0b3IgdGhhdCBmdW5jdGlv
biBoYXMgR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5IGZsYWcuCisvLyBJbiB0aGlzIGNhc2UsIHdo
ZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9jY3Vycy4KK2VudW0g
Y2xhc3MgR2VuZXJhdG9yVGhpc01vZGUgOiB1bnNpZ25lZCB7CisgICAgRW1wdHksCisgICAgTm9u
RW1wdHkKK307CisKK30KKworI2VuZGlmIC8vIEdlbmVyYXRvclRoaXNNb2RlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNWIyZWRmYmQ2ZDUz
NzFiYjAxZTAyZGIwM2U2NGViNDY5MGZhZDEwYi4uYmFkZGJiY2E0YTgyODUyYTU2OTE1ZDA1ODJk
ZjdmZmRmOWZmZDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCkBA
IC0zNDgsNyArMzQ5LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmpl
Y3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpz
RXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclBy
b3RvdHlwZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwogICAgICAgICAgICAgcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVj
dCwgRG9udEVudW0pOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250
RW51bSk7CiAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQo
dm0sIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNGNiY2UwMmQ2NjI5MDVlMGVjYjc4YTc2ZmNjODVhMmUyZDE5ODhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3JGdW5jdGlv
bikgfTsKKworSlNHZW5lcmF0b3JGdW5jdGlvbjo6SlNHZW5lcmF0b3JGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBC
YXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpKQoreworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBKU0dl
bmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0dlbmVyYXRvckZ1bmN0aW9uKiBn
ZW5lcmF0b3JGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KHZtLmhlYXApKSBKU0dlbmVyYXRvckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSk7CisgICAgQVNTRVJUKGdlbmVyYXRvckZ1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGdlbmVyYXRvckZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvckZ1bmN0aW9uOworfQorCitKU0dlbmVyYXRvckZ1bmN0aW9uKiBK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTR2VuZXJhdG9yRnVuY3Rpb24qIGdl
bmVyYXRvckZ1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOworICAg
IGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBnZW5lcmF0
b3JGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yRnVuY3Rpb247Cit9CisKK0pTR2VuZXJhdG9yRnVuY3Rpb24qIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQor
eworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTA3MmE1MjE2NWRkMTdkZWUwOTY3
ZGVlN2I4YWU0ODkwZjJkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2VuZXJhdG9yRnVuY3Rpb25faAorI2RlZmluZSBKU0dl
bmVyYXRvckZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworY2xhc3MgTExJbnREZXNpcmVkT2Zmc2V0czsKKworY2xhc3MgSlNHZW5lcmF0b3JGdW5j
dGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworI2lmIEVO
QUJMRShERkdfSklUKQorICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNz
IFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgZW51bSBj
bGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUg
PSAwLAorICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAg
IH07CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMg
SlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworICAgIHN0YXRpYyBKU0dlbmVyYXRvckZ1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAh
aW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yRnVuY3Rp
b24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rp
b25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEpTR2VuZXJhdG9yRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7
CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3JGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTR2Vu
ZXJhdG9yRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGJjMDhmOTY5MmIwZWQzZmFiOWY5YmJlNzNmOGZjYzJjZmU3
ZDdhNjQuLjZkZGU2NjAyNzg0YmY4ZDE4M2Q3Yjk1NjhiZGZhODMzODQ5NmZlN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUw
LDYgKzUwLDkgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgpAQCAtNzIsNiArNzUs
NyBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0RvbGxhclZNUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIgpAQCAtMzg0
LDYgKzM4OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAg
IEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVf
Rk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0
b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9G
T1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKQEAgLTQyMCw2ICs0MjUsMTQgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsIEFTQ0lJTGl0
ZXJhbCgiU3ludGF4RXJyb3IiKSkpOwogICAgIG1fdHlwZUVycm9yQ29uc3RydWN0b3Iuc2V0KHZt
LCB0aGlzLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgQVNDSUlMaXRlcmFs
KCJUeXBlRXJyb3IiKSkpOwogICAgIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgbmF0aXZlRXJyb3JTdHJ1
Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCBBU0NJSUxpdGVyYWwoIlVSSUVy
cm9yIikpKTsKKworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlz
LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSkpOworICAgIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKworICAgIG1f
Z2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCksIERvbnRFbnVtKTsKKyAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dl
bmVyYXRvclByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0pOwogICAgIAogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC01NTMs
NiArNTY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNl
UmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0
cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlz
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKICAgICAKQEAgLTgyMCw2ICs4MzQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwpAQCAtODUyLDYgKzg2OCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGUxNjI5YzVi
YmVhNjc5NDk0ODNhZDNjYzc4MTg5M2I4NGQ4NTEwNC4uMDMyNTMyNDk4NWEwMzhlNjk3ODE0Yzk4
MDc5YmNkZDQzZWI3NjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC02Myw2ICs2Myw4IEBACiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9j
azsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwor
Y2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOworY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CiBjbGFzcyBJ
bnB1dEN1cnNvcjsKQEAgLTIyOSw2ICsyMzEsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQ
cm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3Rv
dHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90
eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKKyAgICBXcml0ZUJh
cnJpZXI8R2VuZXJhdG9yUHJvdG90eXBlPiBtX2dlbmVyYXRvclByb3RvdHlwZTsKIAogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTI2Miw2ICsyNjYs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jb25zb2xlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRl
cm5hbEZ1bmN0aW9uU3RydWN0dXJlOwpAQCAtNDUzLDYgKzQ1OCw4IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5
cGUuZ2V0KCk7IH0KICAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUq
IGl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQorICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCk7IH0KKyAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1
cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2Nv
cGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDYsNiAr
NTEzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBzeW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJv
bE9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggODAwYTc4NjllNTRiNzVkNWM4
ZDI4YTUwZDk3YTFlMGI3N2I1MDYzYS4uMzdiOGFmYzc3ZTJkMDllOTU1MTNiZWZiNThlZTdkZGZj
MDZjNTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dy
YW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAg
ICAgICAgJnZtLCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkg
ewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCA1MTM1ZjQwZDEwZDZmMDAyMjY0ZGI4NjJiYmNhOWRmNGZkZTk3OGY3
Li5lY2FiYWJjOWZmZjYwNGYzN2YxOTU3ZGJlZTI4ZWQ4NjRhNDM2MGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRlRMVGh1
bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRp
b25TY29wZS5oIgpAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxl
cihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVk
VHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25S
YXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGdlbmVy
YXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggY2VkMzE5NDA4OTAwNmJmM2UxNzgxOTNjYTYyOWU4ZTY4ZDJiODFlNi4u
NTU3N2E4OWE0OTBmZDBjMmY0M2I1MjdhMWJmYTc5ZjI5OGUwYjhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5
cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsK
KyAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
cHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFs
UHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CmluZGV4IGFmMzQxMzMyM2M1NjRjOTMzMDUxMTI2MDJlZTBkNDAzODA2ODlhYjkuLmM5NTJkMzI1
MzAxM2JjNDIyODAzNTRhNzQ5ZjBmNWQ3MWU3MTE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwKQEAgLTcyNyw3ICs3MjcsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfaXNfc3Vi
Y2xhc3NhYmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCiAgIGNtZDogcnVuRVM2IDpmYWls
CiAtIHBhdGg6IGVzNi9BcnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX2dlbmVyYXRvcl9p
bnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJvbV9nZW5lcmljX2l0ZXJh
Ymxlcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21l
dGhvZHNfQXJyYXkuZnJvbV9pbnN0YW5jZXNfb2ZfZ2VuZXJpY19pdGVyYWJsZXMuanMKQEAgLTcz
NSw3ICs3MzUsNyBAQAogLSBwYXRoOiBlczYvQXJyYXlfc3RhdGljX21ldGhvZHNfQXJyYXkuZnJv
bV9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9B
cnJheV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9nZW5lcmF0b3JfaW5z
dGFuY2VzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L0FycmF5X3N0YXRpY19tZXRob2RzX0FycmF5LmZyb21fbWFwX2Z1bmN0aW9uX2dl
bmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9BcnJh
eV9zdGF0aWNfbWV0aG9kc19BcnJheS5mcm9tX21hcF9mdW5jdGlvbl9pbnN0YW5jZXNfb2ZfaXRl
cmFibGVzLmpzCkBAIC03NjEsNyArNzYxLDcgQEAKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdf
bmVzdGVkX3Jlc3QuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1
Y3R1cmluZ193aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ193aXRoX2dl
bmVyaWNfaXRlcmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0
cnVjdHVyaW5nX3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC03NzEs
NyArNzcxLDcgQEAKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfaXRlcmF0b3JfY2xvc2luZ190
aHJvdy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193
aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2dlbmVyaWNfaXRl
cmFibGVzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3Bz
X3dpdGhfaW5zdGFuY2VzX29mX2dlbmVyaWNfaXRlcmFibGVzLmpzCkBAIC04MTEsNTUgKzgxMSw1
NSBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rp
b24uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfJUdlbmVy
YXRvclByb3RvdHlwZSUuY29uc3RydWN0b3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90
eXBlJS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnJldHVybi5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0
b3JzXyVHZW5lcmF0b3JQcm90b3R5cGUlLnRocm93LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfYmFzaWNfZnVuY3Rp
b25hbGl0eS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NhbnRfdXNlX3RoaXNfd2l0aF9uZXcuanMKLSAgY21kOiBy
dW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9y
c19jb21wdXRlZF9zaG9ydGhhbmRfZ2VuZXJhdG9ycy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX2NvbXB1dGVkX3No
b3J0aGFuZF9nZW5lcmF0b3JzX2NsYXNzZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19jb3JyZWN0X3RoaXNfYmlu
ZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9nZW5lcmF0b3JzX2dlbmVyYXRvcl9mdW5jdGlvbl9leHByZXNzaW9ucy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3NlbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc19zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHNfY2xhc3Nlcy5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5l
cmF0b3JzX3N0cmluZy1rZXllZF9zaG9ydGhhbmRfZ2VuZXJhdG9yX21ldGhvZHMuanMKLSAgY21k
OiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2FycmF5cy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfYXN0cmFsX3Bs
YW5lX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyYXRvcl9pbnN0YW5jZXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNf
eWllbGRfc3Rhcl9pbnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9z
aW5nX3ZpYV90aHJvdy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfb25fbm9uLWl0ZXJhYmxlc19p
c19hX3J1bnRpbWVfZXJyb3IuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYg
Om5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3NwYXJzZV9hcnJheXMu
anMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX3N0cmluZ3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc195aWVsZF9vcGVy
YXRvcl9wcmVjZWRlbmNlLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpu
b3JtYWwKIC0gcGF0aDogZXM2L01hcF9pdGVyYXRvcl9jbG9zaW5nLmpzCiAgIGNtZDogcnVuRVM2
IDpmYWlsCiAtIHBhdGg6IGVzNi9NYXBfTWFwW1N5bWJvbC5zcGVjaWVzXS5qcwpAQCAtMTExMyw3
ICsxMTEzLDcgQEAKIC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9hc3RyYWxf
cGxhbmVfc3RyaW5nc19pbl9mdW5jdGlvbl9jYWxscy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvc3ByZWFkXy4uLl9vcGVyYXRvcl93aXRoX2dlbmVyYXRvcl9pbnN0YW5jZXNf
aW5fYXJyYXlzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L3NwcmVhZF8uLi5fb3BlcmF0b3Jfd2l0aF9nZW5lcmF0b3JfaW5zdGFuY2Vz
X2luX2NhbGxzLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9zcHJlYWRfLi4u
X29wZXJhdG9yX3dpdGhfZ2VuZXJpY19pdGVyYWJsZXNfaW5fYXJyYXlzLmpzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9n
ZW5lcmljX2l0ZXJhYmxlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2Vu
ZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCmluZGV4IGE4YjliNTNjY2Nm
YWUxYTViNWE2NmMxM2JkMjNlOGNhZTUyN2FhYTQuLjlhODIxMzJhNjBmYzBlNzkxOTcyYzA0MzE4
ZDA3YjllMjYwMDRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNfaXRlcmFibGVzLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2dlbmVyaWNf
aXRlcmFibGVzLmpzCkBAIC0xLDMgKzEsMjQgQEAKK2lmICh0eXBlb2YgZ2xvYmFsID09PSAndW5k
ZWZpbmVkJykgewordmFyIGdsb2JhbCA9IHRoaXM7Cit9CitmdW5jdGlvbiBfX2NyZWF0ZUl0ZXJh
YmxlT2JqZWN0KGFyciwgbWV0aG9kcykgeworbWV0aG9kcyA9IG1ldGhvZHMgfHwge307CitpZiAo
dHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7CisgIHJl
dHVybiB7fTsKK30KK2Fyci5sZW5ndGgrKzsKK3ZhciBpdGVyYXRvciA9IHsKKyAgbmV4dDogZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHsgdmFsdWU6IGFyci5zaGlmdCgpLCBkb25lOiBhcnIubGVu
Z3RoIDw9IDAgfTsKKyAgfSwKKyAgJ3JldHVybic6IG1ldGhvZHNbJ3JldHVybiddLAorICAndGhy
b3cnOiBtZXRob2RzWyd0aHJvdyddCit9OwordmFyIGl0ZXJhYmxlID0ge307CitpdGVyYWJsZVtT
eW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXJhdG9yOyB9CityZXR1cm4g
aXRlcmFibGU7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKSB7CiAKIHZhciBpdGVyYXRvciA9IChmdW5j
dGlvbiAqIGdlbmVyYXRvcigpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZ2VuZXJhdG9yc195aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9p
bnN0YW5jZXNfb2ZfaXRlcmFibGVzLmpzCmluZGV4IGI0Yzc0NTM5MzI2Yzg5NzJiNzRhNzYxZmY0
ZDhmMjliMmE1YWU4MjkuLjgxNjdkYTUyZGY2ZmQxZWE4ZmMxNTQ0NGEzYjY0ZWI4NmU2M2M3OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJhdG9yc195
aWVsZF9zdGFyX2luc3RhbmNlc19vZl9pdGVyYWJsZXMuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaW5zdGFuY2VzX29mX2l0ZXJh
Ymxlcy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2JhbCA9PT0gJ3VuZGVmaW5l
ZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19jcmVhdGVJdGVyYWJsZU9i
amVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8IHt9OworaWYgKHR5cGVv
ZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRvcikgeworICByZXR1cm4g
e307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7CisgIG5leHQ6IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9uZTogYXJyLmxlbmd0aCA8
PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4nXSwKKyAgJ3Rocm93Jzog
bWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9OworaXRlcmFibGVbU3ltYm9s
Lml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsgfQorcmV0dXJuIGl0ZXJh
YmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgaXRlcmF0b3IgPSAoZnVuY3Rpb24g
KiBnZW5lcmF0b3IoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xv
c2luZy5qcwppbmRleCA2ZjY4MmY1YTE2Y2FiOWU4YjVkMjY5YWRlNDJlODNhZWI4YjAzZDRmLi4z
MmQzMTdjMGI4MGFkYjk1Mjk0MzQzZjlhYzg4ZmY4ZWE4NGRmYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZ2VuZXJh
dG9yc195aWVsZF9zdGFyX2l0ZXJhdG9yX2Nsb3NpbmcuanMKQEAgLTEsMyArMSwyNCBAQAoraWYg
KHR5cGVvZiBnbG9iYWwgPT09ICd1bmRlZmluZWQnKSB7Cit2YXIgZ2xvYmFsID0gdGhpczsKK30K
K2Z1bmN0aW9uIF9fY3JlYXRlSXRlcmFibGVPYmplY3QoYXJyLCBtZXRob2RzKSB7CittZXRob2Rz
ID0gbWV0aG9kcyB8fCB7fTsKK2lmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8ICFT
eW1ib2wuaXRlcmF0b3IpIHsKKyAgcmV0dXJuIHt9OworfQorYXJyLmxlbmd0aCsrOwordmFyIGl0
ZXJhdG9yID0geworICBuZXh0OiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4geyB2YWx1ZTogYXJy
LnNoaWZ0KCksIGRvbmU6IGFyci5sZW5ndGggPD0gMCB9OworICB9LAorICAncmV0dXJuJzogbWV0
aG9kc1sncmV0dXJuJ10sCisgICd0aHJvdyc6IG1ldGhvZHNbJ3Rocm93J10KK307Cit2YXIgaXRl
cmFibGUgPSB7fTsKK2l0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpeyByZXR1
cm4gaXRlcmF0b3I7IH0KK3JldHVybiBpdGVyYWJsZTsKK30KKwogZnVuY3Rpb24gdGVzdCgpIHsK
IAogdmFyIGNsb3NlZCA9ICcnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi9nZW5lcmF0b3JzX3lpZWxkX3N0YXJfaXRlcmF0b3JfY2xvc2luZ192aWFfdGhyb3cu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rh
cl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcwppbmRleCA0NGEwNjVhOTZhMWM5ZGU3ZTI2
YzM2MjA2YzFjYjM2NDcwNGEwNGQ0Li4xZjQ3ZDMyOGJiYzdmNWNkYTFmOTI0OGU5NTZhZmJhNTQy
OTM4MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVy
YXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRvcl9jbG9zaW5nX3ZpYV90aHJvdy5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2dlbmVyYXRvcnNfeWllbGRfc3Rhcl9pdGVyYXRv
cl9jbG9zaW5nX3ZpYV90aHJvdy5qcwpAQCAtMSwzICsxLDI0IEBACitpZiAodHlwZW9mIGdsb2Jh
bCA9PT0gJ3VuZGVmaW5lZCcpIHsKK3ZhciBnbG9iYWwgPSB0aGlzOworfQorZnVuY3Rpb24gX19j
cmVhdGVJdGVyYWJsZU9iamVjdChhcnIsIG1ldGhvZHMpIHsKK21ldGhvZHMgPSBtZXRob2RzIHx8
IHt9OworaWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgIVN5bWJvbC5pdGVyYXRv
cikgeworICByZXR1cm4ge307Cit9CithcnIubGVuZ3RoKys7Cit2YXIgaXRlcmF0b3IgPSB7Cisg
IG5leHQ6IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB7IHZhbHVlOiBhcnIuc2hpZnQoKSwgZG9u
ZTogYXJyLmxlbmd0aCA8PSAwIH07CisgIH0sCisgICdyZXR1cm4nOiBtZXRob2RzWydyZXR1cm4n
XSwKKyAgJ3Rocm93JzogbWV0aG9kc1sndGhyb3cnXQorfTsKK3ZhciBpdGVyYWJsZSA9IHt9Owor
aXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYXRvcjsg
fQorcmV0dXJuIGl0ZXJhYmxlOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogCiB2YXIgY2xvc2Vk
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy1mcm9tLWZ1bmN0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdjYTU4NzkwN2MzY2RiMTM2NTMwNWNiNzkxYmMyNGJkNzkyZTI2ODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1hcmd1bWVudHMtZnJvbS1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWAp
OworfQorCitmdW5jdGlvbiAqZ2VuKGEsIGIsIGMpCit7CisgICAgZnVuY3Rpb24gdGVzdCgpCisg
ICAgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiB0ZXN0
OworfQorCitsZXQgZyA9IGdlbigxLCAyLCAzKTsKK2xldCB7dmFsdWU6IGZ1bmN9ID0gZy5uZXh0
KCk7CitzaG91bGRCZShmdW5jKCkubGVuZ3RoLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFyZ3VtZW50cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjY0NzhmYTIzZTRiZTMzYWJhYWYxNDQ3MjkyYTQ1OWI3Yjg2ZDFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYXJn
dW1lbnRzLmpzCkBAIC0wLDAgKzEsMTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZzEoYSwgYiwgYykKKyAgICB7CisgICAgICAgIHlpZWxkIGFy
Z3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKworICAgIHZhciBnID0g
ZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUp
LCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcu
bmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAgIGZ1bmN0aW9uICpn
MihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICB5aWVs
ZCBhcmd1bWVudHM7CisgICAgICAgIGEgPSB5aWVsZCBhOworICAgICAgICB5aWVsZCBhcmd1bWVu
dHM7CisgICAgICAgIGIgPSB5aWVsZCBiOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAg
ICAgIGMgPSB5aWVsZCBjOworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgfQorICAgIHZh
ciBnID0gZzIoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCku
dmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0
KDQyKS52YWx1ZSksIGB7IjAiOjQyLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZh
bHVlKSwgYHsiMCI6NDIsIjEiOjQyLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCAyKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwg
YHsiMCI6NDIsIjEiOjQyLCIyIjo0Mn1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gKmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKwor
ICAgIHZhciBnID0gZzEoMCwgMSwgMik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5u
ZXh0KCkudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6Mn1gKTsKKworICAg
IGZ1bmN0aW9uICpnMihhLCBiLCBjKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJpY3QiOworICAg
ICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAg
YSA9IHlpZWxkIGE7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYiA9IHlpZWxk
IGI7CisgICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgYyA9IHlpZWxkIGM7CisgICAg
ICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICB9CisgICAgdmFyIGcgPSBnMigwLCAxLCAyKTsKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEs
IjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KCkudmFsdWUpLCBg
eyIwIjowLCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAwKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwi
MSI6MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMSk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIi
OjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDIpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjowLCIxIjoxLCIyIjoyfWApOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZnVuY3Rpb24g
KmcxKGEsIGIsIGMpCisgICAgeworICAgICAgICB5aWVsZCBhcmd1bWVudHM7CisgICAgICAgIHlp
ZWxkIGFyZ3VtZW50czsKKyAgICB9CisKKyAgICB2YXIgZyA9IGcxKDAsIDEsIDIpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwiMiI6
Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSksIGB7IjAi
OjAsIjEiOjEsIjIiOjJ9YCk7CisKKyAgICBmdW5jdGlvbiAqZzIoYSwgYiwgYykKKyAgICB7Cisg
ICAgICAgIHlpZWxkIGFyZ3VtZW50czsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAg
ICBhID0geWllbGQgYTsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBiID0geWll
bGQgYjsKKyAgICAgICAgeWllbGQgYXJndW1lbnRzOworICAgICAgICBjID0geWllbGQgYzsKKyAg
ICAgICAgeWllbGQgYXJndW1lbnRzOworICAgIH0KKyAgICB2YXIgZyA9IGcyKDAsIDEsIDIpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCgpLnZhbHVlKSwgYHsiMCI6MCwiMSI6
MSwiMiI6Mn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoKS52YWx1ZSks
IGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGcubmV4dCg0MikudmFsdWUpLCBgeyIwIjow
LCIxIjoxLCIyIjoyfWApOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAxKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShnLm5leHQoNDIpLnZhbHVlKSwgYHsiMCI6MCwiMSI6MSwi
MiI6Mn1gKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoZy5uZXh0KDQyKS52YWx1ZSksIGB7IjAiOjAsIjEiOjEsIjIiOjJ9YCk7
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItY2xhc3MtbWV0aG9kcy1zeW50YXguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLXN5bnRheC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDY1Y2ViMWY0MzZjMDJlMzZkOGIwYWM1YmE3ZGUzMjU1NTc3MDBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2xhc3Mt
bWV0aG9kcy1zeW50YXguanMKQEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChz
Y3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewor
ICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3Qg
dGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVz
dFN5bnRheEVycm9yKGAKK2NsYXNzIENvY29hIHsKKyAgICAqY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgZ2VuZXJhdG9yIG5h
bWVkICdjb25zdHJ1Y3RvcicuYCk7CisKK3Rlc3RTeW50YXgoYAorY2xhc3MgQ29jb2EgeworICAg
ICpvaygpCisgICAgeworICAgICAgICB5aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKKwordGVzdFN5
bnRheChgCitjbGFzcyBDb2NvYSB7CisgICAgc3RhdGljICpvaygpCisgICAgeworICAgICAgICB5
aWVsZCA0MjsKKyAgICB9Cit9CitgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNsYXNzLW1ldGhvZHMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFzcy1tZXRob2RzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIxZjVhNTRhMmRjNDEyNzA3OWMzMWNmZDMxZjliMzFjZjUwYWQ2ZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jbGFz
cy1tZXRob2RzLmpzCkBAIC0wLDAgKzEsNjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKK2NsYXNzIEEgeworICAgICpnZW4oKQorICAgIHsKKyAgICAgICAgeWll
bGQgdGhpczsKKyAgICAgICAgeWllbGQgdGhpczsKKyAgICAgICAgcmV0dXJuIDQyOworICAgIH0K
KworICAgIHN0YXRpYyAqc3RhdGljR2VuKCkKKyAgICB7CisgICAgICAgIHlpZWxkIHRoaXM7Cisg
ICAgICAgIHlpZWxkIHRoaXM7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9Cit7CisgICAg
bGV0IGEgPSBuZXcgQSgpOworICAgIGxldCBnID0gYS5nZW4oKTsKKyAgICBzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgYSk7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIGEpOworICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CisgICAgc2hvdWxkQmUoZy5uZXh0KCkuZG9uZSwg
dHJ1ZSk7Cit9Cit7CisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgbGV0IGcgPSBuZXcgYS5nZW4oKTsKKyAgICB9LCBgVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGEuZ2VuKCknKWApOwor
fQorCit7CisgICAgbGV0IGcgPSBBLnN0YXRpY0dlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCBBKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgQSk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS5kb25lLCB0cnVl
KTsKK30KK3sKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBnID0gbmV3IEEu
c3RhdGljR2VuKCk7CisgICAgfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBBLnN0YXRpY0dlbigpJylgKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhpcy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWV2YWwtdGhp
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOWJkNzhkZjc2YTBjYjc1OGI4MWVlYWIyYzI1NWI5ZGFkMWI0NDc1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZXZhbC10aGlzLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24g
PSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmco
ZXJyb3IpfWApOworfQorCitmdW5jdGlvbiAqZ2VuKCkgeworICAgIHlpZWxkIGV2YWwoInRoaXMi
KTsKK30KKwordmFyIGcgPSBuZXcgZ2VuKCk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5u
ZXh0KCkudmFsdWU7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFs
aXplZCB2YXJpYWJsZS5gKTsKKworY2xhc3MgQiB7IH0KKworKGZ1bmN0aW9uKCkgeworICAgIGV2
YWwoJ3RoaXMnKTsKKyAgICBldmFsKCd0aGlzJyk7Cit9KCkpOworCitjbGFzcyBBIGV4dGVuZHMg
QiB7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoJ3RoaXMn
KTsKKyAgICB9Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgQSgpOworfSwgYFJl
ZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisK
K2NsYXNzIEMgeworICAgICpnZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgeWllbGQgZXZhbCgn
dGhpcycpOworICAgIH0KK30KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBsZXQgZyA9IG5ldyBjLmdlbmVyYXRvcigpOworICAgIGcubmV4dCgpOworfSwg
YFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25l
dyBjLmdlbmVyYXRvcigpJylgKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgbGV0IGcgPSBjLmdlbmVyYXRvcigpOworICAgIHNob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCBjKTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZ1bmN0aW9uLWNvbnN0cnVjdG9yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2OTZhZTVmZDE5ZjlkOGM4YjA4ZGU2YjBlZDZhNWJhZTc1YWZkZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mdW5jdGlvbi1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQordmFyIGds
b2JhbCA9IChuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitzaG91bGRCZSh0eXBlb2Yg
Z2xvYmFsLkdlbmVyYXRvckZ1bmN0aW9uLCAndW5kZWZpbmVkJyk7Cit2YXIgZ2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3RvciA9IChmdW5jdGlvbiAqKCkgeyB9KS5jb25zdHJ1Y3RvcjsKK3Nob3Vs
ZEJlKGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuX19wcm90b19fLCBGdW5jdGlvbik7Citz
aG91bGRCZShnZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mdW5jdGlvbi1uYW1lLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnVuY3Rpb24tbmFtZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42Zjc3MzZjNDIzNGUxODc5MTBiOGNhNjM1M2NiZjQ1YjBkNjAwNmI4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnVuY3Rpb24tbmFtZS5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9r
ID0gZnVuY3Rpb24gKmdlbmVyYXRvcigpCit7CisgICAgeWllbGQgZ2VuZXJhdG9yOworfTsKKwor
dmFyIGcgPSBvaygpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIG9rKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0
aC1ub24tZ2VuZXJhdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItbWV0aG9kcy13aXRoLW5vbi1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2MWQ5
MzA3NjBkMjBlZTZlZjRjZTU3MDNlZjczYjlmZjlhZTU2YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLW1ldGhvZHMtd2l0aC1u
b24tZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2Z1bmN0aW9uICpnZW4oKSB7Cit9Cit2YXIgZyA9IGdlbigpOworCitzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgZy5uZXh0LmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBi
ZSBhIGdlbmVyYXRvcmApOworCisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBnLnRocm93LmNh
bGwoe30pOworfSwgYFR5cGVFcnJvcjogfHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvcmApOwor
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZy5yZXR1cm4uY2FsbCh7fSk7Cit9LCBgVHlwZUVy
cm9yOiB8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWxhdGlvbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWZhNGRjOGNlMDc2YzczMWM0MjRhODg1ZmIzOGUzNTdlNDkzZmZmNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXJlbGF0aW9ucy5qcwpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gKmdlbmVy
YXRvckZ1bmN0aW9uKCkgeworfQorbGV0IGdlbmVyYXRvciA9IGdlbmVyYXRvckZ1bmN0aW9uKCk7
CisKK3Nob3VsZEJlKGdlbmVyYXRvciBpbnN0YW5jZW9mIGdlbmVyYXRvckZ1bmN0aW9uLCB0cnVl
KTsKK3Nob3VsZEJlKHR5cGVvZiBnZW5lcmF0b3IuX19wcm90b19fLCAnb2JqZWN0Jyk7CitzaG91
bGRCZShnZW5lcmF0b3IuX19wcm90b19fLCBnZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUpOwor
CitsZXQgR2VuZXJhdG9yUHJvdG90eXBlID0gZ2VuZXJhdG9yLl9fcHJvdG9fXy5fX3Byb3RvX187
CisKK2xldCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSA9IGdlbmVyYXRvckZ1bmN0aW9uLl9f
cHJvdG9fXzsKK2xldCBHZW5lcmF0b3JGdW5jdGlvbiA9IGdlbmVyYXRvckZ1bmN0aW9uLl9fcHJv
dG9fXy5jb25zdHJ1Y3RvcjsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSwg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxkQmUoZ2VuZXJhdG9yRnVuY3Rpb24g
aW5zdGFuY2VvZiBHZW5lcmF0b3JGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShHZW5lcmF0b3JG
dW5jdGlvbi5fX3Byb3RvX18sIEZ1bmN0aW9uKTsKK3Nob3VsZEJlKEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLl9fcHJvdG9fXywgRnVuY3Rpb24ucHJvdG90eXBlKTsKKworc2hvdWxkQmUoR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlLCBHZW5lcmF0b3JQcm90b3R5cGUpOwor
c2hvdWxkQmUoR2VuZXJhdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yLCBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CisKK2xldCBhcnJheUl0ZXJhdG9yID0gW11bU3ltYm9sLml0ZXJhdG9yXSgp
OworbGV0IEFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBhcnJheUl0ZXJhdG9yLl9fcHJvdG9fXzsK
K2xldCBJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuX19wcm90b19f
OworCitzaG91bGRCZShJdGVyYXRvclByb3RvdHlwZSwgR2VuZXJhdG9yUHJvdG90eXBlLl9fcHJv
dG9fXyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZXR1cm4tYmVmb3JlLWZpcnN0LWNhbGwuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2U2ZGViY2IxZmU4NTdiNTBmM2QyNzlmMWQ1NzRmZTg2OWRjMmQ4NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXJldHVybi1iZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVJdGVyYXRvclJlc3VsdChhY3R1YWwsIHsgdmFsdWUsIGRvbmUgfSkK
K3sKKyAgICBzaG91bGRCZShhY3R1YWwudmFsdWUsIHZhbHVlKTsKKyAgICBzaG91bGRCZShhY3R1
YWwuZG9uZSwgZG9uZSk7Cit9CisKK2Z1bmN0aW9uIHVucmVhY2hhYmxlKCkKK3sKKyAgICB0aHJv
dyBuZXcgRXJyb3IoIk5HIik7Cit9CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHVucmVhY2hh
YmxlKCk7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0
dXJuKCJIZWxsbyIpLCB7IHZhbHVlOiAiSGVsbG8iLCBkb25lOiB0cnVlIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmV0dXJuLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmNTY5YTBmNzBlNWU0YjFmZGEyNzYyZGI3NDQ4ZDllNWE5MTUxMzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1yZXR1cm4uanMKQEAgLTAsMCArMSwxMzMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoYWN0dWFsLCB7IHZhbHVlLCBkb25lIH0pCit7Cisg
ICAgc2hvdWxkQmUoYWN0dWFsLnZhbHVlLCB2YWx1ZSk7CisgICAgc2hvdWxkQmUoYWN0dWFsLmRv
bmUsIGRvbmUpOworfQorCitmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCit7CisgICAgdGhyb3cgbmV3
IEVycm9yKCd1bnJlYWNoYWJsZScpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHlpZWxkIDIw
OworICAgICAgICB5aWVsZCA0MjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2Vu
KCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDApLCB7IHZhbHVlOiAy
MCwgZG9uZTogZmFsc2UgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1
cm4oMjApLCB7IHZhbHVlOiAyMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVy
YXRvclJlc3VsdChnLnJldHVybigyMCksIHsgdmFsdWU6IDIwLCBkb25lOiB0cnVlIH0pOworICAg
ICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCg0MiksIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOwor
ICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIs
IGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDQy
KSwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0
ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7Cisg
ICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAg
ICAgICByZXR1cm4gNDI7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOwor
ICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiA0MiwgZG9u
ZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwg
eyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9
IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZh
bHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
bmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3Vs
ZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9
KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7
CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRC
ZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6
IDAsIGRvbmU6IHRydWUgfSk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGcgPSBnZW4oKTsK
KyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwg
ZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJh
dG9yUmVzdWx0KGcucmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAg
fQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgeWllbGQgNDI7CisgICAgICAgIH0gZmluYWxseSB7CisgICAg
ICAgICAgICByZXR1cm4gNDAwOworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBs
ZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7
IHZhbHVlOiA0MiwgZG9uZTogZmFsc2UgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1
bHQoZy5yZXR1cm4oMCksIHsgdmFsdWU6IDQwMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hv
dWxkQmVJdGVyYXRvclJlc3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9
KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRC
ZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0pOwor
ICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1
cm4oNDIpLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOworCisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHlpZWxkIDQyOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJ0aHJvd24iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAg
bGV0IGcgPSBnZW4oKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoKSwg
eyB2YWx1ZTogNDIsIGRvbmU6IGZhbHNlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBn
LnJldHVybigwKSwgYEVycm9yOiB0aHJvd25gKTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJl
c3VsdChnLnJldHVybigwKSwgeyB2YWx1ZTogMCwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAg
eworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0
KGcucmV0dXJuKDApLCB7IHZhbHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRC
ZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIpLCB7IHZhbHVl
OiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgw
YWY2ZTA3ODlkYzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKQEAg
LTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKwordmFyIGds
b2JhbCA9IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHlpZWxkIHRoaXM7CisgICAgfQorCisgICAg
eworICAgICAgICBsZXQgZyA9IGdlbigpOworICAgICAgICBzaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgZ2xvYmFsKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9IG5ldyBnZW4oKTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgZy5uZXh0KCk7CisgICAgICAg
IH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxl
LmApOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCB0aGlzT2JqZWN0ID0ge307CisgICAgICAg
IGxldCBnID0gZ2VuLmNhbGwodGhpc09iamVjdCk7CisgICAgICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCB0aGlzT2JqZWN0KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAgICAgeWllbGQg
dGhpczsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNo
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1bmRlZmluZWQpOworICAgIH0KKyAgICB7CisgICAgICAg
IGxldCBnID0gbmV3IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
ICAgICBnLm5leHQoKTsKKyAgICAgICAgfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IHRo
aXNPYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IGcgPSBnZW4uY2FsbCh0aGlzT2JqZWN0KTsKKyAg
ICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHRoaXNPYmplY3QpOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10aHJvdy1iZWZvcmUtZmlyc3QtY2FsbC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXRocm93LWJlZm9yZS1maXJzdC1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0NmNiNGY5N2VlMTBjMzg1MDZlMThlYWMwZDlhM2U0MTg3OWVkZGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy1i
ZWZvcmUtZmlyc3QtY2FsbC5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiB1bnJlYWNoYWJs
ZSgpCit7CisgICAgdGhyb3cgbmV3IEVycm9yKCJORyIpOworfQorCitmdW5jdGlvbiAqZ2VuKCkK
K3sKKyAgICB1bnJlYWNoYWJsZSgpOworfQorCit2YXIgZyA9IGdlbigpOwordmFyIGVycm9yID0g
bmV3IEVycm9yKCJPSyIpOwordmFyIHRocm93biA9IG51bGw7Cit0cnkgeworICAgIGcudGhyb3co
ZXJyb3IpOworfSBjYXRjaCAoZSkgeworICAgIHRocm93biA9IGU7Cit9CitpZiAodGhyb3duICE9
PSBlcnJvcikKKyAgICB1bnJlYWNoYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTIyNjlm
NTNjOTU0ZWE4MjhjYzAxNDEwNDdiNTNmYzFhMTJhMDQxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhyb3cuanMKQEAgLTAs
MCArMSwxMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlSXRlcmF0b3JS
ZXN1bHQoYWN0dWFsLCB7IHZhbHVlLCBkb25lIH0pCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLnZh
bHVlLCB2YWx1ZSk7CisgICAgc2hvdWxkQmUoYWN0dWFsLmRvbmUsIGRvbmUpOworfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitjbGFzcyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICAgICAgdGhpcy5jb3VudCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5jb3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB5aWVsZCB5aWVsZCAyMDsKKyAgICAg
ICAgeWllbGQgNDI7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgZyA9IGdlbigpOworICAg
ICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcubmV4dCgwKSwgeyB2YWx1ZTogMjAsIGRvbmU6
IGZhbHNlIH0pOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDIwKSwgYDIwYCk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGcudGhyb3coMjApLCBgMjBgKTsKKyAgICAgICAg
c2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLm5leHQoNDIpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oNDIp
LCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQg
ZyA9IGdlbigpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBnLnRocm93KDQyKSwgYDQyYCk7
CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KDQyKSwgeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
cmV0dXJuKDQyKSwgeyB2YWx1ZTogNDIsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IGcudGhyb3coNDIpLCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uICpnZW4oKSB7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JS
ZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiBnLnRocm93KDApLCBgMGApOworICAgIH0KKyAgICB7CisgICAgICAgIGxl
dCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5yZXR1cm4oMCks
IHsgdmFsdWU6IDAsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1
bHQoZy5uZXh0KCksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdyg0MiksIGA0MmApOworICAgIH0KK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmdlbigpIHsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0
KCksIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4gZy50aHJvdygwKSwgYDBgKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgZyA9
IGdlbigpOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcucmV0dXJuKDApLCB7IHZh
bHVlOiAwLCBkb25lOiB0cnVlIH0pOworICAgICAgICBzaG91bGRCZUl0ZXJhdG9yUmVzdWx0KGcu
bmV4dCgpLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IGcudGhyb3coNDIpLCBgNDJgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBzaXRlID0gbmV3IENhbGxTaXRlKCk7CisgICAgZnVuY3Rpb24gKmdl
bigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHlpZWxkIDQyOworICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBzaG91bGRCZShlLCAwKTsKKyAgICAgICAgICAgIHNpdGUu
Y2FsbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNob3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5u
ZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiBmYWxzZSB9KTsKKyAgICAgICAgc2hvdWxkQmVJdGVy
YXRvclJlc3VsdChnLnRocm93KDApLCB7IHZhbHVlOiA0MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAg
ICAgc2hvdWxkQmUoc2l0ZS5jb3VudCwgMSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgeWll
bGQgNDI7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBnID0gZ2VuKCk7CisgICAgICAgIHNo
b3VsZEJlSXRlcmF0b3JSZXN1bHQoZy5uZXh0KCksIHsgdmFsdWU6IDQyLCBkb25lOiBmYWxzZSB9
KTsKKyAgICAgICAgc2hvdWxkQmVJdGVyYXRvclJlc3VsdChnLnRocm93KDApLCB7IHZhbHVlOiA0
MiwgZG9uZTogdHJ1ZSB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZy50aHJvdygwKSwg
YDBgKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRo
LW5ldy10YXJnZXQuanMKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uICpnZW4o
KQoreworICAgIHlpZWxkIG5ldy50YXJnZXQ7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKKwordmFyIGcyID0gbmV3IGdlbigpOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZTUzYzc5MTczOGVjZjhiOWQzNDk4MzVlYTgzYmY4ZDZjODk3N2JiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
d2l0aC1zdXBlci5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBy
ZXR1cm4gZXZhbCgnc3VwZXInKTsKKyAgICB9CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0
KCksIGBTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLmAp
OworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBCIHsKKyAgICAgICAgZ2VuKCkg
eworICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3Mg
QSBleHRlbmRzIEIgeworICAgICAgICAqZ2VuKCkgeworICAgICAgICAgICAgcmV0dXJuIGV2YWwo
J3N1cGVyLmdlbigpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYSA9IG5ldyBBKCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhLmdlbigpLm5leHQoKTsKKyAgICB9
LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy5gKTsK
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQiB7CisgICAgICAgIGdlbigpIHsK
KyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEEg
ZXh0ZW5kcyBCIHsKKyAgICAgICAgKmdlbigpIHsKKyAgICAgICAgICAgIHlpZWxkIHN1cGVyLmdl
bigpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGEgPSBuZXcgQSgpOworICAgIHNob3Vs
ZEJlKGEuZ2VuKCkubmV4dCgpLnZhbHVlLCA0Mik7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEIgeworICAgICAgICBnZW4oKSB7CisgICAgICAgICAgICByZXR1cm4gNDI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgICpnZW4o
KSB7CisgICAgICAgICAgICB5aWVsZCBzdXBlci5nZW4oKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBhID0gbmV3IEEoKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIG5l
dyBhLmdlbigpOworICAgIH0sIGBUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgYS5nZW4oKScpYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3IteWllbGQtc3Rhci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXlpZWxkLXN0YXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDVhYmVmYTA5YzI5MWUzYzc5NjJiM2IzNzNjNTA4ODYyZDY5OGI1Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXlpZWxkLXN0YXIuanMKQEAgLTAsMCArMSwzMjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24g
PSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmco
ZXJyb3IpfWApOworfQorCitjbGFzcyBDYWxsU2l0ZSB7CisgICAgY29uc3RydWN0b3IoKQorICAg
IHsKKyAgICAgICAgdGhpcy5jb3VudCA9IDA7CisgICAgfQorCisgICAgY2FsbCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5jb3VudCsrOworICAgIH0KK30KKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBBcnJheXMgeworICAgICAgICBjb25zdHJ1Y3RvcigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRoaXMuZmlyc3QgPSBbIDAsIDEsIDIsIDMgXTsKKyAgICAgICAgICAgIHRoaXMu
c2Vjb25kID0gWyA0LCA1LCA2LCA3IF07CisgICAgICAgIH0KKworICAgICAgICAqW1N5bWJvbC5p
dGVyYXRvcl0oKQorICAgICAgICB7CisgICAgICAgICAgICB5aWVsZCAqIHRoaXMuZmlyc3Q7Cisg
ICAgICAgICAgICB5aWVsZCAqIHRoaXMuc2Vjb25kOworICAgICAgICB9CisgICAgfQorCisgICAg
dmFyIGFycmF5cyA9IG5ldyBBcnJheXM7CisgICAgbGV0IGkgPSAwOworICAgIGZvciAobGV0IHZh
bHVlIG9mIGFycmF5cykKKyAgICAgICAgc2hvdWxkQmUoaSsrLCB2YWx1ZSk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIC8vIHRocm93IHNob3VsZCBiZSBwcm9wYWdhdGVkLgorICAgIGxl
dCBjMSA9IG5ldyBDYWxsU2l0ZTsKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQo
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxz
ZSB9OworICAgICAgICB9CisKKyAgICAgICAgJ3Rocm93Jyh2YWx1ZSkgeworICAgICAgICAgICAg
c2hvdWxkQmUodmFsdWUsIDQyKTsKKyAgICAgICAgICAgIGMxLmNhbGwoKTsKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiT0siKTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRl
cmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0g
bmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQg
ZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52
YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsK
KyAgICB9LCBgRXJyb3I6IE9LYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBn
LnRocm93KDQ0KTsKKyAgICB9LCBgNDRgKTsKKyAgICBzaG91bGRCZShjMS5jb3VudCwgMSk7Cit9
KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIE5vIGB0aHJvd2AgbWV0aG9kLgorICAgIGxl
dCBjMSA9IG5ldyBDYWxsU2l0ZTsKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5leHQo
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBmYWxz
ZSB9OworICAgICAgICB9CisKKyAgICAgICAgJ3JldHVybicodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKHZhbHVlLCB1bmRlZmluZWQpOworICAgICAgICAgICAgYzEuY2Fs
bCgpOworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAg
fQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAg
ICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICog
aXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgw
KS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOwor
ICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9yOiBEZWxlZ2F0ZWQgZ2Vu
ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAndGhyb3cnIG1ldGhvZC5gKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOworICAgIH0sIGA0NGApOworICAgIHNob3Vs
ZEJlKGMxLmNvdW50LCAxKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgLy8gTm8gYHRo
cm93YCBtZXRob2QsIGByZXR1cm5gIHJldHVybnMgYW4gaW5jb3JyZWN0IHJlc3VsdC4KKyAgICBs
ZXQgYzEgPSBuZXcgQ2FsbFNpdGU7CisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgICAgICBuZXh0
KHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogZmFs
c2UgfTsKKyAgICAgICAgfQorCisgICAgICAgICdyZXR1cm4nKHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzaG91bGRCZSh2YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIGMxLmNh
bGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j
dGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7Cisg
ICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNo
b3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQo
MSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsKKyAgICB9LCBgVHlwZUVycm9y
OiBJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuYCk7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQ0KTsKKyAgICB9LCBgNDRgKTsKKyAg
ICBzaG91bGRCZShjMS5jb3VudCwgMSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8v
IE5vIGB0aHJvd2AgbWV0aG9kLCBObyBgcmV0dXJuYCBtZXRob2QuCisgICAgY2xhc3MgSXRlcmF0
b3IgeworICAgICAgICBuZXh0KHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
eyB2YWx1ZSwgZG9uZTogZmFsc2UgfTsKKyAgICAgICAgfQorCisgICAgICAgIFtTeW1ib2wuaXRl
cmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBpdGVyID0g
bmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsKKyAgICB9CisKKyAgICBsZXQg
ZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1ZSwgdW5kZWZpbmVkKTsKKyAg
ICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgyKS52
YWx1ZSwgMik7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBnLnRocm93KDQyKTsK
KyAgICB9LCBgVHlwZUVycm9yOiBEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhhdmUgYSAn
dGhyb3cnIG1ldGhvZC5gKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhy
b3coNDQpOworICAgIH0sIGA0NGApOworfSgpKTsKKworCisoZnVuY3Rpb24gKCkgeworICAgIC8v
IGB0aHJvd2AgZG9lcyBub3QgdGhyb3cuIE5vdCByZXR1cm5zIGEgb2JqZWN0LgorICAgIGNsYXNz
IEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAgICAgICAndGhy
b3cnKHZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBbU3ltYm9sLml0ZXJh
dG9yXSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gKmdlbigpCisgICAgeworICAgICAgICBsZXQgaXRlciA9IG5l
dyBJdGVyYXRvcigpOworICAgICAgICB5aWVsZCAqIGl0ZXI7CisgICAgfQorCisgICAgbGV0IGcg
PSBnZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoMCkudmFsdWUsIHVuZGVmaW5lZCk7CisgICAg
c2hvdWxkQmUoZy5uZXh0KDEpLnZhbHVlLCAxKTsKKyAgICBzaG91bGRCZShnLm5leHQoMikudmFs
dWUsIDIpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0Mik7Cisg
ICAgfSwgYFR5cGVFcnJvcjogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LmApOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgZy50aHJvdyg0NCk7Cisg
ICAgfSwgYDQ0YCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIC8vIGB0aHJvd2AgZG9l
cyBub3QgdGhyb3cuIElmIHJldHVybmVkIGl0ZXJhdG9yIHJlc3VsdCBpcyBtYXJrZWQgYXMgZG9u
ZSwgaXQgYmVjb21lcyBgcmV0dXJuYC4KKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgICAgIG5l
eHQodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBkb25lOiBm
YWxzZSB9OworICAgICAgICB9CisKKyAgICAgICAgJ3Rocm93Jyh2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IHRydWUgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7Cisg
ICAgICAgIGxldCBpdGVyID0gbmV3IEl0ZXJhdG9yKCk7CisgICAgICAgIHlpZWxkICogaXRlcjsK
KyAgICB9CisKKyAgICBsZXQgZyA9IGdlbigpOworICAgIHNob3VsZEJlKGcubmV4dCgwKS52YWx1
ZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShnLm5leHQoMSkudmFsdWUsIDEpOworICAgIHNo
b3VsZEJlKGcubmV4dCgyKS52YWx1ZSwgMik7CisgICAgc2hvdWxkQmUoZy50aHJvdyg0MikudmFs
dWUsIDQyKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGcudGhyb3coNDQpOwor
ICAgIH0sIGA0NGApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICAvLyBgcmV0dXJuYCBy
ZXR1cm5zIGRvbmU6IGZhbHNlLgorICAgIGNsYXNzIEl0ZXJhdG9yIHsKKyAgICAgICAgbmV4dCh2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNl
IH07CisgICAgICAgIH0KKworICAgICAgICAncmV0dXJuJyh2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmU6IGZhbHNlIH07CisgICAgICAgIH0KKworICAg
ICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gKmdlbigpCisgICAgeworICAg
ICAgICBsZXQgaXRlciA9IG5ldyBJdGVyYXRvcigpOworICAgICAgICBsZXQgcmVzdWx0ID0geWll
bGQgKiBpdGVyOworICAgICAgICB5aWVsZCByZXN1bHQ7CisgICAgICAgIHlpZWxkIDQyOworICAg
IH0KKworICAgIGxldCBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5uZXh0KDApLnZhbHVlLCB1
bmRlZmluZWQpOworICAgIHNob3VsZEJlKGcubmV4dCgxKS52YWx1ZSwgMSk7CisgICAgc2hvdWxk
QmUoZy5uZXh0KDIpLnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShnLnJldHVybig0MikudmFsdWUs
IDQyKTsKKyAgICBzaG91bGRCZShnLnJldHVybig0MikuZG9uZSwgZmFsc2UpOworfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZ2VuKCkKKyAgICB7CisgICAgICAgIGxldCBy
ZXN1bHQgPSB5aWVsZCAqIFsgMCwgMSwgMiBdOworICAgICAgICB5aWVsZCByZXN1bHQ7CisgICAg
fQorCisgICAgbGV0IGcgPSBnZW4oKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMCk7
CisgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDEpOworICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCAyKTsKKyAgICBzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgdW5kZWZpbmVkKTsKK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOWYxODhiY2MyZjViNWVjYzM1MzA1MTRjMjBl
ZDU2Njg4YTZhMjk4Yy4uOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIEZhc3RCaXRW
ZWN0b3IgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9y
RWFjaFNldEJpdChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIHsKICAgICAgICAg
dW5zaWduZWQgbiA9IGFycmF5TGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyArK2kpIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCA0MjE5NDFmM2E0NGFjNmRjNWQ5YjY3ZmQyY2RkODZm
MTIwMTNjNjQ4Li5mNDZlMTE5NzNlNTI0Y2E0Mjg1NmIwZDc2ODM3OWUxYTlmNDU5MzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogI2VuZGlmCiAKICNpZiAh
ZGVmaW5lZChFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkKLSNkZWZpbmUgRU5BQkxFX0VTNl9HRU5F
UkFUT1JTIDAKKyNkZWZpbmUgRU5BQkxFX0VTNl9HRU5FUkFUT1JTIDEKICNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0VTNl9NT0RVTEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTc3YWZjYjU1NDU0
MjU0MjMwYzU3MTI5ZWVkNzU2OGQ1N2Y0MTFkLi4xOGQ2NGQwMzUyYTRkYTY0M2NhYjcxYjc3YTVk
MTliNjZlZjQ5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBFTkFCTEVfQ0FOVkFT
X1BST1hZID0gOwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HOwogRU5BQkxFX0VTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCA9IEVOQUJMRV9FUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVg7CiBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCA9IEVOQUJMRV9FUzZf
Q0xBU1NfU1lOVEFYOwotRU5BQkxFX0VTNl9HRU5FUkFUT1JTID0gOworRU5BQkxFX0VTNl9HRU5F
UkFUT1JTID0gRU5BQkxFX0VTNl9HRU5FUkFUT1JTOwogRU5BQkxFX0VTNl9NT0RVTEVTID0gOwog
RU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWCA9IEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVg7CiBFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcgPSBFTkFCTEVfQ09OVEVO
VF9GSUxURVJJTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNzdhZmNiNTU0NTQyNTQyMzBjNTcx
MjllZWQ3NTY4ZDU3ZjQxMWQuLjE4ZDY0ZDAzNTJhNGRhNjQzY2FiNzFiNzdhNWQxOWI2NmVmNDlj
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEVOQUJMRV9DQU5WQVNfUFJP
WFkgPSA7CiBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
Tkc7CiBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYID0gRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWDsKIEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFT
U19TWU5UQVg7Ci1FTkFCTEVfRVM2X0dFTkVSQVRPUlMgPSA7CitFTkFCTEVfRVM2X0dFTkVSQVRP
UlMgPSBFTkFCTEVfRVM2X0dFTkVSQVRPUlM7CiBFTkFCTEVfRVM2X01PRFVMRVMgPSA7CiBFTkFC
TEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWDsKIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJ
TFRFUklORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggZTE3N2FmY2I1NTQ1NDI1NDIzMGM1NzEyOWVlZDc1Njhk
NTdmNDExZC4uMThkNjRkMDM1MmE0ZGE2NDNjYWI3MWI3N2E1ZDE5YjY2ZWY0OWM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKIEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9FUzZf
QVJST1dGVU5DVElPTl9TWU5UQVggPSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYOwog
RU5BQkxFX0VTNl9DTEFTU19TWU5UQVggPSBFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWDsKLUVOQUJM
RV9FUzZfR0VORVJBVE9SUyA9IDsKK0VOQUJMRV9FUzZfR0VORVJBVE9SUyA9IEVOQUJMRV9FUzZf
R0VORVJBVE9SUzsKIEVOQUJMRV9FUzZfTU9EVUxFUyA9IDsKIEVOQUJMRV9FUzZfVEVNUExBVEVf
TElURVJBTF9TWU5UQVggPSBFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYOwogRU5B
QkxFX0NPTlRFTlRfRklMVEVSSU5HID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbi5jbWFrZQppbmRleCA5Y2Q4NDY1YzA5YzlmMTc4NjA0YzlhYjI5MjVhNzBhYjQ3YzYzZTNj
Li4wMmNjNzk4YjIwYmQ2ZTQ2MjYzYmUzOWQ5MDFhOGZlOTRjYjllZDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQpAQCAtMzQsNyArMzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIFBVQkxJQyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCBQVUJMSUMgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVD
VE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9E
UkFHX1NVUFBPUlQgUFVCTElDIE9OKQotV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0VTNl9HRU5FUkFUT1JTIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VTNl9NT0RVTEVTIFBVQkxJQyBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9GSUxFX1NZU1RFTSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4
IGQ5NjIyNGQ0MTcxYmRiYTcxNzBjNDVkM2RkNzIxNzU0NzcxMmY1MGQuLjAwZWRiYzAxM2JmZjY2
ZjdhMDNmZGQyOWI2MzFmNDYyNTBiZTI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UK
QEAgLTc3LDcgKzc3LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyICJTdXBwb3J0IEVNRSB2MiIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWCAiVG9nZ2xlIEVTNiBhcnJvdyBmdW5jdGlvbiBzeW50YXggc3VwcG9ydCIg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCAiVG9nZ2xlIEVTNiBjbGFzcyBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKLSAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2Vu
ZXJhdG9ycyBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfRVM2X0dFTkVSQVRPUlMgIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiBQUklW
QVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FUzZfTU9EVUxFUyAiVG9n
Z2xlIEVTNiBtb2R1bGVzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVggIlRvZ2dsZSBFUzYgdGVt
cGxhdGUgbGl0ZXJhbCBzeW50YXggc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dnbGUgRmlsdGVycyBNb2R1bGUg
TGV2ZWwgMiIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYmRmMTZmMmQ4OGFmNjZhYWM1NTQwNDQ2Nzk0MTRjYTE5OTE3MDAw
ZC4uZjVkODIyNGZkNTBmNzg3OWY2YzExMjFhYzI4ZGRlZWRhMzIwMzYyZiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE1LTEyLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJh
dG9ycyBhbmQgZW5hYmxlIHRoaXMgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTUtMTItMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTI5MTQuCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2RlYjUyNWNmOTRiNWE4ZTEyMWJhMjRlMzc5
ZDIzM2Q2OTFjNmI4OS4uNDYyMTg4MTViMTUzYzUzMjk5YmMyNzFkOWI3N2Y3NDhhZDMwNzA1ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMTg1LDcgKzE4NSw3
IEBAIEJFR0lOCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYIiwgZGVm
YXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGNsYXNzU3ludGF4IH0sCiAKICAgICB7IG9wdGlvbiA9PiAi
Z2VuZXJhdG9ycyIsIGRlc2MgPT4gIlRvZ2dsZSBFUzYgZ2VuZXJhdG9ycyBzdXBwb3J0IiwKLSAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTNl9HRU5FUkFUT1JTIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJGdlbmVyYXRvcnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZf
R0VORVJBVE9SUyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRnZW5lcmF0b3JzU3VwcG9ydCB9
LAogCiAgICAgeyBvcHRpb24gPT4gIm1vZHVsZXMiLCBkZXNjID0+ICJUb2dnbGUgRVM2IG1vZHVs
ZXMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FUzZfTU9EVUxFUyIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCRtb2R1bGVzU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNmMzY0Yjg0OGNmMDFhYzI4YTcwYTQxNTE5MjcyZjNkYWI0
MzcwZDkuLjUxZGFmODg2NmY3ODhhYTkwNTY0NGNmYzE0OTE1MjA1YzQzNjMzNTAgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMi0w
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2
XSBJbXBsZW1lbnQgTExJbnQvQmFzZWxpbmUgU3VwcG9ydCBmb3IgRVM2IEdlbmVyYXRvcnMgYW5k
IGVuYWJsZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICog
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOgorCiAyMDE1LTEyLTAxICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTkyOTE0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggY2Y0ZTZmOGRlNDUzNGFiMDQzNTcw
NjJlZjNhMDljN2E5N2ViNGM1Ni4uYThkYzc2MTRlMWZkMThjOGQ2ZGM2NzdjYjY1ZTg4NzllNmM4
MDZkMCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRM
aWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTItMDEgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50
IExMSW50L0Jhc2VsaW5lIFN1cHBvcnQgZm9yIEVTNiBHZW5lcmF0b3JzIGFuZCBlbmFibGUgdGhp
cyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdpbi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzOgorICAgICAgICAqIHdp
bi90b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzQ2Fpcm8ucHJvcHM6CisKIDIwMTUtMTItMDEg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTI5MTQuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKaW5kZXggMGQ3NGE4ZjdlZTUy
MWUwNGY5ZmViZTRkZmE3OTI5ZDdlMzNjY2RjZi4uYjA3ZGM1MGFiZTI1ZTBiNzBmY2E1YzMwNWQx
NjZiZjVlNzBhODhlZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3By
b3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCisrKyBiL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMv
dnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwpAQCAtMzIsNyArMzIsNyBAQAogICAgIDxFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCAvPgogICAgIDxFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1I+RU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPC9FTkFCTEVfRE9NNF9FVkVOVFNfQ09O
U1RSVUNUT1I+CiAgICAgPEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI+RU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMjwvRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj4KLSAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTIC8+CisgICAgPEVOQUJMRV9FUzZfR0VORVJBVE9SUz5FTkFCTEVfRVM2X0dFTkVS
QVRPUlM8L0VOQUJMRV9FUzZfR0VORVJBVE9SUz4KICAgICA8RU5BQkxFX0VTNl9NT0RVTEVTIC8+
CiAgICAgPEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVg+RU5BQkxFX0VTNl9URU1Q
TEFURV9MSVRFUkFMX1NZTlRBWDwvRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRBWD4K
ICAgICA8RU5BQkxFX0ZJTEVfU1lTVEVNIC8+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMv
d2luL3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXNDYWlyby5wcm9wcyBiL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCmluZGV4IDkx
ZWU4MGZkZjRhZjE1OGVjNWVlNDgzZDA2OTZjNzFjZTQ4NjQxMmQuLmY1YjA4ZmY4MTBmN2U2MWI3
Y2VjNmFjNWVhNjlhMWE5ODM1MzgwYTggMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCisrKyBiL1dlYktpdExpYnJh
cmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lc0NhaXJvLnByb3BzCkBAIC0zMiw3
ICszMiw3IEBACiAgICAgPEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIC8+CiAgICAgPEVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUj5FTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I8L0VO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUj4KICAgICA8RU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMiAvPgotICAgIDxFTkFCTEVfRVM2X0dFTkVSQVRPUlMgLz4KKyAgICA8RU5BQkxFX0VTNl9H
RU5FUkFUT1JTPkVOQUJMRV9FUzZfR0VORVJBVE9SUzwvRU5BQkxFX0VTNl9HRU5FUkFUT1JTPgog
ICAgIDxFTkFCTEVfRVM2X01PRFVMRVMgLz4KICAgICA8RU5BQkxFX0VTNl9URU1QTEFURV9MSVRF
UkFMX1NZTlRBWD5FTkFCTEVfRVM2X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPC9FTkFCTEVfRVM2
X1RFTVBMQVRFX0xJVEVSQUxfU1lOVEFYPgogICAgIDxFTkFCTEVfRklMRV9TWVNURU0gLz4K
</data>
<flag name="review"
          id="291441"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>